Skip to main content

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

VendorAdd MethodTypical TransportProtocol Family
Damiaoadd_damiao_motor()SocketCAN, DM SerialDM-J4310/4340
RobStrideadd_robstride_motor()SocketCANRobStride Extended CAN
MyActuatoradd_myactuator_motor()SocketCANMyActuator RMD
HighTorqueadd_hightorque_motor()SocketCANHighTorque native
Hexfellowadd_hexfellow_motor()CAN-FDHexfellow MIT

Unified Mode Support

VendorTypical ModelsMITPOS_VELVELFORCE_POS
Damiao4310, 4340P, 6006
RobStriders-00 through rs-06
MyActuatorX8
HighTorquehightorque
Hexfellowhexfellow

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-00rs-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 ModeDamiaoRobStrideMyActuatorHighTorqueHexfellow
MITNative MITNative MITNot supportedMapped to native pos+vel+tqeNative MIT
POS_VELNative POS_VELNative position flow (run_mode=1 + loc_ref + limit_spd)Native position flowNative POS_VELNative POS_VEL
VELNative VELNative VelocityNative VelocityNative VelocityNot supported
FORCE_POSNative FORCE_POSNot supportedNot supportedMapped to native pos+vel+tqeNot 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.
VendorNative Entrypoints (examples)Notes
Damiaoid-dump, id-set, damiao-read-param, damiao-write-param --store 1 (CLI) + set_zero_position() (API)Register/parameter R/W, ID update, zeroing flow
RobStrideping, robstride-read-param, robstride-write-param --store 1, run --mode read-param/write-param/save29-bit extended-frame parameter path; runtime parameters use the common section 4 table (0x7005..0x702E); save uses type 22 with status ACK
MyActuatorVendor-native command path (adapter exposed)Position/velocity-first flow, limited register surface
HighTorqueVendor-native command path (adapter exposed)Internal scaling under unified API
HexfellowCAN-FD native path (socketcanfd)Primarily MIT/POS_VEL, requires CAN-FD

RobStride Native Parameter Command (Cross-Platform)

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

Cross-Platform Command Templates

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

VendorRecommended feedback/host ID policy
DamiaoDistinct feedback ID per motor path (motor_id + base)
RobStrideDefault to 0xFD; runtime may fallback probe 0xFF/0xFE
MyActuator0x240 + motor_id
HighTorqueFixed by protocol path
HexfellowFixed by protocol path

Register / Parameter Access

VendorReadWritePersist
DamiaoFull register APIFull register APIYes
RobStrideTyped parameter APITyped parameter APIYes
MyActuatorLimitedLimitedYes
HighTorqueLimitedLimitedYes
HexfellowLimitedLimitedYes

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.