motor_cli 的全参数完整说明。
- Crate:
motor_cli - 推荐(release 压缩包):
./bin/motor_cli [参数...] - 可选(源码编译后):
./target/release/motor_cli [参数...]
优先使用 Release 二进制
先从 GitHub Releases 下载并解压对应包(例如motor-cli-vX.Y.Z-linux-x86_64.tar.gz),再直接运行:
motor_cli 命令:
Damiao 指令与寄存器进阶文档
- 中文详表(指令/寄存器/调参):
DAMIAO_API.zh-CN.md - English version:
DAMIAO_API.md
RobStride 指令与参数进阶文档
- 中文详表(参数/能力边界):
ROBSTRIDE_API.zh-CN.md - English version:
ROBSTRIDE_API.md
MyActuator 指令与模式进阶文档
- 中文详表(命令/模式/参数):
MYACTUATOR_API.zh-CN.md - English version:
MYACTUATOR_API.md
HighTorque 补充说明
- 协议深度分析文档:
../docs/zh/hightorque_protocol_analysis.md - 当前
vendor=hightorque为 原生 ht_can v1.5.5 的“直连 CAN”模式,不是官方的“串口->CANboard”传输链路。
CAN 调试入口
- Linux
slcan+ Windowspcan专业排障:../docs/zh/can_debugging.md - English guide:
../docs/en/can_debugging.md
传输标识
[STD-CAN]=>--transport auto|socketcan[CAN-FD]=>--transport socketcanfd(仅 Linux;Hexfellow 必须使用)[DM-SERIAL]=>--transport dm-serial(仅 Damiao)
- Hexfellow:
socketcanfd路径已实测,统一mit/pos-vel可用。 - HighTorque:标准 CAN 下统一
mit/vel已实测可用(协议层忽略kp/kd)。 - Damiao:统一
mit/pos-vel/vel/force-pos的基线实现。
1. 参数解析规则
- 仅解析
--key value形式。 - 支持裸 mode 简写,例如
motor_cli scan --vendor robstride ...等价于--mode scan。 - 单独开关(如
--help)会按值1处理。 - ID 类参数支持十进制(如
20)与十六进制(如0x14)。 - 未被代码使用的参数即使传入,也不会生效。
1.1 统一调用范式(CLI 大一统)
所有品牌都遵循同一个调用骨架,只是vendor/model/mode 与附加参数不同:
socketcanfd为 Hexfellow 必需链路;Damiao 可按型号做 CAN-FD 验证;dm-serial仅 Damiao 可用。vendor=all当前仅用于统一扫描(--mode scan)。
1.2 通用参数语义(先理解这些)
| 参数 | 语义 |
|---|---|
--vendor | 选择品牌驱动实现(统一入口下发到不同 vendor backend) |
--transport | 选择传输层(标准 CAN 或 Damiao 串口桥) |
--channel | CAN 通道名(Linux 为网卡名;Windows 可带 @bitrate) |
--model | 型号名称,用于该品牌下的限值/能力边界与编码映射 |
--motor-id | 目标电机 ID(发送命令目标) |
--feedback-id | 反馈帧/主机侧 ID;RobStride 下是 host_id,不是电机 ID |
--mode | 控制/查询动作类型(不同品牌支持集合不同) |
--loop / --dt-ms | 循环发送次数 / 周期 |
--ensure-mode | 控制前是否自动切控制模式(Damiao 等支持) |
1.3 各品牌参数变量怎么传(统一调用下的差异)
| 品牌 | --model 传入 | --motor-id / --feedback-id 传入 | 常用 --mode |
|---|---|---|---|
| Damiao | 必传且建议按电机真实型号(混型场景不要写死一个 model) | motor-id 与 feedback-id 都需要按实际设备传入 | scan、enable、disable、mit(当前串口桥建议这四个) |
| RobStride | 必须传真实型号:rs-00 到 rs-06 | motor-id 必传;feedback-id 常用 0xFD | ping、scan、mit、vel、read-param、write-param、save |
| HighTorque | 传 hightorque(hint) | 按设备 ID 传入 | read、mit、pos、vel、tqe、scan 等 |
| MyActuator | 传运行时型号字符串(默认 X8) | 标准 11-bit 规则(常用 0x140+id / 0x240+id) | status、scan、current、vel、pos、enable/disable |
| all | 分品牌 hint(--damiao-model 等) | 仅扫描场景使用 | scan |
2. 顶层通用参数(所有 vendor)
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--help | flag | 关闭 | 输出帮助并退出 |
--version, -v | flag | 关闭 | 输出 Rust CLI 包版本并退出 |
--vendor | string | damiao | damiao / robstride / hightorque / myactuator / hexfellow / all |
--transport | string | auto | auto / socketcan / socketcanfd / dm-serial(socketcanfd 为 Hexfellow 必需;dm-serial 仅 Damiao) |
--channel | string | can0 | Linux:SocketCAN 网卡名(can0/slcan0);Windows(PCAN 后端):can0/can1,可加 @bitrate(如 can0@1000000);macOS(PCBUSB 后端):can0/can1 |
--serial-port | string | /dev/ttyACM0 | --transport dm-serial 时使用 |
--serial-baud | u64 | 921600 | --transport dm-serial 时使用 |
--model | string | 按 vendor 决定 | Damiao 默认 4340;RobStride 必须使用真实 rs-00 到 rs-06 型号;HighTorque 默认 hightorque;MyActuator 默认 X8 |
--motor-id | u16(hex/dec) | 0x01 | 电机 CAN ID |
--feedback-id | u16(hex/dec) | 按 vendor 决定 | Damiao 默认 0x11;RobStride 默认 0xFD;HighTorque 默认 0x01;MyActuator 默认 0x241(motor-id=1) |
--mode | string | 按 vendor 决定 | Damiao 默认 mit;RobStride 默认 ping;HighTorque 默认 read;MyActuator 默认 status;all 默认 scan |
--loop | u64 | 1 | 控制循环次数 |
--dt-ms | u64 | 20 | 循环间隔毫秒 |
--ensure-mode | 0/1 | 1 | 控制前自动切模式 |
2.1 通道速查(--channel)
- Linux SocketCAN:
- 直接使用网卡名:
can0、can1、slcan0。 - 波特率在网卡初始化阶段设置(
ip link/slcand),不要写到--channel。 can0@1000000在 Linux SocketCAN 下无效。
- 直接使用网卡名:
- Windows PCAN:
can0映射PCAN_USBBUS1,can1映射PCAN_USBBUS2。- 支持可选波特率后缀:
can0@1000000。
- macOS PCBUSB(PCAN 后端):
can0映射PCAN_USBBUS1,can1映射PCAN_USBBUS2。- 需先安装
libPCBUSB.dylib(见仓库根目录README.zh-CN.md的 macOS 章节)。
2.2 Damiao 串口桥速查(--transport dm-serial)
- 该链路为适配器私有路径,面向 Damiao 电机。
- 常用参数:
--transport dm-serial --serial-port /dev/ttyACM1 --serial-baud 921600。 dm-serial模式下,传输层创建会忽略--channel。dm-serial仅改变“传输层”(走串口桥),Damiao 的业务参数与模式接口保持一致(--mode、--motor-id、--feedback-id、--verify-model、--ensure-mode等)。
2.3 Damiao 独立 CAN-FD 链路速查(--transport socketcanfd)
- 该链路为 Linux 专用,并与经典
socketcan链路并存。 - 常用参数:
--transport socketcanfd --channel can0。 - 使用前先确保网口处于 FD 模式(
scripts/canfd_restart.sh can0)。 - 当前状态:链路已接入,尚未标注“已完成 CAN-FD 电机验证”的型号列表。
3. vendor=damiao
3.1 支持模式
scanenabledisablemitpos-velvelforce-pos
3.2 Damiao 专用参数
| 参数 | 类型 | 默认值 | 作用范围 | 说明 |
|---|---|---|---|---|
--verify-model | 0/1 | 1 | 非 scan | 校验 PMAX/VMAX/TMAX 与 --model 一致 |
--verify-timeout-ms | u64 | 500 | 非 scan | 型号握手读取超时 |
--verify-tol | f32 | 0.2 | 非 scan | 限值匹配容差 |
--start-id | u16 | 1 | scan | 扫描起始 ID(1..255) |
--end-id | u16 | 255 | scan | 扫描结束 ID(1..255) |
--set-motor-id | u16 可选 | 无 | 改 ID 流程 | 写 ESC_ID(RID 8) |
--set-feedback-id | u16 可选 | 无 | 改 ID 流程 | 写 MST_ID(RID 7) |
--store | 0/1 | 1 | 改 ID 流程 | 是否保存参数 |
--verify-id | 0/1 | 1 | 改 ID 流程 | 是否回读 RID7/RID8 校验 |
3.3 各模式控制参数
| 模式 | 参数 | 默认值 |
|---|---|---|
mit | --pos --vel --kp --kd --tau | 0 0 2 1 0 |
pos-vel | --pos --vlim | 0 1.0 |
vel | --vel | 0 |
force-pos | --pos --vlim --ratio | 0 1.0 0.1 |
enable / disable | 无额外参数 | n/a |
3.4 扫描行为细节
- 扫描逻辑本质上是“型号无关”的:内部会遍历内置 model-hint 列表。
- 每个候选 ID 会尝试多个 feedback-hint:推断值(
id+0x10)、用户给定--feedback-id、0x11、0x17。 - 优先用寄存器(RID 21/22/23)检测,失败再走反馈回退检测。
3.5 Damiao 示例
3.6 Damiao 串口桥完整接口与用法(--transport dm-serial)
先定义公共前缀(建议):
3.6.1 串口桥下必用/常用参数
| 参数 | 是否建议显式传入 | 说明 |
|---|---|---|
--transport dm-serial | 必须 | 切到 Damiao 串口桥链路 |
--serial-port | 必须 | 串口设备,如 /dev/ttyACM1 |
--serial-baud | 必须 | 串口波特率,常用 921600 |
--channel | 可省略 | 该模式下会被忽略 |
--motor-id / --feedback-id | 控制时必须 | 与扫描命中结果一致 |
--verify-model | 建议按现场开关 | 若握手链路不稳定可先设 0 做联通验证 |
--ensure-mode | 建议按现场开关 | 若电机模式切换流程不稳定可先设 0 |
当前串口桥场景对外推荐仅使用:scan/enable/disable/mit。
3.6.2 串口桥下常用四模式命令模板
3.6.3 推荐测试顺序
scan先确认在线 ID。enable --loop 1做最小动作验证。mit小步参数(小pos、中低kp/kd)验证控制闭环。- 最后再上业务参数与连续循环。
4. vendor=robstride
4.1 支持模式
pingscanenabledisablemitpos-velvelread-paramwrite-param
4.2 RobStride 专用参数
| 参数 | 类型 | 默认值 | 作用范围 | 说明 |
|---|---|---|---|---|
--start-id | u16 | 1 | scan | 扫描起始 ID(1..255) |
--end-id | u16 | 255 | scan | 扫描结束 ID(1..255) |
--feedback-ids | csv u16 | 0xFD,0xFF,0xFE,0x00,0xAA | scan | RobStride host_id 候选列表,范围 0..255;不是电机 ID |
--timeout-ms | u64 | 80 | scan | ping 探测超时 |
--param-timeout-ms | u64 | 120 | scan | 参数回退探测超时 |
--manual-vel | f32 | 0.2 | scan 回退 | 盲探速度 |
--manual-ms | u64 | 200 | scan 回退 | 每个 ID 脉冲时长 |
--manual-gap-ms | u64 | 200 | scan 回退 | ID 间隔 |
--set-motor-id | u16 可选 | 无 | 改 ID 流程 | 设置新设备 ID,范围 1..255 |
--store | 0/1 | 改 ID 默认 1,写参默认 0 | 改 ID / write-param | 改 ID 后保存,或参数写入成功后保存 |
--param-id | u16 | 参数模式必填 | 读写参数 | 参数 ID |
--param-value | 类型化值 | 写参数必填 | write-param | 按所选 RobStride 型号的参数元数据解析 |
4.3 各模式控制参数
| 模式 | 参数 | 默认值 |
|---|---|---|
mit | --pos --vel --kp --kd --tau | 0 0 8 0.2 0 |
pos-vel | --pos --vlim [--kp] | 0 1.0 [无] |
vel | --vel | 0 |
enable / disable | 无额外参数 | n/a |
- RobStride 统一高层当前支持
MIT/POS_VEL/VEL。 - 当前支持 RobStride 型号:
rs-00、rs-01、rs-02、rs-03、rs-04、rs-05、rs-06。 - RobStride 必须按真实电机传
--model。基础控制命令的上层形态一致,但原生功能码/参数表使用第 4 章通用运行参数;同一个功能码在不同型号上可能对应不同名称或类型。 - 内置 RS00-RS06 参数表对齐 RobStride/Product_Information commit
ba7236bc26417766fda71e75ae128c66dbd21aba。 TORQUE/CURRENT目前仍是参数级能力(通过write-param写iq_ref与限幅参数),尚未开放统一模式。- RobStride 的
mit五个参数都生效:--pos、--vel、--kp、--kd、--tau。 - RobStride 的
mit单位:pos(rad)、vel(rad/s)、tau(Nm),kp/kd为 MIT 闭环增益。 - RobStride 的
pos-vel仅消费--pos、--vlim、可选--kp/--loc-kp。 - RobStride 的
pos-vel会忽略--vel、--kd、--tau(CLI 在传入时会打印 warning)。
4.4 扫描行为细节
- 第一阶段:每个 ID 做
ping+ 参数查询探测。 - 全范围无命中时:进入盲探速度脉冲模式(人工观察是否转动)。
- 回退阶段若有状态反馈,也会计入命中。
4.5 RobStride 示例
5. vendor=all
vendor=all 当前仅支持 --mode scan。
5.1 all-scan 额外参数
| 参数 | 默认值 | 说明 |
|---|---|---|
--damiao-model | 4340P | 传给 Damiao 扫描流程的 model hint |
--robstride-model | rs-00 | 传给 RobStride 扫描流程的 model hint |
--hightorque-model | hightorque | 传给 HighTorque 扫描流程的 model hint |
--myactuator-model | X8 | 传给 MyActuator 扫描流程的 model hint |
--start-id | 1 | 同时传给各扫描流程 |
--end-id | 255 | 传给 Damiao/RobStride;MyActuator 会自动截断到 32 |
5.2 示例
5.3 vendor=hightorque(原生 ht_can v1.5.5)
- 当前实现走 HighTorque 原生
ht_canv1.5.5 直连 CAN 协议路径。 - 用于 SocketCAN(
can0等)直连电机场景。 - HighTorque 官方 Panthera SDK 的“USB 串口 -> CANboard -> 电机”链路与当前 CLI 直连 CAN 路径相互独立。
- 支持模式:
scan | read | ping | mit | pos | vel | tqe | pos-vel-tqe | volt | cur | stop | brake | rezero | conf-write | timed-read。 - 统一单位接口:
--pos为rad--vel为rad/s--tau为Nm--kp、--kd为统一 MIT 参数签名保留,ht_can协议本身不使用。- 原始调试参数:
--raw-pos、--raw-vel、--raw-tqe。
6. vendor=myactuator
6.1 支持模式
scanenabledisablestopset-zerostatuscurrentvelposversionmode-query
6.2 MyActuator 专用参数
| 参数 | 类型 | 默认值 | 作用范围 | 说明 |
|---|---|---|---|---|
--start-id | u16 | 1 | scan | 扫描起始 ID(1..32) |
--end-id | u16 | 32 | scan | 扫描结束 ID(1..32,传入大于 32 会自动截断) |
--current | f32 | 0.0 | current | 电流目标值(A) |
--vel | f32 | 0.0 | vel | 速度目标值(rad/s,内部转换为 deg/s) |
--pos | f32 | 0.0 | pos | 绝对位置目标值(rad,内部转换为 deg) |
--max-speed | f32 | 8.726646 | pos | 位置模式最大速度(rad/s,内部转换) |
angle来自0x9C状态2近圈角。mt_angle来自0x92多圈角,绝对位置判定应优先看它。
6.3 MyActuator 示例
7. vendor=hexfellow
链路限制:
- Hexfellow 在本仓库按“仅 CAN-FD”接入(
--transport socketcanfd)。 - 当前支持范围:
scan / status / pos-vel / mit / enable / disable。 - 当前状态:链路已接入,电机验证矩阵待补。
7.1 Hexfellow 示例
8. 实用建议
- Damiao 改 ID 建议始终使用
--store 1 --verify-id 1。 - 若扫描偶发漏检,重启 CAN 后重试。
- RobStride 已支持 CLI 的
--mode pos-vel(映射到原生 Position);该模式下仅使用--pos/--vlim/[--kp|--loc-kp]。
已验证能力矩阵(Damiao + RobStride,2026-04)
| 能力 | Damiao | RobStride |
|---|---|---|
| Scan | 支持 | 支持 |
| Ping/在线探测 | 支持(scan/寄存器路径) | 支持(ping) |
| Enable/Disable | 支持 | 支持 |
MIT (pos/vel/kp/kd/tau) | 支持 | 支持 |
| POS_VEL 统一模式 | 支持 | 支持(映射到原生 Position) |
| VEL 统一模式 | 支持 | 支持 |
| 参数读写 | 支持 | 支持 |
| 置零 | 支持(建议先 disable) | 支持(实验序列;ACK 可能偶发超时) |
| 改电机 ID | 支持(--set-motor-id) | 支持(--set-motor-id) |
| 改反馈 ID | 支持(--set-feedback-id) | 不支持(RobStride 通过 --feedback-id 设定 host 路径) |
- RobStride 默认
--feedback-id为0xFD,内部会回退探测0xFF/0xFE。 - RobStride 的
pos-vel下--vel/--kd/--tau为无效参数,仅告警不报错。 - MyActuator 若
0x9A返回错误码0x0004(欠压),电机会在线但不转,需要先恢复供电电压。