教程 02:使能与状态读取
电机状态机
在理解使能之前,先了解电机的状态:- 电机绕组不通电
- 转子可以用手自由转动
- 发送命令无效
- 电机绕组通电
- 产生扭矩,会锁住位置
- 可以响应控制命令
步骤一:创建控制器
首先创建一个控制器来管理 CAN 通信:
返回值: Controller 对象
可能抛出的异常:
CallError- CAN 接口无法打开
步骤二:添加电机
告诉控制器你要控制哪个电机:步骤三:使能电机
使能就是给电机”通电”,让它开始工作:步骤四:读取状态
获取电机的实时数据:
弧度单位说明:
- 1 圈 = 2π 弧度 ≈ 6.28 弧度
- 90° = π/2 弧度 ≈ 1.57 弧度
- 180° = π 弧度 ≈ 3.14 弧度
完整示例
为什么 get_state() 返回 None?
这是初学者最常遇到的问题:原因 1:没有调用 request_feedback()
原因 2:反馈还没到达
CAN 通信有延迟,请求后需要等待:原因 3:电机 ID 错误
用motorbridge-cli scan 确认 ID 是否正确。
重试模式(推荐)
为了可靠读取状态,使用重试模式:状态码含义
温度监控
禁用电机
用完后禁用电机:poll_feedback_once() 说明
版本差异:- v0.1.6 及以前:需要手动调用
ctrl.poll_feedback_once() - v0.3.3 起,当前 v0.5.0 仍适用:后台自动处理,通常不需要手动调用
下一步
- 教程 03:模式切换和控制 - 发送控制命令
- 教程 04:多电机控制 - 同时控制多个电机