protonブログ

日々の記録やデバッグメモ

ThinkPadT480s(MX150)にCUDA10.0とTensorFlow-gpu1.13.1を入れた話

初めに

f:id:proton_1602:20190507194546j:plain
MX150
なんとなく手元でCUDAの実行確認とか簡単なものができたらいいなとか、適当なことを考えてCUDAが利用できるらしいGPU(MX150)が乗っているノートパソコン(ThinkPad T480s)を去年の夏頃に買ったのですが、CUDA周りは非常に面倒で失敗するとUbuntuが使い物にならなかったりするので怖くてしばらく放置してました。
しかし、cudaやcupyが手元で動かしたくなったのでCUDA等の環境構築をせざるを得なくなったので、その時のやり方等を残しておきます。
CUDA入れたのはこれで3回目ぐらいになるので、ある程度調べながらやったのですがそれでも失敗しました。初めに(恐らく)最適なやり方を書いて、その後に実際の経緯とか遭遇した問題書きます。

環境 & 入れたもの

  • ThinkPad T480s
  • Ubuntu 18.04 LTS
  • MX150
  • python 3.6.7
  • Nvidiaドライバ 418.56
  • CUDA 10.0
  • cuDNN 7.5.1
  • tensorflow-gpu 1.13.1

    やり方

    ubuntupythonの入れ方は省略します、調べればいっぱい出てくると思うので(忘れた)

    Update&Upgrade

    いつもの。とりあえずやっとく

$ sudo apt update
$ sudo apt upgrade

nouveau停止

cudaを使うためには、NVIDIAのドライバが必要ですが、デフォルトではnouveauとかいうドライバが入っているので止める必要がある。これをやらないと、ドライバインストールするときになんかnouveau止めろみたいなエラーでて止まる。

lsmod | grep -i

でnouveauがあったら、

blacklist nouveau
options nouveau modeset=0

を/etc/modprobe.d/blacklist-nouveau.confとして新規作製して、

$ sudo update-initramfs -u
$ reboot
$ lsmod | grep -i nouveau

でnouveauがでなくなることを確認する。

必要なものを入れておく

何に必要なのか忘れたけど、多分nvidiaドライバ

$ sudo apt install build-essential
$ sudo apt install dkms

CUDAインストール

NVIDIAドライバの前にCUDAを入れます。
https://www.tensorflow.org/install/source#common_installation_problems の下の方を見ると、今の最新のtensorflow-gpu-1.13.1にはCUDA10.0, cuDNN7.4が要求されるらしいので、 https://developer.nvidia.com/cuda-toolkit-archive からCUDA10.0を選択して、runファイルをダウンロードします。

$ chmod +x cuda_10.0.130_410.48_linux.run 
$ sudo ./cuda_10.0.130_410.48_linux.run --silent --toolkit --no-opengl-libs

--noのオプションがないと、ログインループになるらしい。
何か出てきたかメモしてないので覚えてないが、--silentを付けていれば何もなかったはず。(10.0ではそもそも付けないとエラーがでた。10.1では出ないで色々選択できたのでDriverのチェックを外せた。)
必要なのはCUDA Toolkit 10.0のみ、Samples, Demo Suite, Documentationは必要があれば入れる、Driverは入れないほうがいいはず。

export CUDA_HOME="/usr/local/cuda-10.0"
export PATH="$CUDA_HOME/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/lib:$CUDA_HOME/lib64:$LD_LIBRARY_PATH"
export CPATH="/usr/local/include:$CUDA_HOME/include:$CPATH"
export INCLUDE_PATH="$CUDA_HOME/include"

~/.bashrcの一番下の方に書き加えておく。いつものPATH通し

Nvidiaドライバインストール

https://www.nvidia.co.jp/Download/index.aspx?lang=jp から適したやつを入れる、2019/04/26時点では418.56でした。

$ sudo ./NVIDIA-Linux-x86_64-418.56.run --no-opengl-files --no-libglx-indirect --dkms

