Skip to main content

API:Motor

导入

from motorbridge import Motor  # 通常通过 Controller.add_*_motor() 获取
Motor 实例由 Controller.add_*_motor() 方法创建。请勿直接实例化。

生命周期方法

enable()

使能电机输出(给绕组通电)。 参数: 返回: None 抛出: CallError 失败时

disable()

禁用电机输出(断电,电机变为自由旋转)。 参数: 返回: None 抛出: CallError 失败时

clear_error()

清除电机上的任何错误状态。 参数: 返回: None 抛出: CallError 失败时

set_zero_position()

将当前位置设置为零参考点。 参数: 返回: None 抛出: CallError 失败时
这会修改电机的内部位置参考。在多电机系统中请谨慎使用。

模式控制

ensure_mode(mode, timeout_ms=1000)

将电机切换到指定的控制模式(带超时)。 参数:
名称类型默认值描述
modeMode必需目标控制模式
timeout_msint1000超时时间(毫秒)
返回: None 抛出: CallError 如果模式切换失败或超时

控制命令

send_mit(pos, vel, kp, kd, tau)

发送 MIT 模式控制命令。提供对位置、速度、刚度、阻尼和力矩的完全控制。 参数:
名称类型描述
posfloat目标位置(弧度)
velfloat目标速度(rad/s)
kpfloat位置刚度(Nm/rad)
kdfloat速度阻尼(Nm·s/rad)
taufloat前馈力矩(Nm)
返回: None 抛出: CallError 失败时
MyActuator 不支持 MIT 模式。RobStride 的 MIT 支持有限。

send_pos_vel(pos, vlim)

发送位置-速度模式命令。电机以受限速度移动到目标位置。 参数:
名称类型描述
posfloat目标位置(弧度)
vlimfloat速度限制(rad/s)
返回: None 抛出: CallError 失败时
RobStride 不支持 POS_VEL 模式。

send_vel(vel)

发送速度模式命令。电机以恒定速度运行。 参数:
名称类型描述
velfloat目标速度(rad/s)
返回: None 抛出: CallError 失败时
Hexfellow 不支持 VEL 模式。

send_force_pos(pos, vlim, ratio)

发送力位置模式命令。带力比例的柔顺位置控制。 参数:
名称类型描述
posfloat目标位置(弧度)
vlimfloat速度限制(rad/s)
ratiofloat力比例(0.0-1.0)
返回: None 抛出: CallError 失败时
RobStride、MyActuator 和 Hexfellow 不支持 FORCE_POS 模式。

反馈方法

request_feedback()

请求电机发送新鲜反馈帧。 参数: 返回: None 抛出: CallError 失败时

get_state()

获取上次收到反馈的缓存电机状态。 参数: 返回: MotorState | None — 电机状态,如果尚未收到反馈则为 None

寄存器访问(达妙)

这些方法主要用于达妙电机。

write_register_f32(rid, value)

向寄存器写入 32 位浮点值。 参数:
名称类型描述
ridint寄存器 ID
valuefloat要写入的值
返回: None 抛出: CallError 失败时

write_register_u32(rid, value)

向寄存器写入 32 位无符号整数值。 参数:
名称类型描述
ridint寄存器 ID
valueint要写入的值
返回: None 抛出: CallError 失败时

get_register_f32(rid, timeout_ms=1000)

从寄存器读取 32 位浮点值。 参数:
名称类型默认值描述
ridint必需寄存器 ID
timeout_msint1000超时时间(毫秒)
返回: float — 寄存器值 抛出: CallError 失败或超时时

get_register_u32(rid, timeout_ms=1000)

从寄存器读取 32 位无符号整数值。 参数:
名称类型默认值描述
ridint必需寄存器 ID
timeout_msint1000超时时间(毫秒)
返回: int — 寄存器值 抛出: CallError 失败或超时时

store_parameters()

将当前参数保存到电机的非易失性存储器。 参数: 返回: None 抛出: CallError 失败时

RobStride 专用方法

robstride_ping()

Ping RobStride 电机以获取设备和响应者 ID。 参数: 返回: tuple[int, int] — (device_id, responder_id) 抛出: CallError 失败时

robstride_set_device_id(new_device_id)

为 RobStride 电机设置新的设备 ID。 参数:
名称类型描述
new_device_idint新设备 ID
返回: None 抛出: CallError 失败时

robstride_write_param_*

向 RobStride 电机写入类型化参数值。
方法类型
robstride_write_param_i8(param_id, value)int(有符号 8 位)
robstride_write_param_u8(param_id, value)int(无符号 8 位)
robstride_write_param_u16(param_id, value)int(无符号 16 位)
robstride_write_param_u32(param_id, value)int(无符号 32 位)
robstride_write_param_f32(param_id, value)float

robstride_get_param_*

从 RobStride 电机读取类型化参数值。
方法返回类型
robstride_get_param_i8(param_id, timeout_ms=1000)int
robstride_get_param_u8(param_id, timeout_ms=1000)int
robstride_get_param_u16(param_id, timeout_ms=1000)int
robstride_get_param_u32(param_id, timeout_ms=1000)int
robstride_get_param_f32(param_id, timeout_ms=1000)float

另见