Myo アームバンド

提供: IoT
移動先: 案内検索

Go Up to ThingConnect デバイス


Myo アームバンドは、前腕の筋活動を読み取り、タッチせずに手のジェスチャや動きによって技術を制御できる、Bluetooth ジェスチャ制御アームバンドです。

TMyo コンポーネントを使用すると、Myo アームバンドと通信することができます。

デモ用サンプル プロジェクト

Myo アームバンドのサンプル プロジェクトは、上記コンポーネントのインストール後、次の IoT デモ ディレクトリにあります。

  • [スタート|すべてのアプリ|Embarcadero RAD Studio Berlin|サンプル]を選択したあと、次に移動します。
    • Delphi の場合: Internet of Things\Object Pascal\Thing Connect\MyoArmband
    • C++ の場合: Internet of Things\CPP\Thing Connect\MyoArmband

サポートされているサービス

Myo アームバンドでは、次の Bluetooth LE サービスおよびキャラクタリスティックをサポートしています。

サービス キャラクタリスティック プロパティ イベント 読み取り サブスクライブ 書き込み
Battery Service Battery Level BatteryLevel OnBatteryLevelUpdate
YesSubscriptionFeature.png
YesSubscriptionFeature.png
Device Information Manufacturer Name String ManufacturerName OnManufacturerNameUpdate
YesSubscriptionFeature.png

Myo アームバンド コンポーネントでは、次のカスタム サービスをサポートしています。

サービス プロパティ イベント 読み取り サブスクライブ 書き込み 説明
Myo Classifier Service OnClassifierEventDataUpdate
YesSubscriptionFeature.png
TMyoClassifierEvent 型の IClassifier イベント データです。
Myo EMG Data Service OnEMGData0Update
YesSubscriptionFeature.png
TMyoEMGData 型の EMG データ 0 です。
OnEMGData1Update
YesSubscriptionFeature.png
TMyoEMGData 型の EMG データ 1 です。
OnEMGData2Update
YesSubscriptionFeature.png
TMyoEMGData 型の EMG データ 2 です。
OnEMGData3Update
YesSubscriptionFeature.png
TMyoEMGData 型の EMG データ 3 です。
Myo IMU Data Service OnIMUDataUpdate
YesSubscriptionFeature.png
TIMUDataService 型の IMU データです。
Myo Info Service Command
YesSubscriptionFeature.png
TMyoCommand 型のコマンドを書き込みます。
FirmwareVersion OnFirmwareVersionUpdate
YesSubscriptionFeature.png
TMyoFirmwareVersion 型のファームウェア バージョンを読み取ります。
Info OnInfoUpdate
YesSubscriptionFeature.png
TMyoInfoService 型の Myo 情報を読み取ります。

カスタム データ型

Myo アームバンドでは、次のユニットにカスタム データ型が定義されています。

  • Iot.Device.MyoTypes

Myo アームバンド EMG データ

TMyoEMGData レコードには、EMG データ キャラクタリスティックのバイト配列が含まれます。

  • Create: デバイスから受信したバイト配列を使用して TMyoEMGData のインスタンスを初期化します。
  • Value: デバイスから受信された未加工のバイト配列

Myo アームバンド HW ポーズ

TMyoHWPose は、サポートされているポーズを列挙したもので、RestFistWaveInWaveOutFingersSpreadDoubleTapUnknown = $FFFF が含まれます。

Myo アームバンド アクティブ分類子種別

TMyoActiveClassifierType は、有効な Myo 分類子モデル種別を列挙したもので、BuiltinCustom が含まれます。

Myo アームバンド ストリーム ソース指示

TMyoStreamIndicatingSource は、有効な Myo データ ストリーム ソースを列挙したもので、BLEOtherSource が含まれます。

Myo アームバンド SKU 値

TMyoSKUValue は、既知の Myo SKU を列挙したもので、BlackMyoWhiteMyoUnknown が含まれます。Unknown は、古いファームウェア用のデフォルト値です。

Myo アームバンド情報サービス

