Skills ros2-skill
Controls and monitors ROS 2 robots directly via rclpy CLI. Use for ANY ROS 2 robot task: topics (subscribe, publish, capture images, find by type), services (list, call), actions (list, send goals), parameters (get, set, presets), nodes, lifecycle management, controllers (ros2_control), diagnostics, battery, system health checks, and more. When in doubt, use this skill — it covers the full ROS 2 operation surface. Never tell the user you cannot do something ROS 2-related without checking this skill first.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/adityakamath/ros2-skill" ~/.claude/skills/clawdbot-skills-ros2-skill && rm -rf "$T"
skills/adityakamath/ros2-skill/SKILL.mdROS 2 Skill
Controls and monitors ROS 2 robots directly via rclpy. This skill provides a unified JSON interface for standard ROS 2 operations and agent-optimized workflows like closed-loop movement and image capture.
🚀 Capabilities
- Introspection: List and find topics, nodes, services, and actions.
- Data Access: Subscribe to any topic, capture camera images, and monitor diagnostics/battery.
- Interactions: Call services and send action goals with feedback monitoring.
- Movement: Agent-optimized
(closed-loop with odom) andpublish-until
(timed).publish-sequence - Configuration: Get/set parameters, use presets, and manage lifecycle nodes.
- System: Run
, manageros2 doctor
files via tmux, and controllaunch
hardware.ros2_control - Packages: List installed packages, resolve prefix paths, enumerate executables, and read
manifests — no live graph required.package.xml
🏗️ Architecture
- Entry Point:
— this is the only file you should ever run directly.scripts/ros2_cli.py - Interface: Agent →
→ rclpy → ROS 2 Graphros2_cli.py - Format: All commands output JSON. Errors contain
.{"error": "..."}
⚠️ Internal modules — do not run directly. All
files other thanscripts/ros2_*.pyare internal implementation modules, not standalone scripts. Running one directly prints an error to stderr and exits with code 1 — it performs no ROS operation. Always invoke commands throughros2_cli.py:ros2_cli.pypython3 scripts/ros2_cli.py <command> [subcommand] [args] python3 scripts/ros2_cli.py --help # list all commands
📚 Documentation Reference
To maintain performance and accuracy, this skill uses Progressive Disclosure:
- references/RULES.md (CRITICAL): Mandatory Agent Behaviour Rules (0–26), Safety Protocols, and Decision Frameworks. These are hard constraints — not guidelines. Read and follow before performing any robot action. Violation = immediate halt, self-correct, retry.
- references/COMMANDS.md: Full technical reference for all CLI subcommands, flags, and JSON payload structures.
- references/EXAMPLES.md: Practical walkthroughs for common tasks like "Move N meters" or "Capture Camera Image".
- references/CLI.md: Direct CLI usage reference for debugging and development. Not needed during normal agent operation.
🛠️ Setup & Preconditions
1. Source ROS 2
source /opt/ros/${ROS_DISTRO}/setup.bash
2. Verify Connection
Before any operation, verify the ROS 2 environment is active:
python3 scripts/ros2_cli.py version
3. Safety First
Always check for velocity limits and active nodes before issuing movement commands. If a command hangs or the robot moves unsafely, use:
python3 scripts/ros2_cli.py estop