Configuration Reference
中文版
Configuration sources and precedence
| Entry point | Configuration load order |
|---|
run_web_client.py | conf/client_conf.py defaults → --conf YAML file (default: conf/default_conf.yaml) → runtime load/patch requests from the Web console |
run_server.py | conf/server_conf.py defaults → command-line overrides (--model_type, --model_path, --debug) |
The Web client accepts --host, --port, --conf, and --reload. The YAML file selected by --conf is both the startup configuration and the save target used by the Web console (Setup → Apply / Save As). When saving, .yaml/.yml targets are written as YAML and any other extension as a Python dictionary file.
Only existing leaf keys are updated when a configuration file or patch is applied; unknown keys are ignored. The default file conf/default_conf.yaml is git-ignored: it does not exist in a fresh clone and is created by the first save from the Web console; on startup it is applied only if present. Two legacy key names are migrated automatically on load: inter_chunk.search_length is read as inter_chunk.search_action.search_length, and robots.a2d.* is read as robots.agibot_g1.*.
All durations in the following tables are milliseconds unless another unit is shown explicitly. The panels that expose these parameters in the browser are described in Web Console.
Client root dictionary
get_client_config() contains these top-level sections:
| Key | Description |
|---|
rdm | Real-time observation buffering and inference-loop mode. |
intra_chunk | Processing of actions within one model-generated action chunk. |
inter_chunk | Fusion of the previous and next action chunks. |
controller | Robot-command timing and execution speed. |
robots | Selected robot adapter and adapter-specific settings. |
vla_zmq | VLA inference-server connection and heartbeat settings. |
visualize | WebSocket visualization server and display defaults. |
record | Demonstration, evaluation, and LeRobot dataset recording. |
vision | Observation-frame selection and preprocessing. |
language | Language-task file and automatic subtask switching. |
rdm: real-time data manager
| Key | Type / valid values | Meaning |
|---|
mode | async or sync | Inference/control loop mode. async avoids blocking on every inference result; sync waits for synchronized processing. |
max_len | positive integer | Maximum number of observation frames retained in the buffer. |
observe_fps_window_size | positive integer | Number of most recent captured frames used when estimating observation FPS. |
intra_chunk: action processing inside a chunk
| Key | Type / valid values | Meaning |
|---|
intra_chunk_mode | raw, interpolation, or fitting | Action output mode: use raw actions, interpolate them, or use polynomial fitting. |
filter_window_size | non-negative integer | Half-window used to filter gripper actions; the effective window is 2n+1. |
min_gripper_action_threshold | number | Gripper values below this threshold are treated as fully open (0.0). |
max_gripper_action_threshold | number | Gripper values above this threshold are treated as fully closed (1.0). |
fitting_num_samples | positive integer | Reserved trajectory-sampling setting; the current implementation uses the controller-period time grid instead. |
fitting_deg | non-negative integer | Polynomial degree for fitted trajectories. |
max_joint_fitting_workers | positive integer | Reserved worker setting; the current batch implementation does not create a joint-fitting executor. |
max_gripper_fitting_workers | positive integer | Reserved worker setting; the current batch implementation does not create a gripper-fitting executor. |
max_head_fitting_workers | positive integer | Reserved worker setting; the current batch implementation does not create a head-fitting executor. |
joint_dim | non-negative integer | Number of dual-arm action dimensions processed by this stage. |
gripper_dim | non-negative integer | Number of gripper action dimensions processed by this stage. |
head_dim | non-negative integer | Number of head action dimensions processed by this stage. |
These dimensions must match the selected robot’s action layout and the model output convention.
inter_chunk: fusion between chunks
| Key | Type / valid values | Meaning |
|---|
inter_chunk_mode | search_action, smooth_velocity, min_jerk, or sync | Method used to join consecutive action chunks. |
search_action.search_length | positive integer | Number of future actions inspected while choosing a smooth join. Increase it if the robot visibly pauses at chunk boundaries. |
smooth_velocity.max_vel | positive number | Velocity clamp used by velocity-smoothing fusion. |
smooth_velocity.max_acc | positive number | Acceleration clamp used by velocity-smoothing fusion. |
smooth_velocity.k_p | number | Proportional feedback gain applied to the position error. |
smooth_velocity.k_d | number | Derivative feedback gain applied to the joint velocity. |
smooth_velocity.kf_vel | number | Feedforward gain applied to the target velocity. |
smooth_velocity.kf_acc | number | Feedforward gain applied to the target acceleration. Setting both feedforward gains to 0 degrades the fuser to PD feedback control. |
min_jerk.blend_threshold | number | Threshold controlling when minimum-jerk blending is applied. |
min_jerk.adaptive_factor | number | Adaptive scaling factor for minimum-jerk blending. A negative value keeps the implementation’s automatic behavior. |
sync | mapping | Reserved configuration section for sync mode; currently empty. In sync mode the next action chunk is used directly without blending, and the Web console mode dropdown lists only search_action, smooth_velocity, and min_jerk. |
controller: robot command timing
| Key | Type / unit | Meaning |
|---|
wait_time | number, ms | Delay before the next inference/control iteration. Increase it when command generation causes visible hesitation. |
period | number, ms | Robot command period used by the control timer and trajectory timing. |
speed | positive number | Execution speed relative to teleoperation speed. |
raw_fps | positive number, Hz | Dataset FPS used to train the VLA/WAM model; used as the timing baseline. |
gripper_offset | integer, frames | Forward offset for stepwise gripper commands relative to arm commands. Increase a positive value if the gripper reacts too late. |
vision: observation preprocessing
| Key | Type / valid values | Meaning |
|---|
history_frame | boolean | Include a historical observation frame in addition to the current frame when the model input supports it. |
preprocess.method | string | Name of the preprocessing function resolved from client.utils.misc; none disables preprocessing. |
preprocess.keep_ratio | boolean | Preserve aspect ratio while resizing. |
preprocess.height | positive integer, pixels | Target image height for preprocessing. |
preprocess.width | positive integer, pixels | Target image width for preprocessing. |
language: task instruction selection
| Key | Type | Meaning |
|---|
file_path | path relative to conf/ | JSON task-instruction file, normally language_cmd.json. |
task_id | string | Task key in the language JSON file. If absent, the first available task is used. |
sub_task_id | zero-based integer | Index of the active instruction in the selected task. Invalid indices fall back to 0. |
auto_mode_start_sub_task_id | zero-based integer | Sub-task index applied when Auto Mode starts. The Web console exposes it as the Start selector of the Language Command panel. |
auto_mode | boolean | Automatically move to the next language instruction according to task-progress output. |
task_progress_threshold | number | Mean progress probability required before automatic switching. |
task_progress_win_size | positive integer | Sliding-window length used to average task progress. |
language_cmd.json is a mapping from task IDs to ordered arrays of instruction strings. Add a task by adding one such array; do not store configuration metadata in this file.
vla_zmq: VLA server connection
| Key | Type / unit | Meaning |
|---|
ip | host name or IP address | VLA server address. |
port | string or integer | VLA server TCP port; together with ip forms tcp://ip:port. |
infer_timeout | positive integer, ms | Client receive timeout for one inference response. A timeout may drop a late response. |
heartbeat_interval | positive integer, ms | Client heartbeat period. |
heartbeat_timeout | positive integer, ms | Server-side inactivity time before a client is removed. |
visualize: visualization service
| Key | Type / unit | Meaning |
|---|
host | host/IP | Interface on which the visualization WebSocket service listens. |
port | integer | Visualization service port. |
max_size | integer, bytes | Largest accepted WebSocket message. |
ping_interval | number, seconds | WebSocket ping interval. |
ping_timeout | number, seconds | Time allowed for a ping response. |
updata_fps | positive number, Hz | Visualization update rate. The key name is retained for compatibility. |
camera.open_head | boolean | Show the head camera. |
camera.open_wrist_left | boolean | Show the left wrist camera. |
camera.open_wrist_right | boolean | Show the right wrist camera. |
trajectory.play | boolean | Start trajectory playback automatically in the UI. |
trajectory.source | string array | Trajectory series displayed in the UI, such as State, ActionRaw, and ActionFitted. |
trajectory.selected_joints | integer array | Initially selected action/state dimensions. |
trajectory.window_span_sec | positive number, seconds | Time range displayed by the trajectory plot. |
| Key | Type | Meaning |
|---|
switch | boolean | Master recording switch. It is read from the client configuration; the current run_web_client.py entry point has no --record option. |
auto | boolean | Enable automatic recording behavior. |
save_dir | project-relative path | Root directory for recorded data. |
is_record_episode | runtime boolean | Whether episode recording is active. |
is_record_eval_log | runtime boolean | Whether evaluation-log recording is active. |
is_record_expe_data | runtime boolean | Whether experiment-data recording is active. |
save_raw | boolean | Save source-resolution images rather than resized images. |
evaluation.scores | numeric array | Score choices offered by the evaluation UI. |
lerobot.codebase_version | string | Dataset/codebase version recorded in metadata. |
lerobot.robot_type | string | Robot type recorded in metadata. |
lerobot.total_episodes, total_frames, total_tasks, total_videos, total_chunks | non-negative integer | Dataset counters maintained in LeRobot metadata. |
lerobot.chunks_size | positive integer | Number of episodes/frames represented by a storage chunk according to the recorder format. |
lerobot.fps | positive number, Hz | Dataset frame rate. |
lerobot.state_shape, action_shape | positive integer | Flattened state and action dimensions written to the dataset. |
lerobot.splits | mapping | Dataset split definitions, for example {valid: "0:100"}. |
lerobot.data_path | template string | Parquet path template relative to the recording root. |
lerobot.video_path | template string | Video path template relative to the recording root. |
lerobot.cam.head, cam.hand_left, cam.hand_right | mapping | Per-camera feature definition. Each has shape.height, shape.width, shape.channel, plus encode.codec, encode.is_depth_map, and encode.has_audio. |
Supported video codecs include mp4v, avc1, XVID, and MJPG. Camera shapes must describe the frames actually written by the selected robot pipeline.
robots: robot adapters
robots.type selects unitree_g1 (default), agibot_g1, mock, ti5_t170c, or navi_wa2. Configure only the subsection for the selected adapter unless preparing reusable profiles.
Shared action-layout convention
An action_layout section divides a flat action vector into named segments. Every segment has start (inclusive), end (exclusive), and policy.
| Policy | Meaning |
|---|
gradual | Continuous dimensions, normally arm joints; suitable for smoothing/fitting. |
stepwise | Discrete or near-discrete dimensions, normally grippers/hands. |
manual | Robot/Web-controlled dimensions that are not inferred by the model. Place these after model-controlled segments. |
Where available, presets provides UI reset/manual targets. Default and Custom are general presets; AgiBot G1 grippers also provide Open and Close, its wheels provide Forward, Backward, Left, and Right, and NAVIAI-WA2 hands provide Open and Finger.
robots.agibot_g1
| Key | Meaning |
|---|
hand_type | End-effector mode: gripper, hand_as_gripper, or hand. It selects camera names and proprioception layout. |
camera.color_order | Pixel order returned by retrieve_observation() (rgb). |
camera.ref | Reference camera name. |
camera.names | Mapping from canonical names (head, hand_left, hand_right) to robot camera identifiers. |
camera.non_ref_fetch_workers | Number of persistent worker threads used to fetch non-reference cameras. |
proprio_names | Ordered proprioception groups used to assemble robot state. |
gripper_freq, head_freq | Command frequencies for gripper and head control. |
manual_arm_interval | Time interval in seconds between manually generated arm targets. |
action_layout | AgiBot G1 arm, gripper, head, waist, and wheel action ranges and UI presets. |
robots.mock
| Key | Meaning |
|---|
camera.ref, camera.names | Reference camera and mapping to dataset observation keys. |
action_layout | Simulated arm and gripper action ranges and presets. |
manual_arm_interval | Manual arm command interval in seconds. |
state_action_range | Ranges used to select state/action fields from the mock dataset. |
dataset_path | LeRobot-style dataset root. It must contain matching Parquet data and video directories. |
robots.ti5_t170c
| Key | Meaning |
|---|
hand_type | End-effector mode; China Mobile Lingxi uses hand. It selects camera names and proprioception layout. |
camera.color_order | Pixel order returned by retrieve_observation() (rgb; the adapter converts camera frames). |
camera.backend | Camera transport; remote_forwarder subscribes to a video forwarder. |
camera.forwarder_uri | ZMQ URI of the video forwarder (default tcp://192.168.1.100:9100). |
camera.ref, camera.names | Reference camera and mapping to forwarder topics (head/color, hand_left/color, hand_right/color). |
camera.warmup_s | Seconds to wait for camera streams after connecting. |
camera.depth_names | Depth topic mapping. Kept empty: depth frames are not consumed by VLA inference and are neither subscribed nor sent to the server. |
proprio_names | Ordered proprioception groups (arm, hand) used to assemble robot state. |
hand_freq, head_freq | Command frequencies for hand and head control; 1 means every control tick. |
reset_robot_pos | Full robot reset target vector (arms at the reset pose, hands open). Kept aligned with the arm Default preset and the console reset position. |
manual_arm_interval | Time interval in seconds between manually generated arm targets. |
action_layout | Arm (gradual, presets Default = reset pose / Custom = previous homing pose), hand (stepwise, Default/Custom), and head (manual, NECK joints, Web-only) action ranges and UI presets. |
robots.navi_wa2
| Key | Meaning |
|---|
tt | Servo/control period in seconds. |
gain | Servo gain. |
hand_type | End-effector mode; NAVIAI-WA2 uses hand. It selects proprioception layout and hand presets. |
camera.color_order | Pixel order of incoming frames (bgr; cv_bridge uses bgr8). |
camera.topic_dict | Compressed ROS image topics keyed by head, hand_left, and hand_right. |
action_layout | Continuous arm and stepwise hand action ranges. |
reset_position | Full reset pose vector; ordering must match the NAVIAI-WA2 driver. |
robots.unitree_g1
| Key | Meaning |
|---|
camera.color_order | Pixel order of incoming frames (bgr; cv_bridge uses bgr8). |
hand_type | End-effector mode; Unitree G1 uses hand. It selects camera names and proprioception layout. |
reset_robot_pos | Full robot reset target vector (26 dimensions, all zeros). |
action_layout | Arm (gradual, Default/Custom presets) and hand (stepwise, six-finger values, Default/Custom presets) action ranges. |
Server and model dictionary
get_vla_server_config() provides zmq, max_infer_workers, max_decode_workers, and models.
| Key | Meaning |
|---|
zmq | Same VLA network fields as vla_zmq; the server binds its ROUTER socket using the configured port. |
max_infer_workers | Maximum concurrent inference workers. Set to 1 to disable concurrent inference. |
max_decode_workers | Maximum image-decoding workers. |
image_pad_and_resize | Enable aspect-ratio-preserving padding and resizing of decoded images on the server. |
image_target_height, image_target_width | Target image dimensions in pixels used when image_pad_and_resize is enabled. |
models.type | Selected model: mock, act, gr00t_n1, gr00t_n1_5, gr00t_n1_6, rdt, smolvla, go1, pi0, pi05, tao, dm05, or wallx. |
Model-specific keys are as follows:
| Model section | Keys | Meaning |
|---|
models.mock | model_path | Mock-model path placeholder. |
models.act | model_path | ACT checkpoint path. |
models.gr00t | model_path, embodiment_tag, data_config_key | GR00T checkpoint plus supported embodiment and data-configuration identifiers. |
models.rdt | model_path, config_path, vision_encoder_name_or_path, lang_embd_path | RDT checkpoint, model configuration, vision encoder, and language embedding paths. |
models.smolvla | model_path, root_path | SmolVLA checkpoint and associated data/root path. |
models.go1 | model_path, exp_path, data_stats_path | GO1 checkpoint, importable experiment path, and normalization statistics JSON. |
models.pi0, models.pi05 | config, model_path, is_hand | OpenPI model configuration/checkpoint; is_hand enables hand-action handling. |
models.tao | model_path, embodiment_tag | TAO checkpoint and a TAO-registry embodiment identifier. |
models.dm05 | model_path, repo_path, action_mode, backend, vision_trt_engine_path, diffusion_steps, vision_attn_implementation, execute_horizon | DM0.5 checkpoint and repository paths, action mode, inference backend with an optional TensorRT vision engine, diffusion-step count, and actions per control cycle. |
models.wallx | model_path, repo_path, embodiment_tag, device, flow_steps | WALL-X checkpoint and repository paths, embodiment identifier, inference device, and flow-matching step count. |
Paths must be valid on the inference-server host. embodiment_tag and data_config_key are model-library identifiers, not arbitrary labels; use values registered by the matching model installation.
Visualization ZMQ configuration
get_vis_zmq_config() is used by the standalone visualization ZMQ service.
| Key | Meaning |
|---|
client_ip, client_port | Address used by a visualization client. |
server_ip, server_port | Bind address used by the visualization server; * binds all interfaces. |
Logging configuration
conf/logging_conf.py is programmatic logging configuration rather than a YAML parameter dictionary. It writes timestamped files below logs/, moves prior-day files into date directories, and removes date directories older than seven days. Console logging defaults to INFO; file logging defaults to DEBUG. Use setup_logging(log_filename, logger_name) when adding an entry point.