ディープラーニングを用いて約1.8万円の低コスト筋電義手を作りました

前回掲載したディープラーニングを応用した筋電義手の記事を予想外に多くの方にご覧いただき、非常に驚いています。こうやって皆さんに反応をもらえると非常に励みになりますね、本当にありがとうございます!
今回は開発した筋電動作推定システムを簡易的なロボットアームに適用することで、低コストの筋電義手を作成したので報告させていただきます。(といっても、快適に使用するには程遠いですが、、、、)
また、前回の記事でいただいたコメントに対する捕捉情報についても述べていきたいと思います。

実際の動作とコストについて

実際に動いているときの動画です。
前回の記事と同様に、手を握った時・反った時・屈曲した時・無造作時の4種類の筋電位パターンをディープラーニングを用いて分類し、分類結果に応じてロボットアームを動かしています。



コストの内訳としては、
・ラズパイ:約5500円
・MyoWare:約5500円
・ロボットアーム:約5500円
・その他(圧着端子、ADコンバータ等):普通に買えば1500円くらい?
となっており、概算して約1.8万円です。

メカ・エレキ・ソフト設計

本当は自分で機械・機構設計に挑戦したかったのですが、
「まずは義手という形で見せられるようにしたい」という思いから、
簡単に制御できるSainSmart社のロボットアームを購入してみました。
5000円程度で3軸のロボットアームが買えるなんてお手軽ですね。
jp.sainsmart.com


ただ、今回は
・2軸で十分
・デフォルトの手首軸(真ん中の軸)回転方向が実際の手首の回転方向と異なる
ことから、所望の軸構成となるように分解・組み換えを行いました。
f:id:mou-tsukareta:20190824143650j:plain


回路に関して、前回はモータの電源をラズパイから供給していました。
しかし、今回は2軸構成となりさすがに電力不足となることが予想されたため、ACアダプタ→5Vレギュレータからモータの電源を供給することにしました。
f:id:mou-tsukareta:20190825041225j:plain


ソフトに関しては、推定した動作に応じて2軸のサーボをそれぞれ制御するだけの単純なものです。
また、ハンドの開閉状態とパルス幅の関係性がわからなかったため、自分で動作させて確認しました(どこかで公開されてるんでしょうか)。結果として、0[deg]で完全に閉じた状態となり、角度をマイナスに変化させるほどハンドが開いていきました。そこで、今回は余裕を持たせて-15[deg]を閉じた状態、-50[deg]を開いた状態としました。

補足情報

●パッドの張り方、体調等によるゲイン調整について
これに関しては、パッドが大体の位置に貼れていれば調整は必要ないです。
また、体調に関しても今のところ影響なしです。
ちなみに、今回の動画は前回から1カ月以上たってから撮影していますが、当時からディープラーニングに関するゲインは一切変えておらず、またパッド位置も前回の動画を参考に適当な位置に貼っただけで問題なく動作しました。


●ネットワークの層数について
今は中間2層でやってますが、コメントいただいた通り中間1層でも行けるかもしれません。
時間とやる気があれば試してみたいと思います。


●ラグについて
手を動かしてから実際に動作するまでのラグタイムですが、ラズパイの処理能力よりも推定アルゴリズムそのものによるところが支配的です。
前回の記事でも説明しましたが、現状の推定アルゴリズムは手を動かしてから2[s]の間の筋電データを用いるため、最低でも2[s]はラグが発生します。推定に用いるデータ区間を短くすることでラグは有意に減少しますが、各動作の波形の特徴も減少するために認識率が低下してしまいます。
ちなみに、以前フォワードプロパゲーション部の処理時間を計測したときは、0.3[s]~0.5[s]程度だったと記憶しています。
(大体の値を知りたかっただけなので、正確な値をメモし忘れてました、、、、)


●推定する動作の種類について
コメントとは直接関係ないですが、前述のラグと関連して自分の中でメモしておきたいトピックです。
今は4種類の動作を推定していますが、これを更に増やせるか?という問題です。
試しに「手を開く」動作を追加して推定してみましたが、認識率が下がりました。
動作の種類が増えるほど似たような特徴を持つ波形が増えるため、認識率が下がっているのだと考えられます。
これを解決する手段としては、「パッドを貼る位置やセンサの増幅率を試行錯誤することで、各動作がより特徴的となる条件を見つける」、「推定に用いるデータ区間を長くすることで、各動作の特徴をより捉えやすくする」ことが考えられます。後者に関してはラグタイムの増加につながるため、あまり好ましくなさそうです。
これも時間とやる気があれば、改善していきたいです。

今後について

今後の開発の余地は以下のような部分だと考えています。
・より装着しやすいようにするための機械・機構設計
・小型化のためのCPU変更、基板設計
ラグタイムを減らすためのパッド位置、増幅率の試行錯誤
・低コスト化のための筋電位センサの自作
特に、CPU変更と筋電位センサ自作をうまくできれば、コストも1万円以内に抑えられるのではと考えています。