ros2-execution
Execute ROS 2 commands (run, launch, call) in a sandboxed, allowlisted environment. Supports parameter profiles.
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/bigrobinson/ros2-executionROS 2 Execution (Sandboxed)
Setup & Installation
Before this skill can be used, the local environment must be configured. The setup script dynamically discovers your ROS paths and approved workspaces. You can re-run the setup script at any time if you add new workspaces.
- Source your environment: You MUST source your ROS 2 environment and any local workspaces first in your terminal.
source /opt/ros/<distro>/setup.bash source ~/my_ros_ws/install/setup.bash - Run setup:
./scripts/setup.sh - Whitelist Packages: Edit
config/packages.jsonto explicitly allow the packages you want the agent to execute. - Parameter Profiles (Optional): Create YAML parameter files in
~/.openclaw/workspace/ros_profiles/for quick execution using the--profileflag.
Overview
Use this skill to execute ROS 2 commands.
SECURITY CONSTRAINT: You must ALWAYS use the safe wrapper script located at ./scripts/safe_ros2_execution.py.
This script performs strict security checks using Python's subprocess (no raw shell execution, preventing injection) and validates:
- The command type (must be run/launch/call).
- The package is in an approved workspace.
- The package is explicitly allowlisted.
Wrapper Path: Resolve ./scripts/safe_ros2_execution.py against this SKILL.md directory.
Allowed Commands
Usage: ./scripts/safe_ros2_execution.py <command> <package> <target> [--profile <name> | --params-file <path>] [extra_args]
- Run a node:
./scripts/safe_ros2_execution.py run <pkg> <node> - Run a node with a Parameter Profile:
./scripts/safe_ros2_execution.py run <pkg> <node> --profile outdoor(Loads from~/.openclaw/workspace/ros_profiles/outdoor.yaml) - Run a node with a specific Params File:
./scripts/safe_ros2_execution.py run <pkg> <node> --params-file /tmp/temp_params.yaml - Launch a file:
./scripts/safe_ros2_execution.py launch <pkg> <launch_file> - Call a service:
./scripts/safe_ros2_execution.py service_call <pkg> <srv_name> <srv_type> <args> - Send an action goal:
./scripts/safe_ros2_execution.py action_send_goal <pkg> <action_name> <action_type> <args>
Handling Parameters (--ros-args)
Avoid passing complex strings (like nested arrays or JSON dictionaries) directly in the command arguments. Instead:
- Write the parameters to a temporary YAML file.
- Use the
--params-file /path/to/file.yamlflag to safely load them. - For recurring setups, save the YAML file to
~/.openclaw/workspace/ros_profiles/<name>.yamland use--profile <name>.
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-bigrobinson-ros2-execution": {
"enabled": true,
"auto_update": true
}
}
}Related Skills
ros2-control-introspection
Execute ROS 2 Control read-only introspection commands (list, view) in a sandboxed environment. Supports parameter profiles.
ros2-control-execution
Execute ROS 2 Control state-changing commands (load, switch, unload) in a sandboxed environment. Supports parameter profiles.
ros2-introspection
Execute core ROS 2 introspection commands to query the ROS graph (topics, nodes, services, actions, parameters). STRICTLY read-only.