3軸加速度センサーを組み込んだ杖。 TensorFlowでジェスチャを認識し、赤外線で家電を操作する。
パイプは水道管。 先の星はレーザーカッターで制作。
メインCPUはAVRを利用。 3軸加速度センサーとはi2cで通信している。
パイプの内径にピッタリな単三乾電池を電源にし、 昇圧DC/DCコンバータでAVRの電源を作っている。 使わない時にDC/DCコンバータを切らないといけないため、 FETを載せて、タクトスイッチが押さている間か、 AVRが自分の電源を入れ続けようとしている間だけ電源が入るようになっている。
ジェスチャの認識にはTensorFlowを使った深層学習を使っている。 まず、学習用にWifiに繋がる姉妹機を作り、PCにデータをあつめた。 集ったデータをPCにあるNVidea製GPUを使い学習を行う。 学習の試行錯誤はJupyter notebookを使ってプログラムを書く事で、 簡単に多数のモデルを試す事ができた。 学習済みのニューラルネットワークをAVRにファームウエアとして書き込み、 AVRがそれを元にジェスチャ認識を行う。
もちろんTensorFlowはAVRをサポートしていないため、 自前で同等の行列計算を行う必要がある。 こちらは単純にCで書き下した。 また、AVRは浮動小数点演算をサポートしてないため、 ソフトウエアによるエミュレーションを行っている。 しかし、AVRを16Mhzで動作させる事により、 ジェスチャ入力後、0.3秒ほどで分類が可能になっている。 ジェスチャは8パターンをサポートしている。
学習用のデータを作るため、8パターンそれぞれ200回づつ、 つまり1600回も杖を振ったので、筋肉痛になった。 人工知能時代に必要なのは上質な入力データである事が身を持って理解できた。