Adding a New Robot to RoboEval#
To integrate a new robot into RoboEval, you’ll need to define its configuration and register it within the system. This guide walks through the necessary steps using the Franka Panda robot as an example.
Step 1: Create a Robot Configuration File#
Navigate to:
roboeval/robots/configs/
Create a new Python file (e.g., panda.py
) where you define the robot’s configuration.
Required Components#
Each robot should include:
ArmConfig – MuJoCo model path, joint and actuator definitions
GripperConfig – model path, control range, and finger pad bodies
FloatingBaseConfig – defines fixed or floating base behavior
CameraConfig – (optional) cameras on base or wrists
RobotConfig – wraps all robot components
RobotIKConfig – IK settings used by CuRobo or similar planners
Robot subclass – inherits from
roboeval.robots.robot.Robot
and returnsconfig
andik_config
Example: Define the Robot Class#
class BimanualPanda(Robot):
@property
def config(self) -> RobotConfig:
return PANDA_CONFIG_WITH_PANDA_GRIPPER
@property
def ik_config(self) -> RobotIKConfig:
return create_bimanual_panda_config()
Example: ArmConfig Definition#
PANDA_ARM = ArmConfig(
site="attachment_site",
model=...,
joints=[...],
actuators=[...],
links=[...],
)
Step 2: Register the Robot#
To make the robot available for use in RoboEval experiments, register it in:
tools/shared/utils.py
Add your robot class to the ROBOTS
dictionary:
from roboeval.robots.configs.panda import BimanualPanda, SinglePanda
ROBOTS: dict[str, Optional[Type[Robot]]] = {
"Default": None,
"Bimanual Panda": BimanualPanda,
"Single Panda": SinglePanda,
# Add your custom robots here
}
Note
The dictionary key (e.g., "Bimanual Panda"
) is the name used in config files or CLI commands.
Step 3: Tips and Best Practices#
Modular Configs: Use shared variables (e.g.,
PANDA_ARM
) for reusable parts across multiple robot configs.Camera Support: Use
CAMERA_CONFIG
to define wrist and head cameras. Setmanual=True
and specify pose manually.Floating Base: Use
FloatingBaseConfig
if the robot has a movable base (e.g., mobile or virtual pelvis).Joint Limits: Ensure joint limits in
RobotIKConfig
are precise to enable proper inverse kinematics.
Final Checklist#
Task |
Done? |
---|---|
Added |
[ ] |
Defined |
[ ] |
Created a subclass of |
[ ] |
Registered the robot in |
[ ] |
Once registered, your robot is fully compatible with RoboEval, and can be used for benchmarking, evaluation, and policy testing.