制御システム構成
フルスタックのオープンアーキテクチャを採用しています。
- CAN FD ベースのモーター制御・デバッグインターフェース
- MuJoCo ベースのシミュレーション環境と、URDF / XML などのロボットリソース
- ROS 2 ベースのハードウェア管理ノード。制御ポリシーをシミュレーションと実機にそのまま展開可能
- 強化学習による運動制御のトレーニング例
ソフトウェア構成
制御ポリシー(強化学習など)
ROS 2 ノード(ハードウェア管理:モーター / PCIe)
ユーザー定義ミドルウェア(任意)
シミュレーター(MuJoCo)
ロボット実機
モーター:CAN FD / MIT 制御、各種センサー
CAN バス構成
31 基の関節モーターは 5 本の CAN FD バスに分かれ、各バスが一つの部位に対応します。
| バス | インターフェース | 部位 | モーター数 |
|---|---|---|---|
| 0 | CANFD_0 | 腰・首 | 5 |
| 1 | CANFD_1 | 左脚 | 6 |
| 2 | CANFD_2 | 右脚 | 6 |
| 3 | CANFD_3 | 左腕 | 7 |
| 4 | CANFD_4 | 右腕 | 7 |
関節インデックスと CAN ID
- 関節インデックスは制御プログラムの関節 / モーター配列の番号で、全身通しで 0 から始まります。
- CAN ID は各バス上のモーターアドレスで、バスごとに 1 から始まります。
| 関節インデックス | 関節名 | CAN バス | CAN ID |
|---|---|---|---|
| 0 | waist_y_joint | 0 | 1 |
| 1 | waist_x_joint | 0 | 2 |
| 2 | waist_z_joint | 0 | 3 |
| 3 | l_hip_y_joint | 1 | 1 |
| 4 | l_hip_x_joint | 1 | 2 |
| 5 | l_hip_z_joint | 1 | 3 |
| 6 | l_knee_y_joint | 1 | 4 |
| 7 | l_ankle_y_joint | 1 | 5 |
| 8 | l_ankle_x_joint | 1 | 6 |
| 9 | r_hip_y_joint | 2 | 1 |
| 10 | r_hip_x_joint | 2 | 2 |
| 11 | r_hip_z_joint | 2 | 3 |
| 12 | r_knee_y_joint | 2 | 4 |
| 13 | r_ankle_y_joint | 2 | 5 |
| 14 | r_ankle_x_joint | 2 | 6 |
| 15 | l_shoulder_y_joint | 3 | 1 |
| 16 | l_shoulder_x_joint | 3 | 2 |
| 17 | l_shoulder_z_joint | 3 | 3 |
| 18 | l_elbow_y_joint | 3 | 4 |
| 19 | l_wrist_x_joint | 3 | 5 |
| 20 | l_wrist_y_joint | 3 | 6 |
| 21 | l_wrist_z_joint | 3 | 7 |
| 22 | r_shoulder_y_joint | 4 | 1 |
| 23 | r_shoulder_x_joint | 4 | 2 |
| 24 | r_shoulder_z_joint | 4 | 3 |
| 25 | r_elbow_y_joint | 4 | 4 |
| 26 | r_wrist_x_joint | 4 | 5 |
| 27 | r_wrist_y_joint | 4 | 6 |
| 28 | r_wrist_z_joint | 4 | 7 |
| 29 | neck_z_joint | 0 | 4 |
| 30 | neck_y_joint | 0 | 5 |
ROS 2 Domain ID
制御システムは ROS 2(DDS)上に構築されています。同じ Domain ID のノード同士は通信でき、異なる Domain ID のノードは分離されます。同一ネットワークに複数台のロボットやデバッグ用 PC がある場合は、ロボットごとに固有の Domain ID を割り当ててください。
- ゲームパッドで起動した場合:ROS_DOMAIN_ID = 世代番号 × 10 + 機体シリアル番号。Elf3 は第 3 世代のため 30 + シリアル番号(例:elf3-15 → 45)。
- アプリで起動した場合:ROS_DOMAIN_ID は 22 に固定。
- 設定は環境変数
export ROS_DOMAIN_ID=<値>で行い、起動時に自動適用する場合は~/.bashrcに追記します。 - 推奨範囲は 0〜101。開発用 PC もロボットと同じ値に設定し、変更後は関連する ROS 2 ノードを再起動してください。
ドキュメント