โ† All skills
Tencent SkillHub ยท Developer Tools

ROS

Controls ROS/ROS2 robots via rosbridge WebSocket CLI. Use when the user asks about ROS topics, services, nodes, parameters, actions, robot movement, sensor d...

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Controls ROS/ROS2 robots via rosbridge WebSocket CLI. Use when the user asks about ROS topics, services, nodes, parameters, actions, robot movement, sensor d...

โฌ‡ 0 downloads โ˜… 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
references/COMMANDS.md, tests/test_ros_cli.py, README.md, examples/sensor-monitor.md, examples/turtlesim.md, scripts/ros_cli.py

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.

Upgrade existing

I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
1.0.1

Documentation

ClawHub primary doc Primary doc: SKILL.md 25 sections Open source page

ROS Skill

Controls and monitors ROS/ROS2 robots via rosbridge WebSocket. Architecture: Agent โ†’ ros_cli.py โ†’ rosbridge (WebSocket :9090) โ†’ ROS/ROS2 Robot All commands output JSON. Errors contain {"error": "..."}. For full command reference with arguments, options, and output examples, see references/COMMANDS.md.

1. Install dependency

pip install websocket-client

2. Launch rosbridge on the robot

ROS 1: sudo apt install ros-${ROS_DISTRO}-rosbridge-server roslaunch rosbridge_server rosbridge_websocket.launch ROS 2: sudo apt install ros-${ROS_DISTRO}-rosbridge-server ros2 launch rosbridge_server rosbridge_websocket_launch.xml

Important: Always Connect First

Before any operation, test connectivity: python {baseDir}/scripts/ros_cli.py connect python {baseDir}/scripts/ros_cli.py --ip <ROBOT_IP> connect

Global Options

FlagDefaultDescription--ip IP127.0.0.1Rosbridge IP address--port PORT9090Rosbridge port number--timeout SECONDS5.0Connection and request timeout

Command Quick Reference

CategoryCommandDescriptionConnectionconnectTest rosbridge connectivity (ping, port, WebSocket)ConnectionversionDetect ROS version and distroTopicstopics listList all active topics with typesTopicstopics type <topic>Get message type of a topicTopicstopics details <topic>Get topic publishers/subscribersTopicstopics message <msg_type>Get message field structureTopicstopics subscribe <topic> <msg_type>Subscribe and receive messagesTopicstopics publish <topic> <msg_type> <json>Publish a message to a topicTopicstopics publish-sequence <topic> <msg_type> <msgs> <durs>Publish message sequenceServicesservices listList all available servicesServicesservices type <service>Get service typeServicesservices details <service>Get service request/response fieldsServicesservices call <service> <type> <json>Call a serviceNodesnodes listList all active nodesNodesnodes details <node>Get node topics/servicesParamsparams list <node>List node parameters (ROS 2)Paramsparams get <node:param>Get parameter value (ROS 2)Paramsparams set <node:param> <value>Set parameter value (ROS 2)Actionsactions listList action servers (ROS 2)Actionsactions details <action>Get action goal/result/feedback fields (ROS 2)Actionsactions send <action> <type> <json>Send action goal (ROS 2)

connect

python {baseDir}/scripts/ros_cli.py connect python {baseDir}/scripts/ros_cli.py --ip <ROBOT_IP> connect

version

python {baseDir}/scripts/ros_cli.py version

topics list / type / details / message

python {baseDir}/scripts/ros_cli.py topics list python {baseDir}/scripts/ros_cli.py topics type /turtle1/cmd_vel python {baseDir}/scripts/ros_cli.py topics details /turtle1/cmd_vel python {baseDir}/scripts/ros_cli.py topics message geometry_msgs/Twist

topics subscribe

Without --duration: returns first message. With --duration: collects multiple messages. python {baseDir}/scripts/ros_cli.py topics subscribe /turtle1/pose turtlesim/Pose python {baseDir}/scripts/ros_cli.py topics subscribe /odom nav_msgs/Odometry --duration 10 --max-messages 50 python {baseDir}/scripts/ros_cli.py topics subscribe /scan sensor_msgs/LaserScan --timeout 10

topics publish

