筋電でハンドジェスチャー操作するウェアラブルデバイス、Myo。
皆さんはご存じでしょうか?

以前、日本でもクラウドファンディングで販売されていた商品です。
(こちらは総代理店契約を結んだ国内販売店が販売しただけなので、開発支援的な意味合いというよりは既製品の日本先行販売プロジェクトでした。こういうのをクラファンでやってしまうのは少しどうなんだと思うところもありますが…今回はその話は割愛)
すでに製品の生産&販売を数年前に終了しており、入手困難な逸品でした。
開発終了の理由は、「Googleに買収され次のARデバイスの開発に開発資源を集中させる為」とのこと。
非常に人気を博したデバイスだったので、惜しまれる声が今でも多くあるウェアラブル端末です。
今回、ツテがあり何とかこの製品の入手に成功したので、「サポート終了した今入手して」どんなことができるかという観点から、改めて記事にしてみたいと思います。
なお、Myo sofrware for Windows 1.0.1は探してもなかなか見当たらず、β版の0.9系を仕方なくインストールしました。

だれか持ってたら配布してください。(切実)
届くとこんな感じ

商品の梱包を開けるとこんなかんじで、かなり箱そのものも小さめでした。
実際にはアクリルによる隙間が大きかったので、取り出すともっとコンパクトです。
中にBluetoothドングルとUSBケーブルが付属しているので、そちらも取り出しセットアップしていきます。
実際に使ってみたらこんな感じ
動作イメージはこんな感じです。
カメラデバイスと違って空間的な座標を使わないので、いつでもどこでもジェスチャーを飛ばせるのが魅力ですね。
では早速、使い方を説明してきましょう。
アプリをインストール

公式サイトは消滅しているため、こちらのサードパーティーの配布サイトからβ版の0.9.1bをダウンロードします。
セットアップの実行

.exeを実行します。
なお、公式が開発終了しているので「Help us improve Myo.」にチェックを入れてもデータはたぶんどこにもいきません。「View our Privacy Policy」でも Not Foundとなり、既に壊滅状態にあることに改めて気づかされます。

付属のドングルとUSBケーブルで本体を繋ぎます。
ちなみにUSBケーブルは、市販品のものでも認識可能でした。
腕輪に命名する(重要)
Armbandに名前を付けます。

やっぱ名前があると愛着がわくので、ここはしっくりくるものをチョイスしましょう。
ま、後から変更もできるんですけどね。

Check connectionをおしましたが、公式がもう何もしていないので何も起きませんでした。
Myoは登録できていないし、たぶんもうできないのでSkipします。

本体をPCから外していいよと言われているので、ケーブルを外します。

キャリブレーションはしていないので「No, I did’nt」を選択します。
チュートリアル開始

なんかチュートリアルっぽいものが始まります。

注意事項の説明と腕が細い方向けのクリップの取り付け方法の説明が流れるので、こちらの方々がGoogleに買収されてしまったことを胸中にしまいながら話を聞きます。

どのようにしてジェスチャーを同期しているかの説明が始まります。ふんふん。
「You’ve synced with Myo.」と表示されていればOKです。
腕にMyoを装着する
次に進むと、

「君、左手につけてるよね?」と聞かれます。
左利きなので左手につけてましたが、一瞬怒られたかと思いました。
Unsync~の文を読んでみると、逆の手の検知になってたら再同期し直せということみたいなので、一応左手でも続けられるみたいですが(郷に入っては郷に従えということで)UIが素晴らしいな~と感心しながら開発者の動画と同じ右腕に付け替え直してみます。

腕から外すと、「腕章を外したな!」と検知を受けます。

右手に付け直して、動画に表れているジェスチャーをすると筋電を検知し、ポップアップが消えます。
ちなみに、リストバンドの向きはこのキャリブレーション時に検知、設定してくれるので、どの向きを上側に…とかは特にありません!
(追記)やっぱり肘か手首側にUSB充電口(ロゴが光る面)を接触させる必要があるみたい。

右手に着けたね?と聞かれるので、Continueを選択します。
着けた手によってプログラムを少し変化させているようですね。
(多分筋電センサの入力順序:時計回り⇔反時計回り)
ジェスチャーの練習

ジェスチャーの説明が始まります。わくわく。