TMyoInfoService レコードには、接続が確立されているときにこの Myo アームバンドの動作に影響する、さまざまなパラメータが含まれます。

  • Create: デバイスから受信したバイト配列を使用して TMyoInfoService のインスタンスを初期化します。
  • Value: デバイスから受信された未加工のバイト配列
  • SerialNumber: Myo の一意のシリアル番号を値に持つ UInt64 を返します。
  • HWPoseポーズを返します。これはロック解除のポーズとして解釈するべきものです。
  • ActiveClassifierType: Myo が現在組み込み分類子を使用しているかカスタム分類子を使用しているかを示す TMyoActiveClassifierType を返します。
  • ActiveClassifierIndex: 現在アクティブな分類子のインデックスを示す UInt8 を返します。
  • HasCustomClassifier: Myo に有効なカスタム分類子が含まれるかどうかを返します。含まれていれば 1、含まれていなければ 0 です。
  • StreamIndicatingSource: キャプチャの信頼性が上がるよう Myo でデータのストリームに BLE を使用しているかどうかを示す TMyoStreamIndicatingSource を返します。
  • SKUValue: デバイスの SKU 値を返します。

Myo アームバンド ファームウェア バージョン

TMyoFirmwareVersion レコードは、Myo ファームウェアのバージョン情報を含みます。

  • Create: デバイスから受信したバイト配列を使用して TMyoFirmwareVersion のインスタンスを初期化します。
  • Value: デバイスから受信された未加工のバイト配列
  • MajorVersion: ファームウェアのメジャー バージョンを値に持つ UInt16 を返します。
  • MinorVersion: マイナー バージョンを値に持つ UInt16 を返します。マイナー バージョンはインターフェイスの変更があるとインクリメントされます。
  • PatchVersion: パッチ バージョンを値に持つ UInt16 を返します。パッチ バージョンは、インターフェイスの変更を伴わないファームウェアの変更時にインクリメントされます。
  • HardwareRevision: Myo ハードウェア リビジョンを値に持つ UInt8 を返します。

Myo アームバンド コマンド種別

TMyoCommandType には、使用可能なコマンドの種類が列挙されています。

  • SetMode = $01: EMG と IMU のモードを設定します。
  • Vibration = $03: バイブレーションを設定します。
  • DeepSleep = $04: Myo を深いスリープ状態にします。
  • Vibrate2 = $07: 拡張バイブレーション。
  • SetSleepMode = $09: スリープ モードに設定します。
  • Unlock = $0A: Myo のロックを解除します。
  • UserAction = $0B: 動作が認識または確認されたことをユーザーに通知します。

Myo アームバンド EMG モード

TMyoEMGMode には、使用可能な EMG モードが列挙されています。

  • None = $00: EMG データを送信しません。
  • SendEMG = $02: フィルタ処理した EMG データを送信します。
  • SendEMGRaw = $03: 未加工の(フィルタ処理しない)EMG データを送信します。

Myo アームバンド IMU モード

TMyoIMUMode には、使用可能な IMU モードが列挙されています。

  • None: IMU データまたはイベントを送信しません。
  • SendData: 加速度計、ジャイロスコープ、方向の IMU データ ストリームを送信します。
  • SendEvents: IMU が検出した動きのイベントを送信します。
  • SendAll: IMU データ ストリームと動きのイベントの両方を送信します。
  • SendRaw: 未加工の IMU データ ストリームを送信します。

Myo アームバンド分類子モード

TMyoClassifierMode には、使用可能な分類子モードが列挙されています。

  • Disabled: 搭載された分類子の内部状態を無効にしてリセットします。
  • Enabled: 分類子イベント(ポーズと腕のイベント)を送信します。

Myo アームバンド コマンド

TMyoCommand レコードには、Myo コマンドのバイト配列が含まれます。

  • Create: コンストラクタには 5 つのオーバーロード メソッドがあります。
    • 1 番目のオーバーロード メソッド: デバイスから受信したバイト配列を使用して TDelayOnOff のインスタンスを初期化します。
      • パラメータ: TBytes 型の AValue
    • 2 番目のオーバーロード メソッド: 1 つのパラメータを使用する Myo コマンドのコンストラクタ。
    • 3 番目のオーバーロード メソッド: Myo モード設定コマンドのコンストラクタ。
    • 4 番目のオーバーロード メソッド: 2 つのパラメータを使用する Myo コマンドのコンストラクタ。
    • 5 番目のオーバーロード メソッド: Myo 拡張バイブレーション コマンドのコンストラクタ。

