RosClaw
Important
This project is undergoing a major re-architecture and migration to separate repos. Check back soon for updates, or reach out on X @irvinxyz to follow along.
Natural language control of ROS2 robots through messaging apps, powered by AI agents.
RosClaw connects OpenClaw to ROS2 (the Robot Operating System) through an intelligent plugin layer. Send a message on Telegram, WhatsApp, Discord, or Slack — the robot moves. Connect to your own robot or "lease" any robot registered into our portal globally. Each robot registers their own profile with capabilitie.
Whethere it's a cute desk robot or a humanoid robot, all you have to do is install our OpenClaw extension and run our ROS2 packakge.
How It Works
User (WhatsApp/Telegram/Discord/Slack)
|
v
OpenClaw Gateway (AI Agent + Tools + Memory)
|
v RosClaw Plugin
rosbridge_server (WebSocket)
|
v ROS2 DDS
Robots: Nav2, MoveIt2, cameras, sensors
- A user sends a natural language message through any messaging app
- OpenClaw's AI agent receives the message and uses ROS2 tools registered by the RosClaw plugin
- The agent translates intent into ROS2 operations (topic publish, service call, action goal)
- The robot acts, and the agent streams feedback back to the chat
Project Structure
rosclaw/
├── packages/
│ └── rosbridge-client/ # @rosclaw/rosbridge-client — TypeScript rosbridge WebSocket client
├── extensions/
│ ├── openclaw-plugin/ # @rosclaw/openclaw-plugin — Core OpenClaw extension
│ └── openclaw-canvas/ # @rosclaw/openclaw-canvas — Real-time dashboard (Phase 3)
├── ros2_ws/src/
│ ├── rosclaw_discovery/ # ROS2 capability auto-discovery node
│ └── rosclaw_msgs/ # Custom ROS2 message/service definitions
├── docker/ # Docker Compose stack
└── examples/ # Demo projects
Quick Start
Prerequisites
- Node.js 20+
- pnpm 9+
- Docker (for simulation)
Install & Build
pnpm install
pnpm build
Run the Demo Stack
cd docker
docker compose up
This starts ROS2 + rosbridge + Gazebo. Then configure your OpenClaw instance to use the RosClaw plugin with ws://localhost:9090.
Try It
Send a message to your robot:
- "Move forward 1 meter" — publishes velocity to
/cmd_vel - "Navigate to the kitchen" — sends a Nav2 goal
- "What do you see?" — captures a camera frame
- "Check the battery" — reads
/battery_state /estop— emergency stop (bypasses AI)
Packages
| Package | Description |
|---|---|
@rosclaw/rosbridge-client |
Standalone TypeScript client for the rosbridge WebSocket protocol |
@rosclaw/openclaw-plugin |
OpenClaw extension: tools, hooks, skills, commands for ROS2 control |
@rosclaw/openclaw-canvas |
Real-time robot dashboard (Phase 3) |
rosclaw_discovery |
ROS2 Python node for capability auto-discovery |
rosclaw_msgs |
Custom ROS2 message/service definitions |
Agent Tools
The AI agent has access to these ROS2 tools:
| Tool | Description |
|---|---|
ros2_publish |
Publish messages to any ROS2 topic |
ros2_subscribe_once |
Read the latest message from a topic |
ros2_service_call |
Call a ROS2 service |
ros2_action_goal |
Send action goals with feedback (Phase 2) |
ros2_param_get/set |
Get/set ROS2 node parameters |
ros2_list_topics |
Discover available topics |
ros2_camera_snapshot |
Capture a camera frame |
Development
pnpm install # Install dependencies
pnpm build # Build all packages
pnpm typecheck # Type-check without emitting
pnpm clean # Remove build artifacts
License
Apache-2.0