Myo アームバンド
目次
- 1 デモ用サンプル プロジェクト
- 2 サポートされているサービス
- 3 カスタム データ型
- 3.1 Myo アームバンド EMG データ
- 3.2 Myo アームバンド HW ポーズ
- 3.3 Myo アームバンド アクティブ分類子種別
- 3.4 Myo アームバンド ストリーム ソース指示
- 3.5 Myo アームバンド SKU 値
- 3.6 Myo アームバンド情報サービス
- 3.7 Myo アームバンド ファームウェア バージョン
- 3.8 Myo アームバンド コマンド種別
- 3.9 Myo アームバンド EMG モード
- 3.10 Myo アームバンド IMU モード
- 3.11 Myo アームバンド分類子モード
- 3.12 Myo アームバンド コマンド
- 3.13 Myo アームバンド IMU データ サービス
- 3.14 Myo アームバンド分類子イベント種別
- 3.15 Myo アームバンド アーム
- 3.16 Myo アームバンド X 軸方向
- 3.17 Myo アームバンド同期結果
- 3.18 Myo アームバンド分類子イベント
- 4 デバイスの詳細
- 5 既知の問題
- 6 デバイス固有の情報
- 7 関連項目
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
- Delphi の場合:
サポートされているサービス
Myo アームバンドでは、次の Bluetooth LE サービスおよびキャラクタリスティックをサポートしています。
サービス | キャラクタリスティック | プロパティ | イベント | 読み取り | サブスクライブ | 書き込み |
---|---|---|---|---|---|---|
Battery Service | Battery Level | BatteryLevel
|
OnBatteryLevelUpdate
|
|||
Device Information | Manufacturer Name String | ManufacturerName
|
OnManufacturerNameUpdate
|
Myo アームバンド コンポーネントでは、次のカスタム サービスをサポートしています。
サービス | プロパティ | イベント | 読み取り | サブスクライブ | 書き込み | 説明 |
---|---|---|---|---|---|---|
Myo Classifier Service | OnClassifierEventDataUpdate
|
TMyoClassifierEvent 型の IClassifier イベント データです。 | ||||
Myo EMG Data Service | OnEMGData0Update
|
TMyoEMGData 型の EMG データ 0 です。 | ||||
OnEMGData1Update
|
TMyoEMGData 型の EMG データ 1 です。 | |||||
OnEMGData2Update
|
TMyoEMGData 型の EMG データ 2 です。 | |||||
OnEMGData3Update
|
TMyoEMGData 型の EMG データ 3 です。 | |||||
Myo IMU Data Service | OnIMUDataUpdate
|
TIMUDataService 型の IMU データです。 | ||||
Myo Info Service | Command
|
TMyoCommand 型のコマンドを書き込みます。 | ||||
FirmwareVersion
|
OnFirmwareVersionUpdate
|
TMyoFirmwareVersion 型のファームウェア バージョンを読み取ります。 | ||||
Info
|
OnInfoUpdate
|
TMyoInfoService 型の Myo 情報を読み取ります。 |
カスタム データ型
Myo アームバンドでは、次のユニットにカスタム データ型が定義されています。
- Iot.Device.MyoTypes
Myo アームバンド EMG データ
TMyoEMGData
レコードには、EMG データ キャラクタリスティックのバイト配列が含まれます。
Myo アームバンド HW ポーズ
TMyoHWPose
は、サポートされているポーズを列挙したもので、Rest
、Fist
、WaveIn
、WaveOut
、FingersSpread
、DoubleTap
、Unknown = $FFFF
が含まれます。
Myo アームバンド アクティブ分類子種別
TMyoActiveClassifierType
は、有効な Myo 分類子モデル種別を列挙したもので、Builtin
、Custom
が含まれます。
Myo アームバンド ストリーム ソース指示
TMyoStreamIndicatingSource
は、有効な Myo データ ストリーム ソースを列挙したもので、BLE
、OtherSource
が含まれます。
Myo アームバンド SKU 値
TMyoSKUValue
は、既知の Myo SKU を列挙したもので、BlackMyo
、WhiteMyo
、Unknown
が含まれます。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
。
- パラメータ: TBytes 型の
- 2 番目のオーバーロード メソッド: 1 つのパラメータを使用する Myo コマンドのコンストラクタ。
- パラメータ: コマンド種別を示す
ACommand
。
- パラメータ: コマンド種別を示す
- 3 番目のオーバーロード メソッド: Myo モード設定コマンドのコンストラクタ。
- 4 番目のオーバーロード メソッド: 2 つのパラメータを使用する Myo コマンドのコンストラクタ。
- パラメータ: コマンド種別を示す
ACommand
、整数型のAData
。
- パラメータ: コマンド種別を示す
- 5 番目のオーバーロード メソッド: Myo 拡張バイブレーション コマンドのコンストラクタ。
- パラメータ: コマンド種別を示す
ACommand
、
- パラメータ: コマンド種別を示す
- 1 番目のオーバーロード メソッド: デバイスから受信したバイト配列を使用して
継続時間を UInt16 で示す ADuration
、強さを UInt8 で示す AStrength
。
Value
: デバイスから受信された未加工のバイト配列。CommandType
: コマンド種別を返します。PayloadSize
: コマンド種別とサイズ用バイト自体を除いたコマンドのペイロード サイズ(UInt8)を返します。EMGMode
: EMG モードを返します。IMUMode
: IMU モードを返します。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 = 1
、ArmUnsynced
、Pose
、Unlocked
、Locked
、SyncFailed
が含まれます。
Myo アームバンド アーム
TMyoArm
は、腕を特定するための使用可能な値を列挙したもので、Right = 1
、Left
、Unknown = $FF
が含まれます。
Myo アームバンド X 軸方向
TMyoXDirection
は、ユーザーの腕に対する Myo X 軸の使用可能な方向を列挙したもので、TowardsWrist = 1
、TowardsElbow
、Unknown = $FF
が含まれます。
Myo アームバンド同期結果
TMyoSyncResult
は、ユーザーが同期ジェスチャを試みたときの考え得る結果を列挙したもので、Unknown
、SyncFailedTooHard
が含まれます。
Myo アームバンド分類子イベント
TMyoClassifierEvent
レコードには、分類子イベント データのバイト配列が含まれます。
Create
: デバイスから受信したバイト配列を使用してTMyoClassifierEvent
のインスタンスを初期化します。Value
: デバイスから受信された未加工のバイト配列。EventType
: 分類子イベント種別を返します。Arm
: ユーザーの腕を返します。XDirection
: ユーザーの腕に対する Myo X 軸の方向を示す Myo X 軸方向を返します。Pose
: ロック解除のポーズを返します。SyncResult
: ユーザーが同期ジェスチャを試みたときの結果を示す同期結果を返します。
デバイスの詳細
- デバイス:
Myo アームバンド
- モデル:
MYO
- 使用技術: Bluetooth LE
既知の問題
- Myo アームバンド デバイスは、Windows マシンとペアにすることはできません。アプリケーションのターゲット プラットフォームが 32 ビット Windows か 64 ビット Windows の場合は、Myo アームバンドとペアにすることはできません。
デバイス固有の情報
Myo アームバンドでは、接続時および再接続時に毎回、キャラクタリスティックの読み取りを有効化/無効化する必要があります。これは省電力動作のためです。このデバイスでは 3 つの主なキャラクタリスティックをサポートしています。
- IMUData: 動きのデータ
- ClassiffierEvent: ポーズのデータ(手と手首のジェスチャ)
- 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));