モーター設定
モーターの設定値(レジスタ)に関するコマンド一覧です
byte[0] | Command Name | 説明 |
---|---|---|
0x02 | maxSpeed | 最大速さを設定する |
0x03 | minSpeed | 最小速さを設定する |
0x05 | curveType | 加減速曲線を設定する |
0x07 | acc | 加速度を設定する |
0x08 | dec | 減速度を設定する |
0x0E | maxTorque | 最大トルクを設定する |
0x18 | qCurrentP | q軸電流PIDゲイン(P)を設定する |
0x19 | qCurrentI | q軸電流PIDゲイン(I)を設定する |
0x1A | qCurrentD | q軸電流PIDゲイン(D)を設定する |
0x1B | speedP | 速度PIDゲイン(P)を設定する |
0x1C | speedI | 速度PIDゲイン(I)を設定する |
0x1D | speedD | 速度PIDゲイン(D)を設定する |
0x1E | positionP | 位置PIDゲイン(P)を設定する |
0x22 | resetPID | PIDゲインをリセットする |
0x2E | interface | 測定値を出力するインターフェイスを決定する |
0x3A | ownColor | デバイスLEDの固有色を設定する |
0x40 | readRegister | 指定の設定値を取得する |
0x41 | saveAllRegisters | 全ての設定値をフラッシュに保存する |
0x4E | resetRegister | 指定の設定値をリセットする |
0x4F | resetAllRegisters | 全設定値をリセットする |
モーターの最大速さを設定する
byte | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] |
---|---|---|---|---|---|---|---|---|---|
値 | 0x02 | uint16_t identifier | float maxSpeed | uint16_t crc16 | |||||
説明 | コマンド | タスク管理用ID | 最大速さ [radian / second] (正の値) |
巡回冗長検査 (データ誤り検出用) |
モーターの最小速さを設定する
byte | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] |
---|---|---|---|---|---|---|---|---|---|
値 | 0x03 | uint16_t identifier | float minSpeed | uint16_t crc16 | |||||
説明 | コマンド | タスク管理用ID | 最小速さ [radian / second] (正の値) |
巡回冗長検査 (データ誤り検出用) |
加減速曲線を指定する
(モーションコントロールの設定)
byte | [0] | [1] | [2] | [3] | [4] | [5] |
---|---|---|---|---|---|---|
値 | 0x05 | uint16_t identifier | uint8_t curveType | uint16_t crc16 | ||
説明 | コマンド | タスク管理用ID | 加減速曲線 (下記) |
巡回冗長検査 (データ誤り検出用) |
typedef enum curveType =
{
CURVE_TYPE_NONE = 0, // モーションコントロール OFF
CURVE_TYPE_TRAPEZOID = 1, // モーションコントロール ON (台形加減速)
}
CURVE_TYPE_TRAPEZOID を選択すると、台形加減速によるモーションコントロールが ON になります。
モーターの加速度を設定する
byte | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] |
---|---|---|---|---|---|---|---|---|---|
値 | 0x07 | uint16_t identifier | float acc | uint16_t crc16 | |||||
説明 | コマンド | タスク管理用ID | 加速度 [radian / second^2] (正の値) |
巡回冗長検査 (データ誤り検出用) |
(加速時の直線の傾き)
モーターの減速度を設定する
byte | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] |
---|---|---|---|---|---|---|---|---|---|
値 | 0x08 | uint16_t identifier | float dec | uint16_t crc16 | |||||
説明 | コマンド | タスク管理用ID | 減速度 [radian / second^2] (正の値) |
巡回冗長検査 (データ誤り検出用) |
(減速時の直線の傾き)
モーターの最大トルク(絶対値)を設定する
byte | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] |
---|---|---|---|---|---|---|---|---|---|
値 | 0x0E | uint16_t identifier | float maxTorque | uint16_t crc16 | |||||
説明 | コマンド | タスク管理用ID | 最大トルク [N*m] (正の値) |
巡回冗長検査 (データ誤り検出用) |
例えば、maxTorque = 0.1 [N*m] の後に runForward (正回転)を行った場合、0.1 N*m を超えないようにその速度をなるだけ維持します。
ただし、トルクの最大値制限により、システムによっては制御性(振動)が悪化する可能性があります。
モーターのq軸電流PIDコントローラのP(比例)ゲインを設定する
byte | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] |
---|---|---|---|---|---|---|---|---|---|
値 | 0x18 | uint16_t identifier | float qCurrentP | uint16_t crc16 | |||||
説明 | コマンド | タスク管理用ID | q電流Pゲイン (正の値) |
巡回冗長検査 (データ誤り検出用) |
モーターのq軸電流PIDコントローラのI(積分)ゲインを設定する
byte | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] |
---|---|---|---|---|---|---|---|---|---|
値 | 0x19 | uint16_t identifier | float qCurrentI | uint16_t crc16 | |||||
説明 | コマンド | タスク管理用ID | q電流Iゲイン (正の値) |
巡回冗長検査 (データ誤り検出用) |
モーターのq軸電流PIDコントローラのD(微分)ゲインを設定する
byte | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] |
---|---|---|---|---|---|---|---|---|---|
値 | 0x1A | uint16_t identifier | float qCurrentD | uint16_t crc16 | |||||
説明 | コマンド | タスク管理用ID | q電流Dゲイン (正の値) |
巡回冗長検査 (データ誤り検出用) |
モーターの速度PIDコントローラのP(比例)ゲインを設定する
byte | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] |
---|---|---|---|---|---|---|---|---|---|
値 | 0x1B | uint16_t identifier | float speedP | uint16_t crc16 | |||||
説明 | コマンド | タスク管理用ID | 速度Pゲイン (正の値) |
巡回冗長検査 (データ誤り検出用) |
モーターの速度PIDコントローラのI(積分)ゲインを設定する
byte | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] |
---|---|---|---|---|---|---|---|---|---|
値 | 0x1C | uint16_t identifier | float speedI | uint16_t crc16 | |||||
説明 | コマンド | タスク管理用ID | 速度Iゲイン (正の値) |
巡回冗長検査 (データ誤り検出用) |
モーターの速度PIDコントローラのD(微分)ゲインを設定する
byte | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] |
---|---|---|---|---|---|---|---|---|---|
値 | 0x1D | uint16_t identifier | float speedD | uint16_t crc16 | |||||
説明 | コマンド | タスク管理用ID | 速度Dゲイン (正の値) |
巡回冗長検査 (データ誤り検出用) |
モーターの位置PIDコントローラのP(比例)ゲインを設定する
byte | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] |
---|---|---|---|---|---|---|---|---|---|
値 | 0x1E | uint16_t identifier | float positionP | uint16_t crc16 | |||||
説明 | コマンド | タスク管理用ID | 位置Pゲイン (正の値) |
巡回冗長検査 (データ誤り検出用) |
全てのPIDパラメータをリセットしてファームウェアの初期設定に戻す
byte | [0] | [1] | [2] | [3] | [4] |
---|---|---|---|---|---|
値 | 0x22 | uint16_t identifier | uint16_t crc16 | ||
説明 | コマンド | タスク管理用ID | 巡回冗長検査 (データ誤り検出用) |
モーターを制御するインターフェイス(通信経路)を設定する。
本コマンドは、KM-1 のファームウェア ver 1.18 以降より対応となります。
byte | [0] | [1] | [2] | [3] | [4] | [5] | |
---|---|---|---|---|---|---|---|
値 | 0x2E | uint16_t identifier | uint16_t flag | uint16_t crc16 | |||
説明 | コマンド | タスク管理用ID | ビットフラグ | 巡回冗長検査 (データ誤り検出用) |
saveAllRegsitersコマンドを実行しない限り、設定はフラッシュに保存されません。
インターフェイスを設定すると、以下の優先順により、測定値(モーター測定値、IMU測定値)が出力される経路が決まります。(デフォルトではBLE(無線))
(優先度:高)BLE > USB > I2C(優先度:低)
従って、USBからモーター測定値を出力する場合、BLEを OFF(0) にして、USBを ON(1)にする必要があります。
(例)0b10001000 にした場合、物理ボタン有効、I2C無効、USB有効、BLE無効 となる。測定値は USBから出力される。
bit7 | 物理ボタン(3つ) |
---|---|
bit6 | - |
bit5 | - |
bit4 | I2C(有線) |
bit3 | USB(有線) |
bit2 | - |
bit1 | - |
bit0 | BLE(無線) |
モーターの固有LEDカラーを設定する
byte | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] |
---|---|---|---|---|---|---|---|---|
値 | 0x3A | uint16_t identifier | uint8_t red | uint8_t green | uint8_t blue | uint16_t crc16 | ||
説明 | コマンド | タスク管理用ID | red color 0-255 |
green color 0-255 |
blue color 0-255 |
巡回冗長検査 (データ誤り検出用) |
指定した設定値を読み込む
byte | [0] | [1] | [2] | [3] | [4] | [5] |
---|---|---|---|---|---|---|
値 | 0x40 | uint16_t identifier | uint8_t register | uint16_t crc16 | ||
説明 | コマンド | タスク管理用ID | レジスタ
(コマンドと同じ) |
巡回冗長検査 (データ誤り検出用) |
有線通信では本コマンドは未実装です。BLEに加えて、KM-1 ファームウェア ver 1.75 以降にて、有線USB, 有線I2C での本コマンド対応済みです。
BLEからのコマンドでは、motorSetting キャラクタリスティクスに次の形式で値が返却されます。有線(USB・I2C)では、所定のデータ構造にて値が返却されます。
レジスタはコマンドのbyte[0]の値を入れて下さい
byte | [0] | [1] | [2] | [3] | [4]...[n-3] | [n-2] | [n-1] |
---|---|---|---|---|---|---|---|
値 | 0x40 | uint16_t identifier | uint8_t register | value | uint16_t crc16 | ||
説明 | 0x40 | タスク管理用ID | レジスタ | レジスタの値 | 巡回冗長検査 (データ誤り検出用) |
全ての設定値をフラッシュメモリに保存する
byte | [0] | [1] | [2] | [3] | [4] |
---|---|---|---|---|---|
値 | 0x41 | uint16_t identifier | uint16_t crc16 | ||
説明 | コマンド | タスク管理用ID | 巡回冗長検査 (データ誤り検出用) |
指定したレジスタをファームウェアの初期値にリセットする
byte | [0] | [1] | [2] | [3] | [4] | [5] |
---|---|---|---|---|---|---|
値 | 0x4E | uint16_t identifier | uint8_t register | uint16_t crc16 | ||
説明 | コマンド | タスク管理用ID | レジスタ | 巡回冗長検査 (データ誤り検出用) |
全てのレジスタをファームウェアの初期値にリセットする
byte | [0] | [1] | [2] | [3] | [4] |
---|---|---|---|---|---|
値 | 0x4F | uint16_t identifier | uint16_t crc16 | ||
説明 | コマンド | タスク管理用ID | 巡回冗長検査 (データ誤り検出用) |