Configurations
RoboDojo stores environment settings under env_cfg/. A top-level config selects one file from each subdirectory and combines them into a complete simulation setup for evaluation and local debugging.
Directory layout
Section titled “Directory layout”Top-level config
Section titled “Top-level config”The top-level file is the entry point for an environment. For example, env_cfg/arx_x5.yml names the simulation, scene, robot, and camera configs to load:
| Section | Purpose |
|---|---|
config_name | Config name used for layout lookup and result paths |
config.sim | File under env_cfg/sim/, without .yml |
config.scene | File under env_cfg/scene/, without .yml |
config.robot | File under env_cfg/robot/, without .yml |
config.camera | File under env_cfg/camera/, without .yml |
observation.collect_freq | Data collection frequency |
observation.robot | Robot state fields recorded during collection |
observation.vision | Vision fields to record, including depth and camera intrinsics/extrinsics |
To switch to a different setup, change the names under config: and create new sub-config files in the corresponding directories.
Eval and benchmark config selection
Section titled “Eval and benchmark config selection”RoboDojo’s eval commands select a top-level config by file stem. For example, --env-cfg arx_x5 loads env_cfg/arx_x5.yml. The default is arx_x5.
See Quick Evaluation for the actual eval, server, client, smoke, and benchmark launch commands.
The env_cfg file stem and the file’s config_name should normally match. For the default config:
config_name is not just a display label. It is used in two benchmark-facing places:
| Path | Meaning |
|---|---|
Assets/Eval_Layout/RoboDojo/<config_name> | Seeded layout set loaded by the task during evaluation |
eval_result/RoboDojo/<task>/<policy>/<config_name> | Result artifact location |
If you create env_cfg/my_config.yml but leave config_name: arx_x5, RoboDojo will still look for layouts under Assets/Eval_Layout/RoboDojo/arx_x5/<seed>/. That can be useful for an intentional migration, but for normal new environments keep them aligned:
For publication-style sweeps, the current benchmark protocol uses three seeds:
Run the benchmark once per seed with --seed 0, --seed 1, and --seed 2. Use --eval-num native when you want task episode counts from task/RoboDojo/config/_task.yml instead of a fixed debug count.
Simulation config
Section titled “Simulation config”Simulation settings live in env_cfg/sim/sim_config.yml. The current default file controls only the control-step timing, render cadence, and parallel environment layout:
| Field | Description |
|---|---|
decimation | Number of simulation steps per control step |
dt | Simulation timestep |
render_interval | Simulation steps between rendered frames |
scene.num_envs | Number of parallel environments |
scene.env_spacing | Spacing between parallel environment instances |
RoboDojo uses built-in Isaac Lab, PhysX, and renderer defaults for settings that are not present in this YAML file. Task-level settings in task/RoboDojo/config/_task.yml may still override render_interval, scene_config, camera_config, or robot_config for specific tasks at runtime. The eval client also writes the final seed list and parallel environment count into the assembled config before launching Isaac Sim.
Scene config
Section titled “Scene config”Scene files define the static world and optional objects spawned into it.
| Block | Description |
|---|---|
Room | Room asset, pose, orientation, and scale |
Table | Table material, size, pose, and orientation |
Background | HDR background map and intensity |
Ground | Ground geometry, material, and physics material |
Geometry | Extra scene objects and placement rules |
default.yml includes a room, table, background, ground, and a camera_stand geometry entry. conveyor.yml is a scene variant with a different room setup and object placement layout.
Geometry entries usually contain three parts:
| Field | Description |
|---|---|
common | Shared placement range, pose, and reference plane |
category | Asset categories and indices that can be selected |
select_mode | How many objects to select and whether selection is unique |
Robot config
Section titled “Robot config”Robot files define the robot instances spawned in the scene. For example, dual_x5.yml contains two ARX X5 arms:
| Field | Description |
|---|---|
robot_type | Robot category, such as arm |
robot_name | Robot asset name |
coupled | Whether this robot is a dual-arm or multi-arm robot |
default_root_pos | Spawn position |
default_root_rot | Spawn orientation quaternion |
grasp_perfect_direction | Preferred grasp direction hint |
type: "support" | Optional support robot marker |
need_planner | Optional planner toggle for the robot |
dual_x5_and_franka_competition.yml extends the dual X5 setup with a support Franka arm.
Action dimensions are registered in env_cfg/robot/_robot_info.json:
Camera config
Section titled “Camera config”Camera files define tiled capture, annotators, and scene-level camera placement. Wrist-camera annotators are enabled here, while the wrist-camera mount information is added from the robot camera definitions at runtime.
| Field | Description |
|---|---|
enable_tiled | Enables tiled camera rendering |
annotator | Capture outputs for each camera, such as RGB or depth |
cam_head | Head camera pose and model |
cam_left_wrist / cam_right_wrist | Wrist-camera capture channels populated from robot-mounted camera definitions |
cam_third_view | Third-person camera pose and model, used by lighter interaction configs such as interact_scene.yml |
Scene-level camera poses are defined under each cam_* block:
camera_config.yml is the standard data-collection setup. interact_scene.yml is a lighter interaction setup. Intrinsic presets for camera models such as Gemini_345Lg, D435, REAL_CAMERA, and third_view are defined in env_cfg/camera/template.py.
Creating a new config
Section titled “Creating a new config”- Copy an existing top-level file, for example
cp env_cfg/arx_x5.yml env_cfg/my_config.yml. - Change
config_nameto the new config stem unless you intentionally want to reuse an existing layout/result namespace. - Set
config.sim,config.scene,config.robot, andconfig.camerato the sub-configs you want. - Copy or edit files under
env_cfg/sim/,env_cfg/scene/,env_cfg/robot/, orenv_cfg/camera/when you need a new variant. - Update
observationin the top-level config to choose what data to record. - If the new
config_nameshould be benchmarked, provide matching layouts underAssets/Eval_Layout/RoboDojo/<config_name>/<seed>/.
For a new robot preset, add a file under env_cfg/robot/ and register its action dimensions in env_cfg/robot/_robot_info.json.