概览#
motors_py.MotorDriver 是电机驱动的Python入口。工厂可选择 DM、EVO、LRO、RP、XYN,接口与反馈语义由具体驱动决定。
创建与控制模式#
Python
MotorDriver.create_motor(
motor_id, interface_type, interface, motor_type, motor_model,
master_id_offset=0, motor_zero_offset=0.0
)MotorControlMode 暴露 NONE=0、MIT=1、POS=2、SPD=3。使用前检查所选驱动支持的模式与总线;LRO、RP、XYN的EtherCAT路径暂不可用。
主要方法#
| 方法 | 作用与边界 |
|---|---|
init_motor() / deinit_motor() |
初始化/去初始化设备;初始化返回 uint8_t,需按驱动解释 |
set_motor_control_mode(mode) |
请求控制模式 |
motor_pos_cmd(pos, spd, ignore_limit=False) |
位置指令;忽略限制参数会改变保护语义 |
motor_spd_cmd(spd) |
速度指令 |
motor_mit_cmd(p,v,kp,kd,tau) |
单组MIT指令 |
motors_mit_cmd(f_p,f_v,f_kp,f_kd,f_t) |
数组MIT绑定,最多8槽 |
refresh_motor_status() |
请求状态刷新 |
get_motor_pos() / get_motor_spd() |
缓存位置/速度 |
get_motor_current() / get_motor_temperature() |
缓存反馈;物理量依驱动 |
get_error_id() / clear_motor_error() |
读错误缓存/请求清除;不证明硬件根因已经解除 |
set_motor_zero() / write_motor_flash() |
修改零位/持久参数 |
Python 与 C++的差别#
数组MIT绑定最多处理8个位置元素,其余数组缺值会补零,超出8槽的元素不会进入该绑定。调用前校验所有数组长度和索引。
set_motor_id(old_id,new_id) 仅在C++公共头中声明;Python绑定提供 reset_motor_id(),没有 set_motor_id()。
返回值和缓存#
按具体驱动解释 init_motor() 返回编码:DM中0为DOWN、1为UP,其他编码可能表示故障。lock_motor() / unlock_motor() 的作用同样依驱动而定;停止操作使用该驱动与交付设备的规定接口。
refresh_motor_status() 发出状态请求,getter随后仍读缓存。get_response_count() 是未响应计数:发送递增,收到反馈清零。get_motor_current() 的反馈量可能是力矩或电流,单位按具体驱动解释。
对照具体错误定义见 驱动错误。