HumansXドキュメントセンター English公式サイトへ ↗

制御システム構成

フルスタックのオープンアーキテクチャを採用しています。

  • CAN FD ベースのモーター制御・デバッグインターフェース
  • MuJoCo ベースのシミュレーション環境と、URDF / XML などのロボットリソース
  • ROS 2 ベースのハードウェア管理ノード。制御ポリシーをシミュレーションと実機にそのまま展開可能
  • 強化学習による運動制御のトレーニング例

ソフトウェア構成

制御ポリシー(強化学習など)
ROS 2 ノード(ハードウェア管理:モーター / PCIe)
ユーザー定義ミドルウェア(任意)
シミュレーター(MuJoCo)
ロボット実機
モーター:CAN FD / MIT 制御、各種センサー

CAN バス構成

31 基の関節モーターは 5 本の CAN FD バスに分かれ、各バスが一つの部位に対応します。

バスインターフェース部位モーター数
0CANFD_0腰・首5
1CANFD_1左脚6
2CANFD_2右脚6
3CANFD_3左腕7
4CANFD_4右腕7

関節インデックスと CAN ID

  • 関節インデックスは制御プログラムの関節 / モーター配列の番号で、全身通しで 0 から始まります。
  • CAN ID は各バス上のモーターアドレスで、バスごとに 1 から始まります。
関節インデックス関節名CAN バスCAN ID
0waist_y_joint01
1waist_x_joint02
2waist_z_joint03
3l_hip_y_joint11
4l_hip_x_joint12
5l_hip_z_joint13
6l_knee_y_joint14
7l_ankle_y_joint15
8l_ankle_x_joint16
9r_hip_y_joint21
10r_hip_x_joint22
11r_hip_z_joint23
12r_knee_y_joint24
13r_ankle_y_joint25
14r_ankle_x_joint26
15l_shoulder_y_joint31
16l_shoulder_x_joint32
17l_shoulder_z_joint33
18l_elbow_y_joint34
19l_wrist_x_joint35
20l_wrist_y_joint36
21l_wrist_z_joint37
22r_shoulder_y_joint41
23r_shoulder_x_joint42
24r_shoulder_z_joint43
25r_elbow_y_joint44
26r_wrist_x_joint45
27r_wrist_y_joint46
28r_wrist_z_joint47
29neck_z_joint04
30neck_y_joint05

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 ノードを再起動してください。