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, camera, all, none. all opens mocap, retarget, and sim2sim; add camera explicitly.sim2sim
realtimeRate-limit to wall clockfalse
num_stepsNumber of steps; 0 = infinite0
transition_durationSmooth transition time (seconds) from current pose to retarget command-
keyboard.enabledEnable realtime keyboard mode control for sim2simfalse
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-
d435i_rgbFixed RGB camera in the G1 MJCF; use viewers=[sim2sim,camera] to display it-
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.human_formatRetarget skeleton formatpico_bridge
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
input.bridge_hostTeleopit host receiver bind host0.0.0.0
input.bridge_portTeleopit host receiver TCP/UDP port63901
input.bridge_discoveryEnable pico-bridge discovery advertisingtrue
input.bridge_advertise_ipOptional advertised host IP overridenull
input.bridge_start_timeoutTimeout while starting the bridge10.0
input.bridge_history_sizePico frame history retained by the bridge120
input.video.enabledStream host camera preview back to Pico through pico-bridge 0.2.0false
input.video.sourceVideo source: mujoco, realsense, or test-patternnull
input.video.width / height / fpsVideo capture/render settings1280 / 720 / 30
input.video.deviceOptional RealSense serialnull
input.video.fail_on_errorFail startup instead of disabling video on errorfalse

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).

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 Unitree DDS communication. For wired PC-to-G1 control, find the cable interface with ifconfig and set that name, for example enp130s0; for onboard robot execution, eth0 is usually correct.eth0
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_durationResume blend duration for offline playback; realtime Pico resume uses live tracking re-centering1.0
pause_resume_warmup_stepsRealtime mocap frames to collect before tracking resumes2

Realtime Pico resume re-centers heading and ground-plane position before tracking continues. Operators should keep still and stay as close as practical to the paused pose to reduce sudden reference changes.

Realtime Catch-up (Pico sim2real)

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.