Documentation Index
Fetch the complete documentation index at: https://motorbridge.seeedstudio.com/llms.txt
Use this file to discover all available pages before exploring further.
Reference: Vendor Capability Matrix
Vendor Overview
| Vendor | Add Method | Typical Transport | Protocol Family |
|---|
| Damiao | add_damiao_motor() | SocketCAN, DM Serial | DM-J4310/4340 |
| RobStride | add_robstride_motor() | SocketCAN | RobStride Extended CAN |
| MyActuator | add_myactuator_motor() | SocketCAN | MyActuator RMD |
| HighTorque | add_hightorque_motor() | SocketCAN | HighTorque native |
| Hexfellow | add_hexfellow_motor() | CAN-FD | Hexfellow MIT |
Unified Mode Support
| Vendor | Typical Models | MIT | POS_VEL | VEL | FORCE_POS |
|---|
| Damiao | 4310, 4340P, 6006 | ✅ | ✅ | ✅ | ✅ |
| RobStride | rs-00 through rs-06 | ✅ | ✅ | ✅ | ❌ |
| MyActuator | X8 | ❌ | ✅ | ✅ | ❌ |
| HighTorque | hightorque | ✅ | ✅ | ✅ | ✅ |
| Hexfellow | hexfellow | ✅ | ✅ | ❌ | ❌ |
RobStride Mapping Notes
MIT maps to native impedance packet (pos/vel/kp/kd/tau all effective).
POS_VEL maps to native position flow (run_mode=1, loc_ref, limit_spd, optional loc_kp).
- Always pass the physical RobStride model (
rs-00 … rs-06) for limits and logs. High-level control and runtime parameter read/write share the protocol section 4 table (0x7005..0x702E).
- Full runtime parameter tables are available in RobStride Parameter Tables.
- In unified
pos-vel, CLI args --vel/--kd/--tau are ignored by design and shown as warnings.
- Torque/current is currently parameter-level only (
write-param), not a separate unified mode (FORCE_POS remains ❌).
Unified Mode -> Native Vendor Mapping
| Unified Mode | Damiao | RobStride | MyActuator | HighTorque | Hexfellow |
|---|
MIT | Native MIT | Native MIT | Not supported | Mapped to native pos+vel+tqe | Native MIT |
POS_VEL | Native POS_VEL | Native position flow (run_mode=1 + loc_ref + limit_spd) | Native position flow | Native POS_VEL | Native POS_VEL |
VEL | Native VEL | Native Velocity | Native Velocity | Native Velocity | Not supported |
FORCE_POS | Native FORCE_POS | Not supported | Not supported | Mapped to native pos+vel+tqe | Not supported |
Experimental Section: Vendor-Native Protocol Entrypoints (Implemented)
This section exposes implemented vendor-native capabilities that are outside the unified 4-mode surface, mainly for commissioning/debug workflows.
| Vendor | Native Entrypoints (examples) | Notes |
|---|
| Damiao | id-dump, id-set, damiao-read-param, damiao-write-param --store 1 (CLI) + set_zero_position() (API) | Register/parameter R/W, ID update, zeroing flow |
| RobStride | ping, robstride-read-param, robstride-write-param --store 1, run --mode read-param/write-param/save | 29-bit extended-frame parameter path; runtime parameters use the common section 4 table (0x7005..0x702E); save uses type 22 with status ACK |
| MyActuator | Vendor-native command path (adapter exposed) | Position/velocity-first flow, limited register surface |
| HighTorque | Vendor-native command path (adapter exposed) | Internal scaling under unified API |
| Hexfellow | CAN-FD native path (socketcanfd) | Primarily MIT/POS_VEL, requires CAN-FD |
Linux / macOS:
motorbridge-cli robstride-read-param \
--channel can0 --model rs-06 --motor-id 127 \
--param-id 0x7019 --type f32 --timeout-ms 500
Windows (PowerShell):
motorbridge-cli robstride-read-param `
--channel can0@1000000 --model rs-06 --motor-id 127 `
--param-id 0x7019 --type f32 --timeout-ms 500
Use --model rs-06 only for a physical RS06 motor. For other RS00-RS05 motors, replace it with the actual model for limits/logging; runtime read-param / write-param uses the common section 4 table.
Persist a RobStride parameter in v0.3.3:
motorbridge-cli robstride-write-param \
--channel can0 --model rs-06 --motor-id 127 \
--param-id 0x701E --type f32 --value 30.0 --verify 1 --store 1
All examples below use the unified Python package CLI: motorbridge-cli.
Linux (Ubuntu / SocketCAN)
# RobStride POS_VEL (supported)
motorbridge-cli run \
--vendor robstride --transport auto --channel can0 \
--model rs-06 --motor-id 127 --feedback-id 0xFD \
--mode pos-vel --pos 1.5 --vlim 1.0 --loc-kp 5.0 --loop 1 --dt-ms 20
# Damiao FORCE_POS
motorbridge-cli run \
--vendor damiao --transport auto --channel can0 \
--model 4340P --motor-id 0x01 --feedback-id 0x11 \
--mode force-pos --pos 0.8 --vlim 1.5 --ratio 0.3 --loop 20 --dt-ms 20
macOS
# CAN path (requires PCBUSB runtime)
motorbridge-cli run \
--vendor robstride --transport auto --channel can0 \
--model rs-06 --motor-id 127 --feedback-id 0xFD \
--mode pos-vel --pos 1.5 --vlim 1.0 --loc-kp 5.0 --loop 1 --dt-ms 20
# Damiao dm-serial path (no CAN runtime needed)
motorbridge-cli run \
--vendor damiao --transport dm-serial \
--serial-port /dev/cu.usbmodemXXXX --serial-baud 921600 \
--model 4340P --motor-id 0x01 --feedback-id 0x11 \
--mode mit --pos 0.5 --vel 0 --kp 20 --kd 1 --tau 0 --loop 20 --dt-ms 20
Windows (PowerShell / PCAN)
# RobStride POS_VEL (PCAN channel example)
motorbridge-cli run `
--vendor robstride --transport auto --channel can0@1000000 `
--model rs-06 --motor-id 127 --feedback-id 0xFD `
--mode pos-vel --pos 1.5 --vlim 1.0 --loc-kp 5.0 --loop 1 --dt-ms 20
# Damiao FORCE_POS
motorbridge-cli run `
--vendor damiao --transport auto --channel can0@1000000 `
--model 4340P --motor-id 0x01 --feedback-id 0x11 `
--mode force-pos --pos 0.8 --vlim 1.5 --ratio 0.3 --loop 20 --dt-ms 20
Notes:
- Linux/macOS CAN channel is typically
can0.
- Windows PCAN is typically
can0@1000000.
dm-serial is Damiao-only.
Host / Feedback ID Notes
| Vendor | Recommended feedback/host ID policy |
|---|
| Damiao | Distinct feedback ID per motor path (motor_id + base) |
| RobStride | Default to 0xFD; runtime may fallback probe 0xFF/0xFE |
| MyActuator | 0x240 + motor_id |
| HighTorque | Fixed by protocol path |
| Hexfellow | Fixed by protocol path |
Register / Parameter Access
| Vendor | Read | Write | Persist |
|---|
| Damiao | Full register API | Full register API | Yes |
| RobStride | Typed parameter API | Typed parameter API | Yes |
| MyActuator | Limited | Limited | Yes |
| HighTorque | Limited | Limited | Yes |
| Hexfellow | Limited | Limited | Yes |
RobStride Parameter API
motor.robstride_get_param_i8(param_id, timeout_ms)
motor.robstride_get_param_u8(param_id, timeout_ms)
motor.robstride_get_param_u16(param_id, timeout_ms)
motor.robstride_get_param_u32(param_id, timeout_ms)
motor.robstride_get_param_f32(param_id, timeout_ms)
motor.robstride_write_param_i8(param_id, value)
motor.robstride_write_param_u8(param_id, value)
motor.robstride_write_param_u16(param_id, value)
motor.robstride_write_param_u32(param_id, value)
motor.robstride_write_param_f32(param_id, value)
Reference Example (RobStride)
from motorbridge import Controller, Mode
with Controller("can0") as ctrl:
motor = ctrl.add_robstride_motor(6, 0xFD, "rs-06") # replace with the RS model you use for limits/logging
ctrl.enable_all()
motor.ensure_mode(Mode.POS_VEL, 1000)
motor.send_pos_vel(0.3, 2.0)
motor.ensure_mode(Mode.MIT, 1000)
motor.send_mit(0.0, 0.0, 8.0, 0.3, 0.0)
Device-ID and Zeroing Status (RobStride)
set-id: available and aligned with upper-tool style frame semantics.
zero: available via control command path, with firmware-dependent ACK behavior.
- For production commissioning, always verify by reading back
mechPos / status after zero or ID changes.