--noとかのオプションを忘れないように。忘れるとログインループ等の地獄を見ます。

cuDNNインストール

https://developer.nvidia.com/cudnn からLogin/JoinしてcuDNN7.4以上をダウンロードする。今回は最新の7.5.1にしました。(cuDNNで正しくバージョンを合わせなくて問題が起こったことはないが、CUDAと違ってこれのバージョンはそこまで気にする必要がない...?

$ tar xvzf cudnn-10.0-linux-x64-v7.5.1.10.tgz
$ sudo mv cuda/include/cudnn.h /usr/local/cuda-10.0/include/
$ sudo mv cuda/lib64/* /usr/local/cuda-10.0/lib64/

コピーするだけ。

確認

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
$ nvidia-smi
Fri Apr 26 17:31:32 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.56       Driver Version: 418.56       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce MX150       Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   54C    P0    N/A /  N/A |    353MiB /  2002MiB |      3%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1290      G   /usr/lib/xorg/Xorg                           352MiB |
+-----------------------------------------------------------------------------+
$ cat /usr/local/cuda-10.0/include/cudnn.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 5
#define CUDNN_PATCHLEVEL 1
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

みたいなのが出るはず、出なかったら色々やり直そう。CUDA Versionが10.1になってるのは後述。

うまく行かなかった時の消し方

CUDA

$ cd /usr/local/cuda-10.0/bin/
$ sudo ./cuda-uninstaller 

で消えた。こっちのほうがいいはず。

$ sudo apt purge cuda*
$ sudo apt purge nvidia-cuda-*
$ sudo apt purge libcuda*
$ sudo apt autoremove

でもいけるらしいがやったことはない。

Nvidiaドライバー

$ sudo /usr/bin/nvidia-uninstall

で消えた、過去にnvidiaドライバーをaptとかで入れようとしたとかだと

$ sudo apt-get --purge remove nvidia-*

じゃないとうまく消えないかもしれない。

cuDNN

消したことないけど、コピーしたファイルを消すだけでしょう。

$ sudo rm /usr/local/cuda-10.0/include/cudnn.h
$ sudo rm /usr/local/cuda-10.0/lib64/libcudnn.so
$ sudo rm /usr/local/cuda-10.0/lib64/llibcudnn.so.7
$ sudo rm /usr/local/cuda-10.0/lib64/llibcudnn.so.7.5.1
$ sudo rm /usr/local/cuda-10.0/lib64/llibcudnn_static.a

TensorFlowインストール

$ sudo pip3 install tensorflow-gpu==1.13.1

bazelで色々しなきゃいけないのかと思ったけど、これでいいっぽい。pythonの環境構築がちゃんとされてないとsixとかのエラーでそうだけど、遭遇しなかったのでわからない。

TensorFlow確認

$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from tensorflow.python.client import device_lib
>>> device_lib.list_local_devices()
2019-04-26 20:33:31.015963: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2019-04-26 20:33:31.222253: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:998] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2019-04-26 20:33:31.224028: I tensorflow/compiler/xla/service/service.cc:150] XLA service 0x20d4060 executing computations on platform CUDA. Devices:
2019-04-26 20:33:31.224068: I tensorflow/compiler/xla/service/service.cc:158]   StreamExecutor device (0): GeForce MX150, Compute Capability 6.1
2019-04-26 20:33:31.257072: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 1800000000 Hz
2019-04-26 20:33:31.258561: I tensorflow/compiler/xla/service/service.cc:150] XLA service 0x2797f00 executing computations on platform Host. Devices:
2019-04-26 20:33:31.258655: I tensorflow/compiler/xla/service/service.cc:158]   StreamExecutor device (0): <undefined>, <undefined>
2019-04-26 20:33:31.259375: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1433] Found device 0 with properties: 
name: GeForce MX150 major: 6 minor: 1 memoryClockRate(GHz): 1.0375
pciBusID: 0000:01:00.0
totalMemory: 1.96GiB freeMemory: 1.85GiB
2019-04-26 20:33:31.259447: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1512] Adding visible gpu devices: 0
2019-04-26 20:33:31.262125: I tensorflow/core/common_runtime/gpu/gpu_device.cc:984] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-04-26 20:33:31.262185: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990]      0 
2019-04-26 20:33:31.262225: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1003] 0:   N 
2019-04-26 20:33:31.262727: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/device:GPU:0 with 1668 MB memory) -> physical GPU (device: 0, name: GeForce MX150, pci bus id: 0000:01:00.0, compute capability: 6.1)
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 17999465041711514578
, name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality {
}
incarnation: 10262319221813161070
physical_device_desc: "device: XLA_GPU device"
, name: "/device:XLA_CPU:0"
device_type: "XLA_CPU"
memory_limit: 17179869184
locality {
}
incarnation: 3591895757546612715
physical_device_desc: "device: XLA_CPU device"
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 1749942272
locality {
  bus_id: 1
  links {
  }
}
incarnation: 16699012107528253306
physical_device_desc: "device: 0, name: GeForce MX150, pci bus id: 0000:01:00.0, compute capability: 6.1"
]

みたいな感じで出れば、cuda, tensorflow-gpuともに動いてるはず。

CuPy

おまけ、入れたかったので入れた。CUDAとversionを合わせないといけないらしいが、今回はCUDA10.0なので

$ sudo pip3 install cupy-cuda100

で終わり。

遭遇した問題

CUDA10.1を入れてしまった

初め最新版ということでCUDA10.1を入れてしまったが、CUDA10.1でTensorFlowを動かすのはファイル名のバージョン番号をいちいち合わせてあげる必要があって非常にめんどくさいので、CUDA10.0を入れ直すことになった。
やはり入れる前にversion指定でちゃんと調べないといけない。

nvidia-smiのCUDAversionがおかしい

CUDA10.1を間違えて入れてしまった後、削除してもnvidia-smiのCUDAversionが10.1のままで、nvidiaドライバーを入れ直しても10.1のまま、CUDA10.0を入れても10.1のままだった。
https://stackoverflow.com/questions/53422407/different-cuda-versions-shown-by-nvcc-and-nvidia-smi によると、CUDAにはruntime APIとdriver APIがあって、前者はcuda toolkitインストーラ等によってインストールされ、後者はGPUドライバインストーラによってインストールされるもので、'nvcc -V'と'nvidia-smi'のCUDAversionはそれぞれ別のものを指しているらしい。
NVIDAdriver418.56を入れるとnvidia-smiの結果は、CUDAversionによらずCUDA10.1になるということ?よくわからないが、実害はなさそうなので放置した。

cuDNNを入れてないことによるエラー

CUDAやNVIDIAドライバーを入れ直したときに、cuDNNを入れ忘れていて

$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
python3: Relink `/lib/x86_64-linux-gnu/libudev.so.1' with `/lib/x86_64-linux-gnu/librt.so.1' for IFUNC symbol `clock_gettime'
Segmentation fault

なるエラーが出たが、cuDNNを入れ忘れていたせいだった。
http://blog.michinari-nukazawa.com/2018/05/blog-post.html エラー文を検索すると、このブログがヒットするが非常にありがたかった。エラー文は極力上げるようにしたい...(が、面倒で忘れたりする。

感想

やはりCUDA周りは非常にめんどくさい、調べても自分と同じ状況の人が出てくることは稀で似たような環境の記録を見て一つ一つ調べていくしかない。この記事が誰かの役に立てば幸いです。

M570の修理をしてみた

初めに

みんなはどのようなマウスを使っているだろうか、優先, ワイヤレス, ゲーム用に様々なキー設定ができるマウス, もはや絶滅したであろうボール式マウス等様々なものがあるだろう。デスクトップPCを持っておらず、そもそも使ったことがないという人ももしかしたらいるのかもしれない。

(SM-)M570

f:id:proton_1602:20190426010721j:plain
SW-M570
私はトラックボールマウスのM570を愛用していて、すでに3年以上使っている。トラックボールマウスを使ったことがないという人は、ぜひ使ってみて欲しい。普通のマウスと違ってマウス本体を動かす必要がないので、机に物が多かったり何か当たると困るものがあっても問題なく、指のわずかな動きだけで操作ができるので非常に疲れにくい素晴らしいマウスである。 www.amazon.co.jp

見た目が全く一緒の機種があり非常に紛らわしいが、2010年発売のM570, 2013年発売のM570t, 2018年発売のSW-M570があるらしい。
どれも価格は以前は3~4kほどで買えたはずなのだが、価格.comで確認すると2019年1月になぜか突如2000円も跳ね上がり5~6kになってしまっていた...

動機

素晴らしいマウスであることには変わりがないのだが、2年以上使っているとさすがにガタが来るようで、チャタリング等が発生したため値上がりする前に二台目を買い、昔のはいつか直そうと思って放置していた。

そして、4月に新しく研究室に配属され、研究室でもあの素晴らしいトラックボールマウスの使い心地を忘れられず、研究室の居心地をよくするためにも使いたくなってしまった。しかし、価格は謎の値上がりをしたままなのでさすがに新しく買うのもためらわれる、そういうわけで修理することになった。

問題1

少し調べればわかるのだが、ロジクールのM570はチャタリングしやすいマウスらしく大量の対処ブログが散見される。(今回の記事を書こうと思った理由は、チャタリングではなく、問題2の右スクロールが入力される状態になったためであるが、一応チャタリングの時の対処も書くことにする。)
自分のマウスも、例にもれず左クリックが時々ダブルクリックになる、左をずっと押しているのにもかかわらず途中で途切れるといった症状が出た。

対処1

分解方法は以下のブログが詳しい。 pasokatu.com

このブログでも紹介されているように、分解しほこりなどを取り除きスイッチを無水エタノールで洗浄を行ってみた。
が、数日もしないうちにチャタリングは再発してしまった。

対処2

しょうがないのでボタンの付け替えを行おうとして、Amazonから同型のボタンを購入した。
Amazon CAPTCHA
https://www.amazon.co.jp/gp/product/B00H5K6TTY/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1
ボタンが届き、いざ付け替えをしようとしたところ、なぜかチャタリングが再現できなくなってしまったため、ボタンが無駄になってしまった。(今後使うことになるでしょう...)
何もしてないのに壊れたならぬ、何もしてないのに治ったということで1週間ほど使えていた。

問題2

そのまま使えていればよかったのだが、マウスを使っていたところ不思議な挙動が見られた。調べてみると、どうやら右スクロール?がずっと出力されているらしい。M570の標準的な出力は、右左クリック, ホイール(上下スクロール), ホイールクリック, 進む, 戻るなはずなのだが、謎の右スクロールが出力されてしまっていた。
標準である機能ではないため、センサやボタンの類の故障ではなく明らかにPCに送るために所定の信号にしているマイコン回りの問題であると考えられた。

対処

分解して基盤を見てみると、どうやら処理しているのはAtmel社のATmega 168PA 32pinのようだった。(画像の真ん中の小さい黒い四角のやつ、赤いスイッチと丸い電解コンデンサの間)

f:id:proton_1602:20190426010616j:plain
M570基板

これはマイコンといって、書き込まれたプログラムによって基本的な部分以外ピンの機能が変わるため、専用のicと違って故障原因を推測しにくいものであった。(最も専用icだったら、それはそれでその会社しか使っていない等で調べてもどこのピンがどういう機能か等調べても出てこないことはあるが。)
そこで、どこかショートしていたり逆にクラック等でつながっていないところがないかよく見てみたところ、31,32ピン(上側の一番左と一つ隣)の間にほこりがたまっておりショートしてそうな感じがあった。

f:id:proton_1602:20190426011149p:plain
ATmega168paピン機能

プラスチックの針で擦ってみたり、はんだごてで再びはんだを溶かすなどごちゃごちゃやってみたところ、なんと右スクロールの症状がでなくなりました。よかったよかった。
(はんだで溶かすときに、30,29,1ピンなども溶かし直していたためもしかしたらそっちがクラックしていた説もある。)

追記(2019/4/29)

あまりにも雑な対処だったためすぐに、右スクロールが再発しました()
なのでもう少し真面目に、フラックスである程度ゴミを除去して、32ピンに少しだけハンダを盛ってから、フラックスクリーナーできちんとフラックスを除去してみました。
(フラックスクリーナー初めて使ったんですけど、すごい綺麗になりますね。)

f:id:proton_1602:20190429191531j:plain

M570基板2
ショートが原因ならばこれでしばらくは持つでしょう...

感想

個人的にAteml社のマイコンにはお世話になっていたので、こんなマウスにも使われていて結構驚いた。しかし、専用icではないため配線を見て書き込んでいるプログラムを推測しでもしない限り、このic回りを壊すとまず修理はできないだろう。そんな状態になったらさすがに潔く買い替えた方が労力的に安い。(チップ自体はかなり流通してるものだが...)

途中でも書いたが、今回この記事を書いたのは有名なチャタリング以外の故障が発生してしまい、かなり簡単に解決してしまったので解決記事ということで書いてみた。
以前のviveのブログもある程度キーワードを絞れば出てくるようになったが、果たしてM570ユーザーで右スクロール等のic回りのショートが問題でここに到達する人はいるのだろうか...
凄い一時しのぎの修理感あるので、どうせまた壊れるでしょう...
壊れて修理したら記事編集するか、新しく記事書くと思います。
→ 壊れたので追記しました。(2019/04/29)

Vive Proでフロントカメラを使おうとして苦労した話

問題

HTC Vive Proを買ってGoogle Earth VR等いろいろ楽しんだ後、デュアルカメラを使って設定した境界付近に来たら現実の映像を映したりARとかができるらしいので、カメラを使おうとしたら
×カメラ利用できません
Viveが接続されているUSBポートではカメラが認識されません。
別のUSBポートに接続し直して、SteamVRを再起動してください。

f:id:proton_1602:20190125202738p:plain:w500
Steam VR 設定 カメラ利用できません
というエラーが表示されていて一切使えなかった。Viveの設定自体は箱の中の紙に書いてあった通りすらすら進んだので特に問題なかった気がするのだがカメラは使わなかったので気づかなかったが、そういえば初めからこんなエラーが出ていたような気がしなくもない...

対処

省電力設定の無効

とりあえず調べてみたら、公式にヘッドセットのデュアルカメラがオンにならない場合はどうすればよいですか?

Windows® 10 を使用している場合は、省電力設定を無効にしてください。
1. コンピュータ上で、デバイスマネージャを開きます。
2. ユニバーサル シリアル バス コントローラーにある 汎用 SuperSpeed USB ハブ RI を見つけて右クリックし、プロパティを選択します。
3. これが VIVE Pro デバイスであることを確認するには、詳細タブをクリックして、VID/PID の値に 0BB4/030E の文字列があることを確認します。
4. 電源の管理タブをクリックして、電力の節約のために、コンピュータでこのデバイスの電源をオフにできるようにするのオプションの選択を外します。

とあったのでやってみたが特に改善しない。

USB2.0接続

HTC Viveが認識しなくなった際の対応方法(2016/5/26)とかに、Viveが不明なデバイスと認識される場合USB3.0USB3.1では互換性の問題があったりしてUSB2.0に接続すると良いみたいなことを書いてあったが、特に改善はしなかった。

USBドライバの再インストール

HTC Viveが認識しなくなった際の対応方法(2016/5/26)にもあるように、
SteamVR > 設定 > 開発者 >リセット > SteamVRの全USBデバイスを削除
というボタンがあるので実行して(リングボックスのUSBを外さないと実行が進まない、外すとすぐ終わる)再びUSBを刺してドライバを再インストールする。しかし、改善はしなかった。

USBカード

公式のヘッドセットは、USB ポートの問題のために検出できません。どうすればいいですか?に、

USB ドライバを更新してもエラーが解決しない場合は、別のPCI-Express のUSB カード(Intel チップセット搭載)を購入し使用してください。当社のテスト結果では、このUSBカードは、次の VIVE Pro に互換性がありました:

Inateck® 2 ポート USB3.0 PCI-Express カード(シリアル:KTU3FR-2O2I)

とあるが、この商品は調べてもまともに買える場所が見つからず、viveでUSBカードを導入して解決したというブログとかも見つからなかったので買ってない。

カメラレートを弄る

HTC Viveが認識しなくなった際の対応方法(2016/5/26)には

カメラレートを30Hzに下げる
SteamVR>設定>カメラ>カメラレートの値を60Hzから30Hzに変更すると解決すると設定に記載されている。現時点で高いカメラレートは必要としないので、問題が発生している場合は下げて置いた方が良いだろう。

とあったり、【HMD】SteamVR総合 Part14【HTCvive/OSVR/FOVE [無断転載禁止]©2ch.net には

623 :名無しさん┃】【┃Dolby (ワッチョイ be8b-4fuR):2016/06/18(土) 00:59:42.61 id:EBmycVWE0
初めて繋いだ直後はカメラが使えてたんだけど、いつの間にかカメラ利用できませんってなって
それっきり使えないな
USBポートも替えたりしたけど変わらない
USBデバイスの削除もしてみたけどダメだ
何がきっかけなんだろうか
624 :名無しさん┃】【┃Dolby (ワッチョイW f977-iOFr):2016/06/18(土) 01:00:49.13 id:X2z6g3/s0
>>623
俺はfps30に下げたら何故か使えなくなった
60に戻したら使えるようになった

とあるが、そもそもカメラを利用できないのでカメラレートを変える設定など存在せずこの方法は試せなかった。

PCスペック

i7-8700K/GTX1080Ti/32GBで足りないはずがない、上のエラーの画像でもわかるように処理は基本的に約8ms以下で終わっていてPCスペックの問題ではないはず。

解決

いろいろ調べてだめで心が折れかけて公式サポートに連絡するしかないかと考え始めたころ、ふとtwitterで検索してみたところSteamVRクライアントのバージョン1.2.7の問題であるらしく、SteamVR Beta1.2.8にすると解決するらしいことが分かった...
確かに、SteamVR公式を見てみると

SteamVR Beta Updated - 1.2.8
1月19日 10時39分 - NATB
The SteamVR Beta has been updated with the following changes.

General
Fix for GetSkeletalTrackingLevel returning IPCError
Fix to allow Vive and Vive Pro cameras to be enabled / disabled

とある、はぁ...
早速SteamVRをBeta版にした、やり方は
Steam > ライブラリからツール一覧のSteamVRのプロパティ(SteamVRがないなら検索してプレイとかするとツール一覧に出るようになる) > ベータ > 参加希望のベータを選択してください > beta-SteamVR Beta Update
としてSteamVRを閉じてしばらくすると、ツール一覧のSteamVRがSteamVR[beta]になり起動後もちゃんとSteamVR beta 1.2.9とでてくる。 やっとカメラを有効にできるようになった。

f:id:proton_1602:20190125221804p:plain:w500
SteamVR beta 1.2.9 設定 カメラ
とりあえずカメラを有効にしてみるとこんな感じ
f:id:proton_1602:20190125222516p:plain:w500
Steam VR Beta 1.2.9 カメラテスト
f:id:proton_1602:20190125222719p:plain:w500
Steam VR Beta 1.2.9 カメラ映像を重ねたディスプレイミラー
これでカメラが使えるようになったよ、やったね。まあVGA画質だし思ったよりキレイじゃなかったんだけど、なんか現実の境界が出てる画像...良くない?カッコイイ...

新たな問題

カメラレートが40Hzから動かそうとしても、再起動後40Hzになっていて動かせない。また、カメラテストでカメラを有効にする以外のチェックボックスを入れるとテスト映像が点滅する。(これはHMDから見る限りそんなことはないので特に影響ない?)
USB3.1 Gen1に接続したりしてみたが特に変わらない、これもまたSteamVRの問題なんだろうか。何か解決したり変化が見られたら追記か新しい記事書くかもしれない。

感想

TwitterSteamVRのスレッド等英語でも頑張って読んで探すべきですね...
こういう最新バージョンのエラーとかはブログとかに上がってくるのが遅く、いくら検索しても全然上位にはそんな記事は出てこなくて辛かったです。(なのでこの記事書いてみたりしたのですが)

Vive Pro買いました

前からVRとかARとか興味あったけど、HMD一つも持ってなかったのでVive Pro買いました。

Vive Proについて

こんなの

f:id:proton_1602:20190125200623p:plain:w200
HTC Vive Pro
HTC Vive Proバーチャルリアリティ向けヘッドマウントディスプレイ(VRHMD)の一つで、他には同じくPC用VRHMDだとOculus Riftとかがある、スマホを使うVRHMDとかいろいろあるらしいけどあまりよく知らない。詳細な性能比較とかは調べれば無限に出てくるのでそちらをどうぞ。

価格と保証

現在(2019.01.26)それぞれの価格は、(oculus riftは性能比較段階で外してたので調べてない)

みたいな感じ
HTC VIveは2016年4月5日発売、Proは2018年4月23日発売で、保証期間は保証ポリシーよりVive Proフルセット以外は購入日から1年、Vive Proフルセットは2年。
保証は、HTCVIVEに不具合が起きたので修理に出したら神対応だった!, VIVE レンズ調整ノブ等に不具合の為、HTCへ修理依頼 SteamVR エラー 208対応追記, HTC Viveのコントローラーが突然故障したんだが、無償で交換して貰えた話。当たりを見ると、HTC vive購入時Order number, 購入元, 到着日, シリアル番号等が必要らしいが、箱を開けた時に出てくる大きな紙の裏に保証コードが書いてあるシールがあるので中古でも箱とこの紙がなくなってなければ保証受けられそうな気がする。

HMDの中古というと抵抗ある人もいると思うが、スポンジは消耗品でマジックテープ式で取り換えられるし保証も2年で発売直後に買った中古でも1年以上受けられることがわかってるのでProフルセットを中古で買った、お値段約140k。(買った後Pro用のスポンジは公式どころかアマゾンでもあまりいいものがないことが分かったのだが...)

購入後

ドライバのインストール等は、箱を開くと入っていた大きな紙にある紙通りVive Proツールのハードウェア設定ツール通りにやればすぐに終わ...らなかった 。 調べてればわかってたことだが、HMDやコントローラの位置推定のために赤外線を出すベースステーションの固定のための器具が、元からついてるものは壁にねじ止めするようなものでまともに使えない。そこで、amazonクリップ雲台が届くまで一日待つ必要があった。 他のブログではポールに固定するタイプのものが紹介されているが、周りに本棚等があったのでクリップ式にした。
このベースステーションの固定以外は特に問題なく完了して、Google Earth VR等をやってみた。

VRの感想

HMDをかぶって周りを見渡すと確かにその場所にいる感覚が想像以上にあって凄かった。机とか物にコントローラの赤外線受光部分が半分以上遮られるとさすがに吹っ飛んで行ったりするが、すでに位置推定はVRで使う上で十分なレベルにあると感じた。体感できるようなドリフトはなく、コントローラ同士の接触もリアルとVRでほとんど差がない、位置推定を少しだけかじったことあればわかるがとてもよくできている。

音響に関しては、立体感は昔から立体音響の技術は十分なレベルにあるので当然問題なく、付属のヘッドフォンはまあ悪くはないと思う。音質に関しては自分であまり評価できる気がしないので実際に試してみるなり、適当なブログを見てほしい。

映像に関しては、レンズ中心、HMD正面方向を見ていると格子感もほぼなくドットはまあ見えるが問題ないレベルだが、中心から15度ぐらい目を動かしてみてみるとフレネルレンズのせいか文字が外側ににじんでいる感じがあった。このぐらいの範囲できれいに見えないと、いちいち見るためにHMD分回しにくくなっている頭をそっちの方向に向ける必要あるので大変。
でも、Steam画面で文字のにじみはあまり気にならなかったし、文字以外でも気にならなかったので、デフォルトホームのよくわからない山奥の部屋見たいなところが悪いのかもしれない。

コントローラについては、ちょっとトラックパッドは親指でトリガーは人差し指か中指なんだけどなかなか持ち方が安定しない、慣れてきたら気にならないかもしれない。コンテンツの問題かもしれないが、トラックパッドでのスライドやトリガーによるクリックの当たり判定が厳しいものもあって少し操作しにくいと感じた。

基本的スペースの問題で椅子に座りながら遊んでいるが、移動はタッチパッドでテレポートや正面を変えて、トリガーを引くとつかめるオブジェクトは掴める。実際にスペースを確保したらルームスケール設定して動き回ってみたい...
テレポート移動に関してはすぐ慣れて、オブジェクトをつかむのはオブジェクトの設定によって持つ場所そのものが定められてるのか変な感じになるが、デフォルトホームにいる謎の怪獣人形等で遊んだ感じでは直感的に拡大縮小や持つ場所を変えたりお手玉みたいに投げたりできた、楽しい。

Google Earth VRは、マジで面白い。インターネットの回線の問題なのかスペックの問題なのかわからないがブロック単位で若干鮮明になるのに数秒まったりもしたが、地上数百メートルの位置で地平線を見た感じはたまらない。よく知る景色を見てみてもPC版で平面的に使っていた時はよくわからなかったが想像以上によくポリゴンができていて高さ感覚が出てるので、遠くの建物にポインターを当てて手前に引き寄せる感じで移動できるのは、宙に浮いている感じで今までにない感じだった。

ARとかをやろうとした時の問題

ふとHMDの前面についてるカメラを使っていないことに気づいて、使おうとしたら思いのほか苦労した。そのことについては次の記事で proton-1602.hatenablog.com

キレイに見える範囲について

ViveのレンズをGalaxyGearVRのレンズに交換する動画があった、上の初VRの感想で言っている中心以外の文字が見にくいというのがわかりやすく説明されている。
レンズを取り出しているやつのコンパチGalaxy Gear VR、レンズを固定する部分のデータはあったけど、さすがに買いたてのVive Proでやる気はしない。でも結構きれいに見える範囲広くなるみたいだしいいですね、なんで公式フレネルレンズなんか使ってるんでしょうか。


HTC Vive Lens MOD Tutorial: How to get better sharpness & image quality in VR

感想

現在のVRの状況を知りたくて買ってみたが、想像以上に面白かったので買った価値はあると思う。
Pro買った後で2019年の春だか夏だかにアイトラッキングが追加されたVive Pro EyeやよくわからないCosmosが発売されるらしいことを知ったが、春休み以降に買っても院試や研究で忙しそうだし、まあいいんじゃないかな...
PCのスペックもそれなりに要求されて敷居が高いとは思うけど、Vive Proみんなも買ってみては?
(もうちょっとまとめた内容にしようと思ったけど、調べりゃ出てくるしめんどくさくなってしまった。書きたかったのはこの次のカメラの使い方なのでまあいいよね

ブログ始めました

こんにちは、protonです。

前から、作った工作物とかQiitaに書くほどのことじゃないけど日々のデバッグ作業ログみたいなものを書くためのブログ書こうかな~なんて思いながら書いてなかったのですが、やっと書くことにしました。

とりあえずはてブロにしましたが、他のサービスとかも考えているのでさっさと違うサービスに行くかもしれないし、やる気が出なくなったらそのままひっそりと更新がなくなると思いますが、よろしくお願いします。