protonブログ

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

Adblock Plusでniconico動画のプレミアム会員権の広告を消す方法

初めに

Google Chrome, Safari, Firefox等のブラウザで簡単に広告を消すことができる便利アドオンのAdblock Plusで、htmlの要素が非表示にできることを知らなかったので書いておきます。Adblock Plusを既に使っている人には、常識かもしれない...

Adblock Plusとは何かとか

調べればいくらでも出てくるので省略。Adblock Plus Help Center, ニコニコ大百科(Adblock Plus)とか。

問題

niconico動画では、随分前から動画再生中等広告が出るようになっていたが、この広告はAdblock Plusで簡単に消すことができた。 しかし、8月末頃?からページ上部に

f:id:proton_1602:20190904115450p:plain
プレミアム会員権広告

のような、お気に入りの一般会員生主がいる人以外には全く無価値な邪魔な広告が常に表示されるようになった。

対処

F12キーを押して要素を見てみると、この広告は

<div class="PremiumHeader">...</div>
<div id="premiumHeader" class="premiumHeader">...</div>

の部分に該当し、PremiumHeaderやpremiumHeaderのようなclass属性がつけられているのが分かる(ページによって2種類ありました)ので、Adblock Plusのマイフィルターリストに

  • nicovideo.jp##div.PremiumHeader
  • nicovideo.jp##div.premiumHeader

の2つを追加すれば、niconico.jpドメインにおいてPremiumHeader, premiumheaderのclass属性を持つ部分を非表示にすることができます。 このフィルタの詳しい意味は、公式(How to write filters)や、片鱗懐古のブログのAdblock Plusのフィルターの書き方を適当に和訳等を見て下さい。

感想

Adblock Plus便利ですね。

電気系大学生が3日だけ勉強して電験一種を受けた話

初めに

就活とかに困った時用に学生の内に資格取れるなら取ったほうが良さそうだし、どうせならなんか強そうな資格ほしいなと思って調べていたら、国家資格のうち実務経験が必要なくて難易度の高い電験一種(第一種電気主任技術者)が有り、電気系の知識のまとめにもなっていいかなと思い受けてみました。

この記事を書いたのは、試験翌日なのでまだ結果は分かってません。分かり次第更新します。

→公式解答が出たので更新しました。(9/2)

電験一種とは

第一種電気主任技術者試験のことで、これに合格すると全ての事業用電気工作物の保安監督者になれます。電気設備の設置者は、保守保安の監督者を必ず選任しなければならないので、世が電気によって回っている限りは需要がある資格だと思います。

電気工作物ってなんぞやとか、自宅に発電機あるけど監督者なんていないけどとか、そういう疑問は、電気法規とかの法規分野の勉強をすればわかります。この資格がどれくらい凄いのかとか、何処に需要があるのかはちゃんと勉強してから初めて分かるわけです。(自分はまだ分かってません。)

試験内容

電験一種は、マークシート式の一次試験と筆記式の二次試験に分かれています。合格点はどちらもだいたい6割ぐらいです。

一次試験

理論・電力・機械・法規の四科目に分かれており、全てに合格する必要があります。どれか合格すると、科目合格者としてその後二年はその科目は受験しなくても良くなります。(ただし一次試験全てを免除しようとすると科目合格者ではなく一次試験免除者になり、一次試験合格のその翌年だけしか免除ができないです。)

四科目とも答える大問はA問題4つとB問題2つの計6問です。A問題は15個の選択肢から5個解答を選択する方式で10点満点、B問題は15個以上の選択肢から5~9個解答を選択する方式で20点満点で、合計80点満点で基本的に合格点は6割の48点ですが、難しいと下がったりします。

理論

試験時間は90分で、回路計算, 電磁界, 電子回路, 計測等から出ます。一次試験の他科目と異なり、簡単な二次方程式, 微分方程式ぐらいの計算は必要になります。

電力

試験時間は90分で、発電所や変電所の設計・運転, 送電線路・配電線路の設計・運用, 電気材料等から出ます。

機械

試験時間は90分で、電気機器, パワーエレクトロニクス, 照明, 電熱, 電気化学, 自動制御, 情報伝達・処理等から出ます。

法規

試験時間は他と異なり65分で、電気法規, 電気施設管理等から出ます。基本的に暗記のみになります。

二次試験

電力・管理、機械・制御のニ科目に分かれており、その合計点が6割以上かつ各科目平均点以上を取れると合格になります。全て記述式で、だいたい半分ぐらいが計算問題になります。

電力・管理

試験時間は120分で、発電所や変電所の設計・運転, 送電・配電線路の設計・運用, 電気施設管理等から出ます。大問1問あたり30点で、大問6問中4問を選択するので、120点満点になります。

機械・制御

試験時間は60分で、電気機器, パワーエレクトロニクス, 自動制御, メカトロニクス等から出ます。大問1問あたり30点で、大問4問中2問を選択するので、60点満点になります。

試験日

一次試験は8月末~9月初めの土曜日、二次試験は11月20日前後の日曜日になります。申込受付日は、5月末から6月中旬当たりです。

