name: ugv-nanda-agent version: 0.1.0 description: Turn Waveshare UGV robots into NANDA-compliant A2A agents with vision, navigation, and task capabilities. homepage: https://github.com/QUSD-ai/ugv-nanda-agent metadata: {"qusd":{"emoji":"π¦Ύ","category":"robotics","hardware":["waveshare","ugv","jetson","rover"]}}
UGV NANDA Agent
Turn your Waveshare UGV robot into a NANDA-compliant A2A agent that other agents can discover, command, and pay.
What It Does
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β UGV Robot (Waveshare) β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
β β Motors β β Camera β β Sensors β β Pan/Tiltβ β
β ββββββ¬βββββ ββββββ¬βββββ ββββββ¬βββββ ββββββ¬βββββ β
β βββββββββββββ¬β΄ββββββββββββ΄βββββββββββββ β
β βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β UGV NANDA Agent β β
β β - A2A protocol (/.well-known/agent.json) β β
β β - Skills: move, look, capture, sense β β
β β - Optional: X402 payments β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Discoverable by other agents β β
β β "Hey robot, patrol the warehouse" β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Supported Hardware
| Device | Motors | Camera | Arm | Compute |
|---|---|---|---|---|
| WAVE ROVER | β | β | β | ESP32/RPi |
| UGV Rover | β | β | β | RPi/Jetson |
| UGV Beast | β | β | β | Jetson |
| RaspRover | β | β | β | RPi |
Quick Start
# On your Jetson/RPi with the UGV
git clone https://github.com/QUSD-ai/ugv-nanda-agent
cd ugv-nanda-agent
bun install
bun run start
Configuration
# config.yaml
ugv:
url: http://localhost:5000 # UGV Flask server
agent:
name: warehouse-rover-01
port: 3010
description: Autonomous patrol robot with camera
nanda:
identity:
did: did:key:z6Mk... # Auto-generated if not set
payments: # Optional X402
enabled: false
wallet: 0x...
Agent Skills
move_robot
{
"skill": "move_robot",
"input": { "leftSpeed": 50, "rightSpeed": 50 }
}
set_camera
{
"skill": "set_camera",
"input": { "pan": 45, "tilt": -10 }
}
capture_image
{
"skill": "capture_image",
"input": {}
}
Returns base64 JPEG image.
get_sensors
{
"skill": "get_sensors",
"input": {}
}
Returns battery, ultrasonic distances, IMU data.
patrol (compound skill)
{
"skill": "patrol",
"input": {
"waypoints": [[0, 0], [100, 0], [100, 100]],
"captureAtWaypoints": true
}
}
Multi-Agent Example
// Vision agent discovers and commands the UGV
import { NandaClient } from '@qusd/nanda-skill';
const client = new NandaClient();
// Discover robots on the network
const robots = await client.discover({
capabilities: ['move_robot', 'capture_image']
});
// Command the first robot
const ugv = robots[0];
await ugv.call('move_robot', { leftSpeed: 30, rightSpeed: 30 });
await sleep(2000);
await ugv.call('stop_robot', {});
const image = await ugv.call('capture_image', {});
Architecture
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β Claude/LLM ββββββΆβ NANDA Agent ββββββΆβ UGV Robot β
β (planning) βββββββ (protocol) βββββββ (hardware) β
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β
βΌ
βββββββββββββββ
β Other Agentsβ
β (discover) β
βββββββββββββββ
Why NANDA + Robots?
- Discoverability β Robots announce themselves on the network
- Interoperability β Standard A2A protocol, any agent can command
- Composability β Vision agent + Nav agent + Arm agent = coordinated system
- Payments β Charge for robot services via X402 micropayments