Skip to main content

Config Reference

Complete reference for all configurable fields.

Top-Level Fields

FieldDescriptionDefault
policy_hzPolicy inference frequency50
pd_hzPD control frequency (simulation only)200
viewersViewer set: mocap, retarget, sim2sim, all, nonesim2sim
realtimeRate-limit to wall clockfalse
num_stepsNumber of steps; 0 = infinite0
transition_durationSmooth transition time (seconds) from current pose to retarget command-
playback.pause_on_endPause at last frame when offline motion endsfalse
playback.keyboard.enabledEnable keyboard control for offline playbackfalse

Robot

FieldDescriptionDefault
robot.num_actionsJoint action dimension29
robot.xml_pathMuJoCo XML path-
robot.kps / robot.kdsPD gains-
robot.default_anglesDefault standing pose-
robot.torque_limitsJoint torque limits-

Controller

FieldDescriptionDefault
controller.policy_pathRequired. Path to ONNX policy file-
controller.deviceInference device: cpu / auto / cuda:Ncpu
controller.action_scaleAction scaling factor-
controller.clip_rangeAction clipping range-
controller.default_dof_posJoint angle offset base-

Input

Offline BVH

FieldDescription
input.bvh_fileRequired. Path to BVH file
input.bvh_formatlafan1 / hc_mocap
input.human_formatHuman skeleton format

BVH input does not set input.provider — it is inferred from the config group name.

Pico 4

FieldDescriptionDefault
input.providerpico4pico4
input.pico4_timeoutWait timeout in seconds60
input.pico4_buffer_sizeFrame buffer size60
input.pause_buttonButton for pause/resumeA
input.pause_debounce_sDebounce time for pause button0.25

ZMQ Pico 4 (Onboard)

FieldDescriptionDefault
input.providerzmq_pico4zmq_pico4
input.zmq_hostIP of the PC running ZMQ publisher192.168.1.100
input.zmq_portZMQ PUB port5555
input.zmq_topicZMQ topicpico4
input.zmq_timeoutWait timeout for first ZMQ frame (seconds)30

Realtime

FieldDescription
retarget_buffer_enabledEnable retarget buffering
retarget_buffer_window_sBuffer window size
retarget_buffer_delay_sBuffer delay
reference_stepsReference window steps
realtime_buffer_warmup_stepsWarmup before playback
realtime_buffer_low_watermark_stepsLow watermark
realtime_buffer_high_watermark_stepsHigh watermark
reference_velocity_smoothing_alphaVelocity smoothing
reference_anchor_velocity_smoothing_alphaAnchor velocity smoothing

Sim2Real

Fields used by sim2real configs (sim2real.yaml, pico4_sim2real.yaml, onboard_sim2real.yaml).

Safety

FieldDescriptionDefault
startup_ramp_durationSeconds to smoothly blend from locked to policy positions2.0
joint_vel_limitJoint velocity limit (rad/s); triggers emergency damping if exceeded10.0
mocap_switch.check_framesConsecutive valid frames required before switching to MOCAP10
mocap_switch.max_position_valuePosition sanity threshold in meters5.0

Real Robot

FieldDescriptionDefault
real_robot.network_interfaceNetwork interface for DDS communicationeth0
real_robot.kp_realReal-robot proportional gains (per joint)-
real_robot.kd_realReal-robot derivative gains (per joint)-
real_robot.kd_dampingDamping mode kd8.0
real_robot.control_modeAnkle control mode (PR = Pitch-Roll)PR
real_robot.joint_pos_lowerJoint position lower limits (rad)-
real_robot.joint_pos_upperJoint position upper limits (rad)-

Pause/Resume (Pico sim2real)

FieldDescriptionDefault
pause_resume_transition_durationSeconds to blend from paused pose back to live mocap1.0
pause_resume_warmup_stepsMocap frames to accumulate before resuming2
pause_reset_alignment_on_resumeRebuild yaw/pivot alignment after pausetrue

Realtime Catch-up (Pico sim2real / Onboard)

FieldDescriptionDefault
realtime_catchup_enabledEnable catch-up when buffer grows too largetrue
realtime_catchup_trigger_stepsBuffer depth that triggers catch-up6
realtime_catchup_release_stepsBuffer depth to release catch-up3
realtime_catchup_target_delay_sTarget delay for catch-up0.04
reference_qpos_smoothing_alphaJoint position smoothing (1.0 = no smoothing)0.4

Critical: default_dof_pos

The RL policy outputs action offsets relative to the default standing pose, not absolute joint angles:

target_dof_pos = clip(action, low, high) * action_scale + default_dof_pos

Therefore:

  • default_dof_pos must align with robot.default_angles
  • Missing this offset causes the robot to fall immediately

TeleopPipeline automatically passes robot.default_angles to the controller's default_dof_pos during initialization. Understanding this chain is important when writing custom entry points or tests.