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.
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.
publish-until (closed-loop with odom) and publish-sequence (timed).ros2 doctor, manage launch files via tmux, and control ros2_control hardware.package.xml manifests — no live graph required.scripts/ros2_cli.py — this is the only file you should ever run directly.ros2_cli.py → rclpy → ROS 2 Graph{"error": "..."}.⚠️ Internal modules — do not run directly. All
scripts/ros2_*.pyfiles other thanros2_cli.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:python3 scripts/ros2_cli.py <command> [subcommand] [args] python3 scripts/ros2_cli.py --help # list all commands
To maintain performance and accuracy, this skill uses Progressive Disclosure:
source /opt/ros/${ROS_DISTRO}/setup.bash
Before any operation, verify the ROS 2 environment is active:
python3 scripts/ros2_cli.py version
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