A) CLI 部分(4个例子)
dm-serial):
dm-serial仅支持--vendor damiao。- 如果出现
open serial port 1 failed,通常是SER/BAUD/MODEL变量未生效导致参数错位。
dm-serial场景当前更稳妥的是scan/enable/mit/disable。- 若
pos-vel/vel/force-pos仍不稳定,建议改走socketcan(can0)执行这三种模式。
dm-serial 场景希望更快返回时,--ensure-timeout-ms 建议先用 300,按现场再调到 200~500。
Python dm-serial 现成示例脚本(可直接运行):
A.1 参数含义 / 单位 / 常用范围(Damiao)
| 参数 | 含义 | 单位 | 常用范围(4340P/4310 调试) | 备注 |
|---|---|---|---|---|
--channel | CAN 接口名 | - | can0 / can1 / slcan0 | Linux 下不要写 @bitrate |
--model | 电机型号提示 | - | 4340P / 4310 | 建议和真实型号一致 |
--motor-id | 控制帧目标 ID | - | 0x01 起 | 与电机 ID 一致 |
--feedback-id | 反馈帧 ID | - | 常见 motor_id + 0x10 | 例如 0x01 -> 0x11 |
--mode | 控制模式 | - | mit/pos-vel/vel/force-pos | 四种核心模式 |
--pos | 目标位置 | rad | 常见 -3 ~ +3 起步 | 先小范围验证方向 |
--vel | 目标速度(MIT/VEL) | rad/s | 常见 -2 ~ +2 起步 | vel 模式是主命令 |
--kp | 位置刚度(MIT) | - | 常见 1 ~ 20 | 大了会更“硬” |
--kd | 速度阻尼(MIT) | - | 常见 0.05 ~ 1.0 | 大了更“刹车” |
--tau | 前馈力矩(MIT) | Nm | 常见 0.1 ~ 2.0 起步 | 扫描里可看到该型号 tmax |
--vlim | 速度上限(POS_VEL/FORCE_POS) | rad/s | 常见 0.5 ~ 3.0 | 用于限制运动速度 |
--ratio | 力矩/电流限幅比例(FORCE_POS) | 0~1 | 常见 0.1 ~ 0.4 | 不是精确恒扭矩 |
--loop | 发送周期次数 | 次 | 50 ~ 5000 | 越大持续越久 |
--dt-ms | 周期时间 | ms | 10 / 20 | 越小刷新越快 |
A.2 四种模式使用场景(记忆版)
MIT:最通用,位置+速度+阻抗+前馈扭矩一起调。适合精细调手感、做混合控制。POS_VEL:到某个角度,并限制速度。适合“先到位”的安全动作。VEL:纯速度指令。适合连续转动、速度响应测试。FORCE_POS:位置目标 + 力矩限幅。适合“要到位,但别死顶太狠”。
A.3 调参建议(实操)
- 先用
POS_VEL小速度到位,确认方向和机械限位。 - 再上
MIT,从小kp/kd、小tau开始递增。 FORCE_POS先从ratio=0.1~0.2起步,逐步增加。- 每次测试后执行文末
disable停机命令。
B) ABI 部分(C/C++,4个例子)
先构建 ABI 和 demo:C) ABI Python(ctypes) 部分(4个例子)
D) bindings/python 部分(4个例子)
E) bindings/cpp 部分(4个例子)
先构建:F) 通用停机命令
G) 扫描功能(4种方式)
G.1 方式1:Rust CLI 扫描(推荐,信息最全)
idfeedback_idmodel_guesslimits=(pmax,vmax,tmax)
G.2 方式2:Python binding 扫描脚本(scan_ids_demo)
motor-idfeedback-id- 命中/未命中结果
G.3 方式3:C++ binding 扫描脚本(scan_ids_demo)
motor-idfeedback-id- 命中/未命中结果
G.4 方式4:Python SDK CLI 扫描(motorbridge-cli)
vendorid- 命中数量统计
G.5 扫描信息对齐说明
- 你要的“总线电机是否存在、ID 是多少”,4 种方式都能查。
feedback_id:CLI / Python scan_ids_demo / C++ scan_ids_demo 可直接看到。model_guess与limits:以 Rustmotor_cli --mode scan的输出最完整,其他扫描方式通常不做完整型号猜测与极限打印。- 如果要做“发现 + 精确识别 + 控制参数选型”,建议流程:
- 先用
G.1扫描 - 再用 A/B/C/D/E 的四模式命令做控制验证
- 先用