M5Stick-C+TensorFlow Liteでジェスチャ認識

先日のM5Stack用ジェスチャ認識(Magic Wand)をM5StickCに移植してみました。

M5StickCでは使用するライブラリが若干異なるだけで、基本的にはそのまま動作しました。
コードは以下にアップロードしてあります。ビルドする場合はPlatformIOにM5StickCライブラリをインストールしてください。
なおM5StickCの初期ロットでは、加速度センサに現在とは違うパーツを使っていたそうで、そのロットでは多分このままでは動作しないと思います。

boochow/TFLite_Micro_MagicWand_M5Stack at m5stickc

M5Stack版との大きな違いとしては、M5StickCは腕時計バンドが付属していますので、腕にはめてジェスチャできるように座標軸を設定しています。
以下のように腕を伸ばした状態がデフォルトの姿勢になります。(M5Stackではディスプレイを立てた姿勢がデフォルトでした。)

出荷時に入っていたM5StickCのデモが加速度センサを表示するようになっていましたので、それを使って(x, y, z)の加速度の計測結果を調べたところ

・ディスプレイを上に向け、腕を伸ばした状態 → (0, 0, 1)
・そのままディスプレイを左に向けた状態 → (0, -1, 0)
・腕を下に下ろした状態 → (1, 0, 0)

となりました。

M5Stack版の記事で書いたとおり、Magic Wandデモの機械学習モデルではそれぞれ
(0, 0, 1)(0, 1, 0)(1, 0, 0)
となる想定になっているので、Y軸だけ符号を反転させれば良いことになります。

他の変更は、ディスプレイのサイズが違うので認識結果の描画部分の定数を修正したり、インクルードファイルやplatformio.iniなど、細かい部分だけです。

ジェスチャの認識精度については、M5Stackのときと同じく、コツが必要な感じです(つまり、あまり精度は高くないです)。
円のジェスチャは腕全体を肩からぐるんと大きく回すと認識されやすいようです。

コメント