2015年5月2日土曜日

MyoをハックしてAndroidで筋電位データを取得し、ポーズ検出できるようにしてみた。

Myoってこんなのです。


この動画の中でいろんな手のポーズが認識されているようにみえますが、
現時点で実際にMyoで認識できるポーズは、
Fist、Spread、Rest、Wave In、Wave Outの5パターンだけです。
(グー、パー、力抜いてる、手を内側に折り曲げる・外側に折り曲げる)

自分だけの自由なポーズの登録や認識はできません。

今回僕らがやったことにより、
MyoをつけていればAndroidアプリで忍術の印を結んで技を発動させる!
なんてことも実現できます。

ナルトごっこが捗りますね!

チャクラ溜めて~~~印をいくつか結んで~~~
火遁豪火球の術!!!ゴオオオオオ!!!!!

なんてね!にんにん!



さて、ここからはおもいっきりエンジニアさん向けです。

モーション認識デバイスMyoに興味ある!
それをAndroidで使いたい!
加えてMyoのデフォルト5パターンのポーズじゃ満足できない!
という方のためのアプリの紹介です。

めっちゃニッチ!笑

Myoを触っている人は知っていると思いますが、
このデバイスは筋電位データを取得できます。
そして、現時点ではWindows、Mac、そして最近 iOSでも
販売元であるThalmic Labの公式SDKで
筋電位データへアクセスできるようになりましたね。

ただ、AndroidではThalmic Labの公式SDKだと筋電位データにアクセスできません。
開発フォーラムで質問しましたが、Thalmic Labのアップデートプランの中に、
Android端末で筋電位データへアクセスできるようにする、という項目はないようです。

その主な理由は、AndroidのBluetooth仕様が貧弱で、授受できるデータ量が少ないため、
他デバイスに比べて筋電位データの更新頻度が低くなり、
ポーズ認識などでやれることが限られてしまうこと、にあるそうです。

おそらくThalmic Labの開発メンバーも困っているみたいです。

公式SDKのアップデートを待っていてはいつやれるようになるかわかりません。

そこで、僕らはMyoのBluetooth送受信データをハックし、
Android端末で筋電位データへアクセスできるようにしました。
そして、3パターンのポーズを自由に登録し、ポーズ認識できるようになってます。
機械学習を組み込んでいないが故に、誰でも自分のポーズをお手軽に登録し、
登録したポーズを認識することができます。

コードはgithubで公開してます。

Android Studioのプロジェクトデータ形式で公開しているので、
ここまで読んでくださっている人ならば、すぐにAndroid端末にインストールできるはずです。

公開しているアプリの使い方は、この動画の通りです。



ぜひ使ってみて下さい。

公開しているコードにはまだ課題もあります。
一番大きな課題としては、ポーズ検出を何回かやっていると、筋電位データ授受が停止します。
挙動を見る限りでは筋電位データが溢れかえっているような感じです。(外れかも)

解決策をご存知の方はコメントやgithubにプッシュ頂けるとめっちゃありがたいです!
それだけでなく、どんなフィードバックでも頂けたらすっごくありがたいです。

また、少しだけ近況を。
4月から新メンバーが加入してくれたおかげで、弊社のHADO開発もガンガン進んでます。
HADOの詳細はこちら

テストがめっちゃ楽しい!
そして技を毎日出しまくるため、腕が太くなってきてます。
また、スウェーや反復横跳びの動きで攻撃をよけたりするので汗だくになってるw

アプリのテストで体が鍛えられるなんて斬新!
うちの開発メンバーはテストすればするほど健康になっちゃうね。

それではまた!