Agent skill
calhacks-agenticrobot
Stars
163
Forks
31
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/calhacks-agenticrobot
SKILL.md
ManiSkill + XLeRobot Setup Guide
This guide sets up MERLIN to control XLeRobot in ManiSkill simulation for sim2real validation.
Quick Setup (15 minutes)
1. Create ManiSkill Environment
bash
# Create separate conda env for ManiSkill
conda create -y -n merlin-sim python=3.11
conda activate merlin-sim
# Install ManiSkill and dependencies
pip install mani-skill pygame rerun-sdk
# Download ReplicaCAD scene dataset
python -m mani_skill.utils.download_asset "ReplicaCAD"
2. Install XLeRobot Files in ManiSkill
-
Download XLeRobot simulation files:
- Clone:
https://github.com/xle-robots/xle-robot - Navigate to:
sim/maniskill/folder
- Clone:
-
Copy to ManiSkill package:
bash# Find your ManiSkill installation MANI_PATH=$(python -c "import mani_skill; print(mani_skill.__path__[0])") # Copy XLeRobot files cp -r xle-robot/sim/maniskill/agents/xlerobot/ $MANI_PATH/agents/robots/ cp -r xle-robot/sim/maniskill/assets/xlerobot/ $MANI_PATH/assets/robots/ cp -r xle-robot/sim/maniskill/envs/scenes/* $MANI_PATH/envs/scenes/ -
Register XLeRobot in ManiSkill:
bash# Edit: $MANI_PATH/agents/robots/__init__.py # Add: from .xlerobot import *
3. Test ManiSkill Standalone
bash
# Test ManiSkill works with XLeRobot
python -m mani_skill.examples.demo_ctrl_action \
-e "ReplicaCAD_SceneManipulation-v1" \
-r "xlerobot_single" \
--render-mode="human" \
--shader="default" \
-c "pd_joint_delta_pos"
Expected: XLeRobot appears in 3D scene, can accept keyboard commands.
4. Run MERLIN with ManiSkill
bash
# Activate MERLIN environment (with ManiSkill installed)
conda activate merlin-sim
# Set PYTHONPATH to MERLIN
export PYTHONPATH=/path/to/calhacks:$PYTHONPATH
# Run agent mission in ManiSkill
python examples/test_maniskill.py
Expected:
- ManiSkill environment loads
- Agent executes pick-and-place in sim
- Results printed to console
5. Full Integration Test
bash
# Run MERLIN with ManiSkill backend
python main.py --backend maniskill --agent simple --mission "Pick and place demo"
Expected Output:
json
{
"ok": true,
"backend": "maniskill",
"agent": "SimpleAgent",
"mission": "Pick and place demo",
"result": "Mission complete:\nInitial status: battery=95.0%\nNavigated to object at [...]\n..."
}
Architecture
┌─────────────────────────────────────┐
│ SimpleAgent │
│ (hardcoded pick-and-place) │
└──────────────┬──────────────────────┘
│ agent.run_mission()
▼
┌──────────────────────────────────────┐
│ MCP Server (5 tools) │
│ navigate_to, grasp, release, etc │
└──────────────┬──────────────────────┘
│ execute_tool()
▼
┌──────────────────────────────────────┐
│ StateMachine (60 Hz loop) │
│ IDLE → NAVIGATING → MANIPULATING │
└──────────────┬──────────────────────┘
│ state-specific logic
▼
┌──────────────────────────────────────┐
│ ManiSkillController │
│ (XLeRobot in ReplicaCAD scene) │
└──────────────┬──────────────────────┘
│ gymnasium API
▼
XLeRobot Robot (Physics Sim)
- 7 DOF arm
- gripper
- sensors
Next Steps
Immediate (sim validation)
- Run
test_maniskill.pyand verify agent controls robot - Modify mission prompts to test different behaviors
- Add custom control policies in
_build_action()method
Before Real Hardware
- Record trajectories from successful sim missions
- Test transfer learning (sim → real)
- Validate gripper force/torque limits
- Test emergency stop procedures
Real Hardware (XLE Robot)
- Create
XLEControllerbackend (rest API or ROS2) - Test low-level commands match sim
- Validate sensor readings
- Deploy trained agents
Troubleshooting
ManiSkill import error
Error: cannot import mani_skill.envs
Solution: pip install --upgrade mani-skill
XLeRobot files not found
Error: Robot xlerobot_single not registered
Solution: Verify XLeRobot files copied to ManiSkill package
Check /agents/robots/__init__.py has xlerobot import
Slow simulation
Solution 1: Use --shader="default" (faster than ray-tracing)
Solution 2: Reduce render resolution or use headless mode
Solution 3: Upgrade GPU drivers
Observation extraction failing
Solution: Print env.observation_space to see observation keys
Modify _extract_pose() in maniskill.py to match actual keys
Performance
| Metric | Value | Notes |
|---|---|---|
| Sim step latency | 10-50ms | Depends on render mode |
| Physics accuracy | High | Calibrated for XLeRobot |
| Gripper simulation | Binary (open/close) | Realistic forces in production |
| Camera simulation | Yes | Can capture RGB/depth for vision |
Files Modified
merlin/hardware/maniskill.py- ManiSkillController (new)merlin/hardware/__init__.py- Factory support (updated)examples/test_maniskill.py- Integration test (new)SETUP_MANISKILL.md- This guide (new)
Resources
Ready to validate your robot missions in simulation before real hardware! 🚀
Didn't find tool you were looking for?