うまく動いたら、次のステップに動く仕組みです!楽しい!!
全部すぐ検知できました!
レビューで誤検知が激しいとあり少し不安でしたが、全然そんなことなさそうで安心しました!流石Googleに買収さr(ry

うまくジェスチャー認識してくれなくなったときは、再同期し直してねという案内が出ます。この5動作と、ニュートラルが基本なので覚えておきましょう。

続いて、音楽を流す練習が始まります。(唐突)

ふむ。どうやら誤検知防止のために、ダブルタップをFirst inputとして設定しているようです。(‘ω’)

ううん、ここでアクシデント。Wave rightがなんかうまくいかない。さっきはちゃんと検知してたのに…。
ここで、右上のNeed some help?をクリックするとキャリブレーションをカスタマイズする画面に飛びます。
やり方は後程の「キャリブレーション設定」で詳しく解説しているので、先にチュートリアルのほうを進めていきます。もう少しです。

私はいつもシステムトレイにいるからね、といわれます。
×ボタンでアプリケーションウィンドウを閉じても、バックグラウンドプロセスを終了させないと再起動できないので注意してください。

最後に、「Myo armband使いとしての心得を忘れるなよ…」といわれます。
大いなる力には責任が伴うようです。🐧
「覚悟」ができたら、Continueを選択してチュートリアルを終えます。
お疲れ様でした。
メイン画面の説明
Basic Myo actions

何から始めるか聞かれます。但し、繰り返しますが公式の開発&サポートは既に終了しています。Webサイトすらない状態です。そもそも日本語で書くこの記事に需要があるかすら不明

なので正しくはこうになります。

う~ん、シンプル。頼るものがないというのは選択肢が絞られてよいですね。😊
一つずつ見ていきましょう。
Try the Keyboard Mapper

名称的にこれが一番気になってました。もしや、APIまで叩かなくてもそのまま実装でいるのでは・・と。当たりでした。

キーボードのキーを「タップ」「ホールド」の2種類で指定できます。

こんな感じで、最大5種類のハンドシグナルを登録できます。
ダブルタップを誤作動防止の為の初期入力に使う場合は、実質4動作ですね。
精度はあがりますが、トレードオフでスピードは失われますのでやりたいことに合わせて設定するのがよさそうです。にしても神。
Export as Connector2

また、右下の「Export as connector」を押すと他のアプリケーションにキーを送信してくれるようです。PythonやCppでわざわざ入力を拾いに行かなくてもいいみたいです。
なくても既に充分使えるレベルですが、内部入力として済ませたい場合はこちらでSendKyesの処理のみ渡せる感じですね。
Start Developing
ゴメンナサイ。これも開発ドキュメントに飛ぶみたいで、正しくは❎でした。
けど、代わりにこちらのリポジトリに有志開発者が作ったものを含めてかなりリストアップされています。
リンク切れのものも幾つかありますが、参考にできそうです。
あとはPythonだと、
機械学習による指の動きの分類、筋電図を使用した 3D プリント ロボットハンド用アームバンド
を作っている方がいました。

ニューラルネットワークで指の動きを学習させているみたいです。

これなら発売当初の、深層学習のブレークスルーを迎えていなかった時代の公式ソフトウェアよりグンと精度向上が期待できそうです。
こちらは、以下のmyo-pythonというライブラリを使って作られています。(Pyplの説明はこちら)
興味ある方はぜひチェックしてみてください。
あとは日本人の方で、LSTM(Long Short Term Memory)を使った精度向上プログラムをPythonで作ろうとしていた方がいるみたいです。こちらも参考に以下リンクを貼っておきます。
Create a custom calibration profile

こんなちっちゃいポップアップウィンドウ4が開きます。
(↑Myoを腕を付けたまま執筆してたら、勝手に4が入力されてしまいました。笑)
デバイス名の変更、キャリブレーションの最適化設定、バッテリーチェックや本体電源のオフなどができます。

先ほどのチュートリアルで右上に出たキャリブレーションのセットアップはこちらから行えるので、説明に入ります。
キャリブレーションの設定
CALIBRATION > Create a Profile を選択します。
すると、次のような画面が立ち上がります。
Custom Calibration Profile

Continueをクリック。

カスタムキャリブレーションの際は、ロゴが出る場所、つまり充電ポートがある場所の位置が重要になります。肘か手首に接している必要があるようです。

位置を決めるのに、スペースーを押してレコーディングを開始します。
毎回、映像でイメージを案内してくれるのは嬉しいですね。
こんな感じで、全ジェスチャーの筋電はこれ!と記録しなおして、プロフィール名の登録、デバイスへの動機を行います。
キャリブレーション設定が非常に簡便で感動しました。
そのほか優秀な機能とか
自動スリープ設定も
Myo armbandには優秀な機能があって、つけたまま暫く使わないでいると自動でスリープ状態に入ります。

しかもこれ、なんていうか絶妙なタイミングでスリープに入ってくれます!
この辺の体験設計の落とし込みどころがThalmic Labs(Myoの開発元)マジですごい。

するとこのように、
Myoは2秒間、または腕を横に降ろすまでロックが解除されたままです。
ロックが解除されると、振動でお知らせします。
と表示されます。ダブルタップ➤Wave rightで解除できます。
省電力化されているのは本当に嬉しいです。
(おまけ)バッテリーは何mAh?
そういえばこれ、何時間持つのだろう?
取説が同封されておらず特に書いてなかったため、調べてみました。

ggるとどうやら、220mAhのバッテリーパックを使用しているみたいですが、数は不明。
よく見ると幅の違う四角形が2つ3つあるので、複数バッテリーを入れているのかもしれません。
まとめ
ということでMyo armband の使い方&セットアップを解説しました。
ソフトウェアがβ版しかサードパーティーのサイトで配っていなくてヒヤヒヤしましたが、無事使えて安心しました。
やはり生産終了しても需要・人気が高いのか一応似たようなデバイスは海外では開発されているようです。ちょうどこのデバイスの発売数年後、3Dプリンタが一般家庭に普及したのもあり、ローコストでの開発モデルの論文が以下にありますので興味のある方はぜひチェックしてみて下さい。
よかったらTwitterかInstagramのふぉろーしてくださると励みになります!
(作品はインスタのほぼインスタにしかあげてないです)
それではここまでお読みいただきありがとうございました。٩(๑❛ᴗ❛๑)