Damiao AGV Specifications
Complete technical specifications: drive system, UART/DBUS protocol, channel mapping, agent CLI flags, and platform integration details.
Core Specifications
Drive system, communication, and control parameters
| Vendor | Damiao (达妙) |
| Drive Configuration | 4-wheel omnidirectional (4WS4WD) |
| Wheel Type | Mecanum or omni wheels |
| Motion Axes | X (forward/back), Y (lateral), Z (yaw/rotation) |
| Control Interface | UART5 on main controller (pin PD2, RX) |
| Baud Rate | 100000 |
| Serial Framing | 8 data bits, even parity, 2 stop bits (8E2) |
| Protocol | DBUS/SBUS-style RC frame, 18 bytes per frame |
| Channel Range | ch0–ch3: 11-bit, values 0–2047, centre 1024 |
| Amplitude Parameter | --amp default 660, range 250–900 (offset from centre 1024) |
| Control Rate | 30 Hz (configurable with --control-hz) |
| Telemetry Rate | 8 Hz (configurable with --telemetry-hz) |
| Command Timeout | 300 ms (configurable with --cmd-timeout-ms); AGV auto-stops |
| Shutdown Safety | 3 centre-position DBUS frames sent on agent exit before serial close |
| Platform Device Type | mobile_base |
| Platform Capabilities | ["mobile_base", "agv", "telemetry"] |
| Agent Module | dami_agent.py |
| Backend WebSocket URL | ws://localhost:8000 (default) |
| Mock Mode | Yes (--mock); serial port skipped, full WebSocket pipeline active |
DBUS Frame Layout
18-byte frame structure used for all motion commands
| Bytes | Content | Notes |
|---|---|---|
| 0–5 | ch0, ch1, ch2, ch3 packed (11-bit each) | Little-endian bit-packing; 44 bits in 48 bits |
| 5 (high nibble) | s0 (bits [5:4]), s1 (bits [7:6]) | Switch states; fixed at 1/1 (centre) for AGV |
| 6–15 | Mouse and keyboard fields | Zeroed; not parsed by AGV firmware |
| 16–17 | ch4 (11-bit) | Fixed at centre (1024); not used for AGV motion |
Channel-to-Velocity Mapping
How the AGV firmware decodes channels and how the agent encodes velocity commands
| Channel | Firmware Decodes As | Agent Encodes From | Formula |
|---|---|---|---|
| ch0 | Yaw (rotation) | vw (angular velocity) | ch0 = 1024 + (−vw) × amp |
| ch1 | Unused | — | Fixed at 1024 |
| ch2 | Lateral (Y) | vy | ch2 = 1024 + vy × amp |
| ch3 | Forward (X) | vx | ch3 = 1024 + vx × amp |
pyserial.PARITY_EVEN and STOPBITS_TWO.
Agent CLI Reference
All flags for dami_agent.py
| Flag | Default | Description |
|---|---|---|
| --backend | ws://localhost:8000 | Platform WebSocket base URL |
| --session | (required) | Teleop session ID (format: RC-XXXX-XXXX) |
| --node-id | hostname | AGV node identifier in the session |
| --serial-port | /dev/ttyUSB0 | USB-to-TTL adapter device path |
| --telemetry-hz | 8.0 | Frequency to send telemetry to platform |
| --control-hz | 30.0 | DBUS frame output rate (Hz) |
| --cmd-timeout-ms | 300 | Auto-stop if no command received within this window |
| --amp | 660 | Joystick amplitude; 500–760 recommended range |
| --invert-x | false | Flip forward/backward direction |
| --invert-y | false | Flip left/right direction |
| --invert-z | false | Flip rotation direction |
| --mock | false | Skip serial port; validate command pipeline only |
Platform Integration
WebSocket registration and telemetry format
| WebSocket Endpoint | /api/teleop/ws on the Fearless Platform backend |
| Registration Role | robot |
| Device Type | mobile_base |
| Capabilities | ["mobile_base", "agv", "telemetry"] |
| Telemetry Fields | vx_cmd, vy_cmd, vw_cmd (current velocity sign); feedback object with connection state, amp, timeout |
| Keepalive | Ping sent after 45 s of platform silence; AGV auto-stops after cmd timeout if connection drops |
| Episode Recording | All telemetry frames archived in JSONL alongside arm, camera, and tactile nodes in the same session |
Damiao Motor Components
QDD actuators used in the AGV drivetrain and mounted arm payloads
| Model | Peak Torque | No-Load Speed | Gear Ratio | Typical Joint |
|---|---|---|---|---|
| DM-J4310-2EC V1.1 | ~10 Nm | ~30 rpm | 10:1 | Wrist & gripper (J7, J8) |
| DM-J4340-2EC | ~18 Nm | ~15 rpm | 10:1 | Elbow & mid-arm (J4, J5, J6) |
| DM-J4340p-2EC | ~25 Nm | ~12 rpm | 10:1 | Base & shoulder (J1, J2, J3) |
| Stator Diameter | 43 mm (all variants) |
| Nominal Voltage | 24 V DC |
| Communication | CAN 2.0 / CAN FD |
| Encoder | Dual (motor-side + output-side) |
| Control Modes | MIT PVT, position, velocity, torque |
| CAN Nominal Baud | 1 Mbit/s |
| CAN FD Data Baud | Up to 5 Mbit/s |
| Operating Temperature | −20 °C to 80 °C |







