Open MasatoKubotera opened 1 year ago
コマンド体系(データ構造・フォーマット)
シングルボードコンピュータからの送信フォーマット
byte | item | contents |
---|---|---|
1 | header | 0xFE |
1 | header | 0xFE |
1 | command | - |
2 | CRC16 | CRC16 from header to command |
IMUからの応答フォーマット例
byte | item | contents |
---|---|---|
1 | header | 0xFE |
1 | header | 0xFE |
1 | command | Same Command as sent Command |
1 | packet length | Length from header to CRC16 |
1 | error | - |
n | data | - |
2 | CRC16 | CRC16 from header to command |
参考: PMX https://www.kondokagaku.jp/wp_mn/archives/1144#i-16 DYNAMIXEL Communiation Protocol 2.0 https://www.besttechnology.co.jp/modules/knowledge/?DYNAMIXEL%20Communiation%20Protocol%202.0#f7c5cc11
コマンド
command | type | response | process |
---|---|---|---|
0xa0 | read | 【float*7】acceleration (x, y, z), gyro (x, y, z), temperature | |
0xa1 | read | 【float*3】acceleration (x, y, z) | |
0xa2 | read | 【float*3】gyro (x, y, z) | |
0xa3 | read | 【float*1】temperature | |
0xa4 | read | 【float*3】estimated 3-axis gyro bias [dps] | Estimates the gyro bias and reads it. The bias is not updated. |
0xa5 | read | 【float*3】 3-axis gyro bias [dps] in non-volatile flash memory | Reads gyro bias stored in non-volatile flash memory. |
0xa6 | read | 【float*3】Currently adapted 3-axis gyro bias [dps] | Reads currently adapted gyro bias. |
0xb0 | setting | 【float*3】estimated 3-axis gyro bias [dps] | Estimates the gyro bias, adapt the estimated bias, store it in non-volatile flash memory |
0xc0 | setting | restarts communication with the ICM42688 | |
0xd0 | read | 【uint8_t*1】firmware version |
CRC16の計算
KONDO PMXシリーズに準拠 https://kondo-robot.com/faq/pmx-library-for-python
メモ:シングルボードコンピュータ側から指定したジャイロバイアス値を適応し使用のみ,およびArduino側のストレージに保存ができるようにする.
※常用コマンドではなく,完全なオプションとして使用することが前提
@AD58-3104 マスタースレーブの方で,IMUモジュールと接続するときに,ファームウェアバージョンの確認とバイアスオフセットが0ではないことを確認してください.
現状のコマンドおよびパケット構成
0xA0: 加速度,ジャイロ,温度取得 0xA1: 加速度取得 0xA2: ジャイロ取得 0xA3: 温度取得 0xA4: 新規推定バイアス取得 0xA5: 保存済みバイアス取得 0xA6: 適応済みバイアス取得
0xB0: ジャイロバイアス更新
0xC0: ファームウェアバージョン取得
エラー
受信パケットのCRCエラー:エラーステータス0xA0
0xA or 0xB
0xA0: データ(加速度x,加速度y,加速度z,ジャイロx,ジャイロy,ジャイロz,温度) 0xA1: データ(加速度x,加速度y,加速度z) 0xA2: データ(ジャイロx,ジャイロy,ジャイロz) 0xA3: データ(温度) 0xA4: データ(ジャイロバイアスx,ジャイロバイアスy,ジャイロバイアスz) 0xA5: データ(ジャイロバイアスx,ジャイロバイアスy,ジャイロバイアスz) 0xA6: データ(ジャイロバイアスx,ジャイロバイアスy,ジャイロバイアスz)
0xB0: データ(ジャイロバイアスx,ジャイロバイアスy,ジャイロバイアスz)
0xC*
0xC0: データ(ファームウェアバージョン)
パケット時期更新内容
ファームウェアを更新(Firmware vasion: 0x01):https://github.com/SUSTAINA-OP/IMU-Measurement-and-Transmission-Module/commit/06d19eb41482d779a32754acb59068a29abd6d34
マスターからのデータ送信,エラーステータスを実装.
従来のファームウェア(Firmware vasion: 0x00)とは互換性がないので要注意.
Command | Command description | Txdata on the master side | Packet Configuration | Txpacket length | Processing on the Slave Side | Txdata on the Slave Side | Packet Configuration | Txpacket length |
---|---|---|---|---|---|---|---|---|
0xA0 | gets the estimated 3-axis accel, 3-axis gyro, temp | - | master-01 | 6 | reads the most current data from IMU | 3-axis accel, 3-axis gyro, temp | 35 | slave-01 |
0xA1 | gets the estimated 3-axis accel | - | master-01 | 6 | reads the most current data from IMU | 3-axis accel | 19 | slave-01 |
0xA2 | gets the estimated 3-axis gyro | - | master-01 | 6 | reads the most current data from IMU | 3-axis gyro | 19 | slave-01 |
0xA3 | gets the estimated 3-axis temp | - | master-01 | 6 | reads the most current data from IMU | temp | 11 | slave-01 |
0xA4 | gets the estimated 3-axis gyro-bias | - | master-01 | 6 | estimates the gyro biases | 3-axis gyro-bias | 19 | slave-01 |
0xA5 | gets the stored 3-axis gyro-bias in flash storage | - | master-01 | 6 | - | 3-axis gyro-bias | 19 | slave-01 |
0xA6 | gets the adapted 3-axis gyro-bias | - | master-01 | 6 | - | 3-axis gyro-bias | 19 | slave-01 |
0xB0 | estimates and adapts to 3-axis gyro-bias | - | master-01 | 6 | estimates and adapts to gyro biases | 3-axis gyro-bias | 19 | slave-01 |
0xB1 | adapts the specified 3-axis gyro-bias and store it in flash storage | 3-axis gyro-bias | master-02 | 18 | adapt the specified 3-axis gyro-bias and store it in flash storage | 3-axis gyro-bias | 19 | slave-01 |
0xB2 | adapts the specified 3-axis gyro-bias | 3-axis gyro-bias | master-02 | 18 | adapt the specified 3-axis gyro-bias | 3-axis gyro-bias | 19 | slave-01 |
0xD0 | gets the firmware version | - | master-01 | 6 | - | firmware-version | 8 | slave-02 |
Bit | Error Description | Details |
---|---|---|
0 | - | - |
1 | CRC error | CRC calculation result not match the received CRC |
2 | IMU connection error | IMU is not connected. |
3 | IMU response error | response error in estimating |
4 | unsupported command error | process corresponding to the command is not defined |
5 | command processing error | exception error when processing against a command |
6 | - | - |
7 | - | - |
The units for sensor values are as follows.
Note
シリアルポートを開くとArduino側で初期化処理が入る. そのため,Arduno内部でも最低1500 msの処理時間が発生する.
ファームウェア Ver. 1をリリースしました. https://github.com/SUSTAINA-OP/IMU-Measurement-and-Transmission-Module/releases/tag/ver.1
バイアスは,ArduinoボードのFlashStorageに書き込む方法とコンピュータボードに保管されたバイアスをArduinoボードに送信し使用する方法がある.
SoMとの通信は,現状特定の文字(1byte)に応じて応答する.
応答の種類は,現時点(2023/10/19)時点で以下の通りである. 送信文字:'B' or 'b' - biasの設定 送信文字:'T' or 't' - biasおよび温度の取得 送信文字:その他 - 加速度,ジャイロ,温度の取得
上記の構成を,ヘッダおよびチェックサムを含めた,アクチュエータに似たコマンド体系にする.
このときに,特定のコマンドに対してはセンサ取得を挟まずになにか返すようにする(例:バージョンの応答など)