Without --duration: single-shot. With --duration: publishes repeatedly at --rate Hz. Use --duration for velocity commands โ€” most robot controllers stop if they don't receive continuous cmd_vel messages. # Single-shot python {baseDir}/scripts/ros_cli.py topics publish /trigger std_msgs/Empty '{}' # Move forward 3 seconds (velocity โ€” use --duration) python {baseDir}/scripts/ros_cli.py topics publish /cmd_vel geometry_msgs/Twist \ '{"linear":{"x":1.0,"y":0,"z":0},"angular":{"x":0,"y":0,"z":0}}' --duration 3 # Rotate left 2 seconds python {baseDir}/scripts/ros_cli.py topics publish /cmd_vel geometry_msgs/Twist \ '{"linear":{"x":0,"y":0,"z":0},"angular":{"x":0,"y":0,"z":0.5}}' --duration 2 # Stop python {baseDir}/scripts/ros_cli.py topics publish /cmd_vel geometry_msgs/Twist \ '{"linear":{"x":0,"y":0,"z":0},"angular":{"x":0,"y":0,"z":0}}' Options: --duration SECONDS, --rate HZ (default 10)

topics publish-sequence

Publish a sequence of messages, each repeated at --rate Hz for its corresponding duration. Arrays must have the same length. # Forward 3s then stop python {baseDir}/scripts/ros_cli.py topics publish-sequence /cmd_vel geometry_msgs/Twist \ '[{"linear":{"x":1.0,"y":0,"z":0},"angular":{"x":0,"y":0,"z":0}},{"linear":{"x":0,"y":0,"z":0},"angular":{"x":0,"y":0,"z":0}}]' \ '[3.0, 0.5]' # Draw a square (turtlesim) python {baseDir}/scripts/ros_cli.py topics publish-sequence /turtle1/cmd_vel geometry_msgs/Twist \ '[{"linear":{"x":2},"angular":{"z":0}},{"linear":{"x":0},"angular":{"z":1.5708}},{"linear":{"x":2},"angular":{"z":0}},{"linear":{"x":0},"angular":{"z":1.5708}},{"linear":{"x":2},"angular":{"z":0}},{"linear":{"x":0},"angular":{"z":1.5708}},{"linear":{"x":2},"angular":{"z":0}},{"linear":{"x":0},"angular":{"z":1.5708}},{"linear":{"x":0},"angular":{"z":0}}]' \ '[1,1,1,1,1,1,1,1,0.5]' Options: --rate HZ (default 10)

services list / type / details

python {baseDir}/scripts/ros_cli.py services list python {baseDir}/scripts/ros_cli.py services type /spawn python {baseDir}/scripts/ros_cli.py services details /spawn

services call

python {baseDir}/scripts/ros_cli.py services call /reset std_srvs/Empty '{}' python {baseDir}/scripts/ros_cli.py services call /spawn turtlesim/Spawn \ '{"x":3.0,"y":3.0,"theta":0.0,"name":"turtle2"}' python {baseDir}/scripts/ros_cli.py services call /turtle1/set_pen turtlesim/srv/SetPen \ '{"r":255,"g":0,"b":0,"width":3,"off":0}'

nodes list / details

python {baseDir}/scripts/ros_cli.py nodes list python {baseDir}/scripts/ros_cli.py nodes details /turtlesim

params list / get / set (ROS 2 only)

Uses node:param_name format from params list output. python {baseDir}/scripts/ros_cli.py params list /turtlesim python {baseDir}/scripts/ros_cli.py params get /turtlesim:background_r python {baseDir}/scripts/ros_cli.py params set /turtlesim:background_r 255

actions list / details / send (ROS 2 only)

python {baseDir}/scripts/ros_cli.py actions list python {baseDir}/scripts/ros_cli.py actions details /turtle1/rotate_absolute python {baseDir}/scripts/ros_cli.py actions send /turtle1/rotate_absolute \ turtlesim/action/RotateAbsolute '{"theta":3.14}'

1. Explore a Robot System

