kind: "humanoid" with one part per
limb. Each part carries the data your robot logs: joint angles, a wrist pose, hand contact forces,
ankle force-torque. This example is a humanoid with 7-DoF arms, 6-DoF hands with fingertip force
sensors, 6-DoF legs with ankle force-torque sensors, a 3-DoF waist and a 2-DoF neck, recorded
while it carries a mug to a sink.
Channels
Overlay
overlay.json
Notes
Body pose. The pelvis pose goes on its ownfoxglove.PoseInFrame channel (/body/pose) in a
static, z-up world frame, and is not declared in the overlay. The wrist poses use the same
world frame. If your robot logs poses in its pelvis frame, transform them to the world frame in
your converter, using the pelvis pose.
Hands on arms. The hands here have no end_pose of their own: a hand is paired with the arm of
the same side (left_hand with left_arm), whose end_pose is the wrist. Give a hand its own
end_pose only when it is not rigidly attached to that wrist pose.
Joint vectors. One vector signal per part, with names in exactly the vector’s order. Prefer
measured joint positions; publish commanded positions, velocities and motor torques as further
signals under any name.
Forces. The hands use the contact-force form (unit N, one value per fingertip). The ankles
use the single-wrench form (dim 6, components fx … tz): it carries newtons and newton-metres
together, so the unit is stated in note rather than unit. Tactile hands with a full wrench per
fingertip use the per-contact wrench form.