継続時間を UInt16 で示す ADuration、強さを UInt8 で示す AStrength

  • Value: デバイスから受信された未加工のバイト配列
  • CommandTypeコマンド種別を返します。
  • PayloadSize: コマンド種別とサイズ用バイト自体を除いたコマンドのペイロード サイズ(UInt8)を返します。
  • EMGModeEMG モードを返します。
  • IMUModeIMU モードを返します。
  • ClassifierMode分類子モードを返します。
  • Duration: バイブレーションの継続時間を含む UInt16 配列を返します。
  • Strength: バイブレーションの強さを含む UInt8 配列を返します。

Myo アームバンド IMU データ サービス

TIMUDataService レコードには、方向データのバイト配列が含まれます。

  • Create: デバイスから受信したバイト配列を使用して TIMUDataService のインスタンスを初期化します。
  • Value: デバイスから受信された未加工のバイト配列
  • WOrientation: W 方向を示す Int16 値を返します。
  • XOrientation: X 方向を示す Int16 値を返します。
  • YOrientation: Y 方向を示す Int16 値を返します。
  • ZOrientation: Z 方向を示す Int16 値を返します。
  • Accelerometer: 加速度計データを示す Int64 値を返します。単位は g。範囲は +/-16。値には MyoHwAccelerometerScale(2048)が掛けられます。
  • Gyroscope: ジャイロスコープ データを示す Int64 値を返します。単位は度/秒。範囲は +/-2000。値には MyoHwGyroscopeScale(16)が掛けられます。

Myo アームバンド分類子イベント種別

TMyoClassifierEventType は、使用可能な分類子イベント種別を列挙したもので、ArmSynced = 1ArmUnsyncedPoseUnlockedLockedSyncFailed が含まれます。

Myo アームバンド アーム

TMyoArm は、腕を特定するための使用可能な値を列挙したもので、Right = 1LeftUnknown = $FF が含まれます。

Myo アームバンド X 軸方向

TMyoXDirection は、ユーザーの腕に対する Myo X 軸の使用可能な方向を列挙したもので、TowardsWrist = 1TowardsElbowUnknown = $FF が含まれます。

Myo アームバンド同期結果

TMyoSyncResult は、ユーザーが同期ジェスチャを試みたときの考え得る結果を列挙したもので、UnknownSyncFailedTooHard が含まれます。

Myo アームバンド分類子イベント

TMyoClassifierEvent レコードには、分類子イベント データのバイト配列が含まれます。

  • Create: デバイスから受信したバイト配列を使用して TMyoClassifierEvent のインスタンスを初期化します。
  • Value: デバイスから受信された未加工のバイト配列
  • EventType分類子イベント種別を返します。
  • Arm: ユーザーのを返します。
  • XDirection: ユーザーの腕に対する Myo X 軸の方向を示す Myo X 軸方向を返します。
  • Pose: ロック解除のポーズを返します。
  • SyncResult: ユーザーが同期ジェスチャを試みたときの結果を示す同期結果を返します。

デバイスの詳細

  • デバイス: Myo アームバンド
  • モデル: MYO
  • 使用技術: Bluetooth LE

既知の問題

  • Myo アームバンド デバイスは、Windows マシンとペアにすることはできません。アプリケーションのターゲット プラットフォームが 32 ビット Windows64 ビット Windows の場合は、Myo アームバンドとペアにすることはできません。

デバイス固有の情報

Myo アームバンドでは、接続時および再接続時に毎回、キャラクタリスティックの読み取りを有効化/無効化する必要があります。これは省電力動作のためです。このデバイスでは 3 つの主なキャラクタリスティックをサポートしています。

  1. IMUData: 動きのデータ
  2. ClassiffierEvent: ポーズのデータ(手と手首のジェスチャ)
  3. EMGData筋電計データ
    メモ: EMG データが使われることはほとんどありません。しかし、使用する場合には、必ずファームウェアをアップデートしてください。このキャラクタリスティックは 2014 年 12 月から提供されています。

これらのキャラクタリスティックを有効化/無効化するには、コマンドを送信する必要があります。たとえばすべてのキャラクタリスティックを有効化するには、次のようにします。

Myo1.Command := TMyoCommand.Create(TMyoCommandType.SetMode, TMyoEMGMode.SendEMG, TMyoIMUMode.SendAll, TMyoClassifierMode.Enabled);

また、必ず Myo アームバンドのロックを解除しておいてください。永久に(新しいロック コマンドを受信するまで)ロックを解除した状態に設定するには、次のコマンドを使用します。

Myo1.Command := TMyoCommand.Create(TMyoCommandType.Unlock, Integer(TMyoUnlockType.Hold));

関連項目