python {baseDir}/scripts/ros_cli.py --ip <ROBOT_IP> connect python {baseDir}/scripts/ros_cli.py --ip <ROBOT_IP> version python {baseDir}/scripts/ros_cli.py --ip <ROBOT_IP> topics list python {baseDir}/scripts/ros_cli.py --ip <ROBOT_IP> nodes list python {baseDir}/scripts/ros_cli.py --ip <ROBOT_IP> services list python {baseDir}/scripts/ros_cli.py --ip <ROBOT_IP> topics type /cmd_vel python {baseDir}/scripts/ros_cli.py --ip <ROBOT_IP> topics message geometry_msgs/Twist python {baseDir}/scripts/ros_cli.py --ip <ROBOT_IP> actions list python {baseDir}/scripts/ros_cli.py --ip <ROBOT_IP> params list /robot_node

2. Move a Robot

Always check the message structure first, then publish movement, and always stop after. python {baseDir}/scripts/ros_cli.py topics message geometry_msgs/Twist python {baseDir}/scripts/ros_cli.py topics publish-sequence /cmd_vel geometry_msgs/Twist \ '[{"linear":{"x":1.0,"y":0,"z":0},"angular":{"x":0,"y":0,"z":0}},{"linear":{"x":0,"y":0,"z":0},"angular":{"x":0,"y":0,"z":0}}]' \ '[2.0, 0.5]'

3. Read Sensor Data

python {baseDir}/scripts/ros_cli.py topics type /scan python {baseDir}/scripts/ros_cli.py topics message sensor_msgs/LaserScan python {baseDir}/scripts/ros_cli.py topics subscribe /scan sensor_msgs/LaserScan --timeout 3 python {baseDir}/scripts/ros_cli.py topics subscribe /odom nav_msgs/Odometry --duration 10 --max-messages 50

4. Use Services

python {baseDir}/scripts/ros_cli.py services list python {baseDir}/scripts/ros_cli.py services details /spawn python {baseDir}/scripts/ros_cli.py services call /spawn turtlesim/Spawn \ '{"x":3.0,"y":3.0,"theta":0.0,"name":"turtle2"}'

5. ROS 2 Actions

python {baseDir}/scripts/ros_cli.py actions list python {baseDir}/scripts/ros_cli.py actions details /turtle1/rotate_absolute python {baseDir}/scripts/ros_cli.py actions send /turtle1/rotate_absolute \ turtlesim/action/RotateAbsolute '{"theta":1.57}'

6. Change Parameters (ROS 2)

python {baseDir}/scripts/ros_cli.py params list /turtlesim python {baseDir}/scripts/ros_cli.py params get /turtlesim:background_r python {baseDir}/scripts/ros_cli.py params set /turtlesim:background_r 255 python {baseDir}/scripts/ros_cli.py params set /turtlesim:background_g 0 python {baseDir}/scripts/ros_cli.py params set /turtlesim:background_b 0

Safety Notes

Destructive commands (can move the robot or change state): topics publish / topics publish-sequence โ€” sends movement or control commands services call โ€” can reset, spawn, kill, or change robot state params set โ€” modifies runtime parameters actions send โ€” triggers robot actions (rotation, navigation, etc.) Always stop the robot after movement. The last message in any publish-sequence should be all zeros: {"linear":{"x":0,"y":0,"z":0},"angular":{"x":0,"y":0,"z":0}} Always check JSON output for errors before proceeding.

Troubleshooting

ProblemCauseSolutionConnection refusedrosbridge not runningStart rosbridge: ros2 launch rosbridge_server rosbridge_websocket_launch.xmlTimeout errorsSlow network or large dataIncrease timeout: --timeout 10 or --timeout 30No topics foundROS nodes not runningEnsure nodes are launched and workspace is sourcedEmpty topic listrosapi not availableVerify rosbridge includes rosapi (default in standard install)Parameter commands failUsing ROS 1params commands only work with ROS 2Action commands failUsing ROS 1actions commands only work with ROS 2Invalid JSON errorMalformed messageValidate JSON before passing (watch for single vs double quotes)Subscribe timeoutNo publisher on topicCheck topics details to verify publishers existpublish-sequence length errorArray mismatchmessages and durations arrays must have the same length

Category context

Code helpers, APIs, CLIs, browser automation, testing, and developer operations.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
4 Docs2 Scripts
  • examples/sensor-monitor.md Docs
  • examples/turtlesim.md Docs
  • README.md Docs
  • references/COMMANDS.md Docs
  • scripts/ros_cli.py Scripts
  • tests/test_ros_cli.py Scripts