番外編、再びです!
先日、ブログで Myo が届いたことを紹介させていただきましたが、さっそく Myo の Unity プラグインを使ってユニティちゃんの頭を実際に手を動かして撫でてみることにチャレンジしてみました!!
Myoとは
Myoは、腕に装着する事で筋肉の動きをキャプチャーするウェアラブルデバイスです。
実際に腕に装着してみましたが、腕輪自体が伸び縮みするので腕の太さに関係なく装着できます。
Myoでできること
https://developer.thalmic.com/docs/api_reference/platform/getting-started.html
上記のサイトを見ると、以下のことが出来る模様です。
Spatial data(空間データ)の取得
- 腕の回転情報(回転行列 or オイラー角)
- 加速度ベクトル
Gestural data(ジェスチャーデータ)の取得
- いくつかはMyo SDKによりプリセットとして決まったポーズの形式がサポートされている(後述)
- 震えます
- バイブレーションコマンドがあるので、何かしら問題が発生したときなどにユーザーに知らせる事が可能
ジェスチャー
ジェスチャーに関してはSDKのリファレンスとUserExperienceGuidelineを見ると以下のジェスチャーが判定できるようです。
- Double Tap
親指と中指同士を2回タップする動作
- Fingers Spread
指を広げる動作
- Fist
手を握る動作
- WaveIn
手を外側から内側に振る動作
- WaveOut
手を内側から外側に振る動作
初期設定
https://developer.thalmic.com/docs/api_reference/platform/getting-started.html
上記のサイトをもとに初期設定の手順を解説します。
(1) Bluetooth Dongle Driverのインストール(Windowsのみ)
基本的にはPCにドングルを接続すれば、自動的にドライバがインストールされるようです。
(2) Myo Connectのインストール
上記サイトに接続し、使用しているPCに応じてMyo Connectというアプリケーションをダウンロードしインストールします。アプリケーションを起動するとファームウェアのアップデートなどが行われるので、手順に従って行います。 (説明は英語ですが、絵や動画を使用しているため結構わかりやすかったです)
ここでは操作方法などについても説明が行われます。
(3) キャリブレーション
ジェスチャーの認識には当然個人差があるのでキャリブレーションを行うのがオススメです。Macの場合、Myo Connectが起動されている状態だと以下の画像のようにメニューバーにMyo Connectのアイコンが表示されていますので、アイコンをクリックしてメニューの一覧からArmband Manager…を選択します。
Armband Managerを起動すると以下の画像のようなウィンドウが表示されます。タブでCALIBRATIONを選択し、Create a Profileをクリックします。
あとは手順に従ってキャリブレーションを行ってください。
連携アプリケーション
PowerPointやKeynoteなどのいくつかのアプリケーションで、Myoを使用する事が可能です。他アプリと連携するにはConnectorなる専用のアプリケーションが必要となります。
こちらのサイトに対応しているアプリケーションの一覧と連携用のアプリケーションのダウンロードが可能となります。
PowerPointやKeynoteなどのいくつかのアプリケーションは、Myo Connectにはじめから組み込まれている模様です。Keynoteと連携を試してみましたが、スライドのページ送りを手のジェスチャーだけで行える事ができました。
SDKのダウンロード
https://developer.thalmic.com/downloads
上記のサイトに接続するとSDKがダウンロード可能です。2014年12月9日現在、サポートされているプラットフォームは以下になります。
- Windows
- Mac OS
- iOS
- Android
- Unity
今回、Unityで試してみようと思うのでUnityのプラグインをダウンロードしました。 (UnityのプラグインはWindowsかMacのSDK内に同梱されています)
Unityのサンプルプロジェクト
ダウンロードしたUnityパッケージをインポートするとサンプルプロジェクトが同梱されています。
/Assets/Myo Samples/Box On A Stick.unity のシーンを起動すると、3D 空間内に箱が置いてあります。
早速実行してみます。
実行して画面左上に「Perform the Sync Gesture」と表示された場合は、ジェスチャーを認識させる必要があります。こちらのサイトを参考にしてジェスチャーを行って同期してください。
ジェスチャーを同期してアプリを実行すると以下のような画面になります。
腕の動きに同期してオブジェクトが動きます。
ジェスチャーを行うと箱の色が変わったりします。このサンプルを元にひとつアプリを作ってみました。
ユニティちゃんの頭を撫でてみよう!
ユニティちゃんの頭の上に手を置いた状態で、MyoのジェスチャーでFinger Spread(手を広げる動作)を認識した時に ユニティちゃんの表情を変えてボイスを再生するようなアプリを早速作ってみました!
起動するとユニティちゃんが目の前にいます。左側に浮いているのは、ちょっとリアルな手のモデルです。
腕を動かしてユニティちゃんの頭の上まで持っていきます。
その状態で手を広げる動作を認識すると、ユニティちゃんの表情が変わりしゃべりかけてくれます。
感想
今までにいくつかのウェアラブルデバイスを試してみましたが、その中でもこのMyoは入力デバイスとして使用できる可能性を秘めていると感じました!
加速度センサーとジャイロセンサーにより腕の回転情報は正確に取れますし、若干個人差はありますがキャリブレーションすればジェスチャー情報も高精度に取得できる事ができました。
今後Ocurus Riftと連携して面白いコンテンツを作ってみたいと思いました。