robot description · reference spec

Robot Model & Joint Map

The joint ordering, the joint_id → leg mapping, and the full robot model description. One numbering, used everywhere: firmware, telemetry, URDF, sim, dashboard, docs.

W/S fwd·back · Q/E strafe · A/D turn, drag to orbit · scroll to zoom
LOADING LIMIT

Joint map

The joint ordering and naming on this page is the reference. Every consumer uses exactly this table.

Joint ordering rules

Twelve joints, IDs 1–12. The ID is a deterministic index derived from a fixed two-level rule:

Master joint map

joint_idJoint nameLegJointMotion
1lf_hipLeft Fronthipupper swing, sagittal plane
2lf_upperLeft Frontupperupper → lower bend
3lf_lowerLeft Frontlowerlower → foot pitch
4rf_hipRight Fronthipupper swing, sagittal plane
5rf_upperRight Frontupperupper → lower bend
6rf_lowerRight Frontlowerlower → foot pitch
7lr_hipLeft Rearhipupper swing, sagittal plane
8lr_upperLeft Rearupperupper → lower bend
9lr_lowerLeft Rearlowerlower → foot pitch
10rr_hipRight Rearhipupper swing, sagittal plane
11rr_upperRight Rearupperupper → lower bend
12rr_lowerRight Rearlowerlower → foot pitch

Name grammar

Joint names are always {leg}_{joint}:

Body frame

AxisDirection
+xforward (nose)
+yright (left side is −y)
+zup

Hip origins & foot rest positions

Hip joint origin in base_link (m): directly above the foot rest position:

LegHip xHip yFoot z (rest)
Left Front0.130−0.105−0.185 m (−185 mm)
Right Front0.130+0.105−0.185 m
Left Rear0.240−0.105−0.185 m
Right Rear0.240+0.105−0.185 m

Foot rest positions, body frame (mm): Left Front (130, −105, −185) · Right Front (130, +105, −185) · Left Rear (240, −105, −185) · Right Rear (240, +105, −185).

Per-joint kinematics

ParameterValueStatus
L1 (hip → upper, upper)0.100 mcurrent estimate: split of the 185 mm rest reach
L2 (upper → lower, lower)0.085 mcurrent estimate: L1 + L2 = 0.185 m matches documented foot drop
Lower → footfixed joint, not actuatedthe chain is hip → upper → lower → foot
Joint axes(0, 1, 0) all legsper the body frame above

Limits / effort / velocity per joint type (same for all four legs):

JointLimit (rad)Limit (°)Max effortMax velocity
hip±1.20±68.8°10 N·m10 rad/s
upper±1.57±89.9°10 N·m10 rad/s
lower±0.60±34.4°5 N·m10 rad/s

Telemetry wire mapping

Commands (JointTarget) and samples (JointSample) both address joints by the joint_id from the master map above. There is no second numbering.

FieldTypeMeaning
id / joint_iduint1–12, decoded per the master map (lf_hip … rr_lower)
pos / pos_radfloattarget/actual angle, rad, zero pose per body frame
vel / vel_radsfloattarget/actual angular velocity, rad/s
kp, kdfloatPD gains
max_tqfloatper-joint torque clamp, N·m
tq_nnm, cur_a, temp_c, flags, fault_coden/asample-side telemetry (50 Hz)

Gait pairing (trot)

Trot drives the two diagonal leg pairs in alternation: