Contributing — New Tasks
Copy a task template, adapt its environment, and test it.
1. Duplicate a Template
Copy a package under srb/tasks. Update its registration and config, give it a unique package name, and keep it under srb.tasks: recursive imports register tasks, and family placement sets their documentation category. Choose a template:
| Template | Description |
|---|---|
_manipulation | Fixed-base manipulation with robotic arms |
_ground | Ground traversal on planetary surfaces |
_aerial | Aerial navigation above planetary surfaces |
_orbital | Spaceflight maneuvers |
_ground_manipulation | Mobile manipulation with ground-based robots |
_aerial_manipulation | Mobile manipulation with flying robots |
_orbital_manipulation | Mobile manipulation with spacecraft |
2. Modify the Environment
Adapt the scene and assets, choose a robot category, then implement observations, rewards, and termination conditions. Ask the community for task-specific guidance if needed.
3. Debug the Task
Test the task with teleop, zero, or rand, as its action space permits. Enable debug visualization and check parallel instances. First, update docs/data/tasks.toml. Then regenerate the offline task cache (srb cache update) and task docs (srb doc docgen) to sync the generated catalog and task pages. Run a compatible command:
srb agent teleop -e <your_task_name> env.debug_vis=true env.num_envs=4
srb agent zero -e <your_task_name> env.debug_vis=true env.num_envs=4
srb agent rand -e <your_task_name> env.debug_vis=true env.num_envs=4
4. Use the Task in a Workflow
Reference: Workflows
Use workflows compatible with the task’s config, action space, and runtime interfaces. Check compatibility before training, deployment, or validation.
Share your task with the community.
Next: Adding Terrain Sites