Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Environment Configuration — Robot

The env.robot parameter allows you to specify which robot to use in your simulation. This is one of the most powerful configuration options, enabling you to change not just the robot model but also its components, payloads, and end effectors.

Tip: Run srb ls to see every registered robot (and which category it belongs to). The -e value in the examples below selects an environment or environment category — categories are prefixed with an underscore, e.g. _manipulation, _ground, _aerial. A robot is only valid for environments whose category it supports.

Robot Selection

The simplest way to select a robot is by specifying its name:

srb agent rand -e _manipulation env.robot=ur10
srb agent rand -e _ground env.robot=unitree_go1
srb agent rand -e _aerial env.robot=crazyflie

End Effector for Manipulators

You can attach a specific end effector to a manipulator with the base+end_effector syntax. Both the base manipulator and the end effector must be named:

srb agent rand -e _manipulation env.robot=ur10+shadow_hand

Payload for Mobile Robots

Similarly, you can attach a payload to a mobile robot with the base+payload syntax:

srb agent rand -e _ground env.robot=spot+cargo_bay

Payloads may be static rigid geometry or an ActivePayload articulation. An active payload contributes its own action terms after the mobile base terms and is mounted as a separately addressable scene articulation. For example, the landscaping configuration below has three actions: two filtered RaphRover drive channels followed by one continuous RaphShovel velocity channel.

srb agent rand -e terrain_landscaping env.robot=raph_rover+raph_shovel

That landscaping action vector is frozen by the task’s IO contract: three normalized channels in [-1, 1], mapped to robot/cmd_vel on slice [0:2] (linear scale and saturation 0.4 m/s; angular scale radians(60) followed by saturation at 1.0 rad/s) and payload/joint_vel on slice [2:3] (scale and saturation 0.04 m/s). Those are simulator limits, not verified lab facts; see Terrain Landscaping Training Readiness.

Hazard — asset-instance customizations can be dropped on the CLI path. When a task config is rebuilt through Hydra (which is what every srb agent / srb real_agent invocation does), extract_defaults_from_class serializes an asset-instance field default as {"name": …} plus a small allow-list (action_mode and nested sub-asset fields). Anything else the task declared on that instance is silently dropped, and the asset is rebuilt from its class defaults. A directly constructed TaskCfg(...) keeps the declared values, so the two paths can disagree without any error. This was measured on the landscaping containment: direct construction received a (4.0, 4.0) m surface with 0.3 m walls, the CLI path received Plane’s class defaults (0.75, 2.0) m with 1.0 m walls. If you customize an asset instance in a task config, express it as plain scalars re-applied in __post_init__ (what the landscaping tasks now do), or verify explicitly that it survives the round trip.

Combine Mobile Manipulators

SRB supports combining any mobile robot with any manipulator for mobile manipulation environments via the env.robot.mobile_base and env.robot.manipulator parameters:

srb agent rand -e _ground_manipulation env.robot.mobile_base=unitree_a1 env.robot.manipulator=unitree_z1

Similarly, you can attach payloads to the mobile base and end effectors to the manipulator:

srb agent rand -e _ground_manipulation env.robot.mobile_base=anymal_d+cargo_bay env.robot.manipulator=ur10+shadow_hand

Alternatively, a ground mobile manipulator can be composed in a single env.robot token — the first name must be a registered mobile robot and the second a registered manipulator, which may itself carry an end-effector suffix:

srb agent rand -e _ground_manipulation env.robot=unitree_a1+unitree_z1
srb agent rand -e _ground_manipulation env.robot=husky+kinova_gen3n7+robotiq_hand_e

Change Action Modes

Each robot, active payload, and active tool (end-effector) contributes its selected action mode to the action space of the whole system. You can change the selected mode with action_mode on the robot, mobile base, manipulator, or active tool:

srb agent rand -e _manipulation env.robot.action_mode=joint_pos_rel

Robot selection and action mode overrides compose:

srb agent rand -e _manipulation env.robot=ur10 env.robot.action_mode=joint_pos_rel