試験勉強

過去問解答購入

初めに、どんな問題が出るかとか過去問とその解答はあるかなどを調べました。問題の範囲は公式やら各種ブログ等に、過去問とその解答は公式に過去10年分載っていましたが、解説はあまりいいのが無さそうだったため電気書院から出ている電験一種模範解答集 2019年度版(過去問5年分)を買いました。

現状把握

取り敢えず、過去問の26年度の問題を解いてみた所、理論は74/80で選択問題全て解いても時間が余るぐらいだったので、完全に勉強しないことにしました。他ブログによると一番難しい所らしいですが、電気系出身であれば6割はほぼ確実に取れると思われます。

電力は30/80で、この時点で理論以外はそもそも知識が足りなすぎて話しにならないと思ったため真面目に参考書を買って勉強することにしました。 資格によっては、全く知らない分野でも過去問を暗記するだけで解けたりするものもありますが、電験一種は範囲が非常に広く似た問題でも過去問を覚えるだけでは解けないので、基本的に過去問を覚えても無駄だと思います。

参考書購入

購入する参考書を調べた所、電験一種は受ける人が少ないためか参考書が非常に少なく、電験一種 一次試験の完全研究等専用のものは有りましたが、既にアマゾンでクソ高い中古を買うぐらいしか入手手段が無くなっていたため、電験二種の参考書で代用することにしました。 購入したのは、電験二種 徹底マスター 電力, 電験二種徹底マスター 機械(改訂2版), 完全マスター 電験二種受験テキスト 法規 (LICENCE BOOKS)の3つです。 法規だけ完全マスターなのは、古いブログを見て一番初めに購入したため、その改訂版の徹底マスターが出ているのを知らなかったからです。(最終的に電力と機械はほとんど読んだのですが、電験二種の参考書でも十分一種に使えると感じました。全ての範囲は到底抑えられないですが、正答の用語や考えの基本は載っているので合格は可能です。機械の構造やその性質の理由まで常に気にするような人であれば、恐らく三種の参考書でも行けると思います。)

3日間の勉強

今年の試験日は8/31(土)なのですが、自分はその直前まで院試の試験があったので勉強を開始したのは8/28(水)でした。(資格の試験より院試の方が何十倍も大事なので)

初めに、試験の順番と同じように電力をやっていましたが、誘導機等の機械の知識が必要な所が多く、途中で切り上げて機械から勉強をしました。 試験前日までに読んだのは、機械の全てと電力の原子力, 新エネルギー, 発電, 配電, 電気材料以外で、睡眠時間を3時間ほどにして当日の朝に電力の配電, 電気材料, 原子力, 新エネルギーを読みました。 法規は会場に向かう間と、法規までの試験の早期退出を含めた休憩時間に勉強しました、当日の休憩時間は意外とあるので一科目の一ニ分野を勉強するぐらいはできると思います。

傾向は無いのか

2日前の時点で、確実に全てやる時間はないと感じたので傾向が無いのかとか調べたりもしました。 電力は三種の傾向らしきものの情報しか見つかりませんでしたが、機械は迷える電気技術者にて電験1種1次試験 機械の傾向分析にまとめてくており、法規は電気の神髄にて電験一種一次試験 法規科目の攻略法にまとめてくれていました。 やはりそこまで大きな傾向は見つかりませんでしたが、こういう分析は非常にありがたかったです。

試験結果

各種用語等を調べて自己採点した所、

  • 理論 70/80→62/80
  • 電力 49/80→50/80
  • 機械 47/80→45/80
  • 法規 38/80→39/80 (左が自己採点結果、理論はB問題の配点を計算し間違えていた。)

でした。法規は確実に落ちているので、二次試験に行けるのは来年になりそうです。

電力や機械は、電気に対する抵抗のなさやその背景知識を一部知っている等もあり短時間で対策ができましたが、流石に法規は条例の用語を細かく正確に暗記しなければならないため、もう少し勉強時間が必要でした。一週間ぐらい勉強すれば全合格可能性があるラインに、二週間ぐらい有ればだいたい全合格できるぐらいになると思います。(ここでの勉強は一日中全てを勉強に使って、だいたい1日10時間以上有効勉強時間がとれた時の話です。)

感想

電験一種の勉強は、実際に現場で使われている技術についてその性質と理由を学ぶ必要があるため面白かったです。 ただし、法規はどっちの選択肢でも別に意味的には問題ない気がするものまで覚えなきゃいけなかったりして、実務に関係ない所まで聞かれている気がしてなりませんでした。やはり単純暗記は難しいです、電力や機械はその性質に至るまでの数式があったりや説明ができるので関連して覚えるのは比較的楽でした。

来年には、電験一種をちゃんと取れるように1-2週間ぐらいはまともに勉強しようと思います。

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に書くほどのことじゃないけど日々のデバッグ作業ログみたいなものを書くためのブログ書こうかな~なんて思いながら書いてなかったのですが、やっと書くことにしました。

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