suite.make(...), or with your own task class on top of robosuite, herbie can usually run it as it is. You add a small herbie.toml; your code stays the same.
What herbie reads for you
You don’t copy joint lists, action sizes or scene descriptions into herbie’s files. If herbie can’t tell something, such as where the tool point is on an unusual gripper, preparation asks you instead of guessing.
Example project
my-project
pyproject.toml
uv.lock
my_project
__init__.py
env.py
assets
herbie.toml
.herbieignore
herbie sim init --entry my_project.env:make_env writes the herbie.toml above for you. See the herbie.toml reference for every field.
Your own task classes
Custom environments work the same way, as long as your function can import and build them. Keep your task’s success check, reset and time limit in the environment where robosuite expects them. herbie reads them from there.Swapping robots
robosuite lets you choose a robot by name, so trying another arm is a one-word change:herbie sim prepare again. herbie rechecks the controls, the reset and the visuals for the new robot. Your world and task code don’t change, but the episodes will: a different robot moves differently, so its episodes are new data.
Only robots listed for your runtime profile can be piloted. We add robots one at a time after checking that they’re comfortable and reliable to control. Run herbie sim profiles list to see the current list.
Two-arm environments
robosuite’s two-arm environments, such asTwoArmLift and TwoArmHandover, hold two robots. On herbie each robot can be a seat, so two pilots each control one arm and pass objects between them. Team play rolls out after the first release; until then, one pilot controls a single-arm environment.
Wrappers
herbie keeps your wrapper chain and steps your environment through it, never around it. Wrappers that change actions, observations or resets need support in the integration. If one of yours isn’t supported yet, preparation says so instead of bypassing it.Cameras
herbie never turns your cameras off. Ifuse_camera_obs is on, sessions need a GPU machine. If your task doesn’t need camera observations, a version without them runs on cheaper CPU machines. That’s your call to make.