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.
Source:
bindings/python/DAMIAO_binding.mdPython 实用示例(Damiao 完整用法)
本文件只聚焦 Damiao:把 Python 绑定里 Damiao 常用接口、四种控制模式、参数配置和完整执行顺序讲清楚。English version: README.md
1) 通道与运行前提
- Linux SocketCAN 直接用
can0/can1/slcan0。 - Linux 下
--channel不要写@bitrate(例如can0@1000000无效)。 - Windows PCAN 后端中,
can0/can1映射PCAN_USBBUS1/2(可带@bitrate)。 - 运行示例前建议设置:
2) Damiao 标准执行流程(必须理解)
- 创建控制器并绑定电机(
Controller+add_damiao_motor)。 - 上电使能(
ctrl.enable_all())。 - 切换或确认控制模式(
motor.ensure_mode(...))。 - 按模式发送命令(
send_mit/send_pos_vel/send_vel/send_force_pos)。 - 按需读反馈(
request_feedback/get_state或脚本中的打印)。 - 测试结束失能(
motor.disable()或ctrl.disable_all())。
3) Damiao 接口总览(Python 绑定)
3.1 Controller 侧
Controller(channel="can0")Controller.from_dm_serial(serial_port="/dev/ttyACM0", baud=921600)add_damiao_motor(motor_id, feedback_id, model)enable_all()disable_all()poll_feedback_once()shutdown()close_bus()
3.2 Motor 侧
- 基础控制:
enable()disable()ensure_mode(mode, timeout_ms)send_mit(pos, vel, kp, kd, tau)send_pos_vel(pos, vlim)send_vel(vel)send_force_pos(pos, vlim, ratio)
- 反馈与维护:
request_feedback()get_state()clear_error()set_zero_position()set_can_timeout_ms(timeout_ms)store_parameters()
- 寄存器读写:
get_register_f32(rid, timeout_ms)write_register_f32(rid, value)get_register_u32(rid, timeout_ms)write_register_u32(rid, value)
4) 四种模式怎么用(方法 + 参数)
4.1 MIT(全参数混合控制)
方法:send_mit(pos, vel, kp, kd, tau)
参数:
pos:目标位置,单位radvel:目标速度,单位rad/skp:位置刚度(无量纲)kd:速度阻尼(无量纲)tau:前馈力矩,单位Nm
kp=2~10, kd=0.05~0.5, tau=0.1~1.0
4.2 POS_VEL(位置 + 速度上限)
方法:send_pos_vel(pos, vlim)
参数:
pos:目标位置,单位radvlim:速度上限,单位rad/s
4.3 VEL(纯速度)
方法:send_vel(vel)
参数:
vel:目标速度,单位rad/s
4.4 FORCE_POS(位置 + 力矩限幅)
方法:send_force_pos(pos, vlim, ratio)
参数:
pos:目标位置,单位radvlim:速度上限,单位rad/sratio:力矩/电流限幅比例,范围0~1(不是精确恒扭矩)
5) Damiao 示例脚本与用途
python_wrapper_demo.py:MIT 最小闭环full_modes_demo.py:四模式统一入口scan_ids_demo.py:Damiao 扫描pos_ctrl_demo.py:单次位置目标multi_motor_ctrl_demo.py:多电机控制(-id/-pos一一对应)+ SDK 每步耗时日志mit_pos_switch_demo.py:多电机模式切换测试(MIT -> POS_VEL)pos_repl_demo.py:交互式位置控制pid_register_tune_demo.py:寄存器调参damiao_maintenance_demo.py:维护接口(清错、置零、超时、反馈)damiao_register_rw_demo.py:寄存器 f32/u32 读写 + 存参damiao_dm_serial_demo.py:Damiao 串口桥传输链路dm_serial_mode_switch_200_demo.py:dm-serial连续切换四模式(每模式可设循环次数,默认 200)dm_serial_status_like_cli_demo.py:dm-serial查询当前模式 + 关键寄存器 + 实时状态(类 CLI 输出)dm_serial_leader_monitor_demo.py:dm-serialleader 监控(指定 ID 全状态上报 + 启动时全体使能)
6) 按顺序实操命令(推荐)
6.1 扫描
6.2 MIT(最小验证)
6.3 四模式统一入口
6.4 维护接口
6.5 寄存器读写
6.6 串口桥链路(Damiao 专用)
6.7 多电机位置控制 + 每步 SDK 计时(4号与7号示例)
-id后可传多个电机 ID(空格或逗号都可)。-pos与-id顺序一一对应。--trace-sdk 1:打印每次 SDK 调用耗时(add/enable/ensure/send/get_state/close)。--timing-log 1:打印汇总统计(平均、最小、最大、总耗时)。
6.8 模式切换测试(MIT 与 POS_VEL,4号与7号示例)
--mit-hold-loops 0表示仅验证 MIT 切换,不发 MIT 控制循环。--pos-hold-loops 50表示在 POS_VEL 下执行 50 个循环。