小米赛博电机
小米赛博电机是 Robodyno 的第三方模组,它可以作为机器人的关节或者驱动轮,也可以以其他形式作为机器人的动力源。
控制
小米赛博电机可以通过Python API 进行控制。
状态
电机需要进入使能(ENABLE)状态才能进行控制,否则会被动力系统忽略。
通过以下方式进入使能状态:
from robodyno.interfaces import CanBus
from robodyno.components import MiMotor
can_bus = CanBus()
motor = MiMotor(can_bus)
motor.enable()
通过以下方式退出使能状态:
from robodyno.interfaces import CanBus
from robodyno.components import MiMotor
can_bus = CanBus()
motor = MiMotor(can_bus)
motor.disable()
通过以下方式查看电机的状态:
from robodyno.interfaces import CanBus
from robodyno.components import MiMotor
can_bus = CanBus()
motor = MiMotor(can_bus)
print(motor.state)
转动
通过以下方式可以控制电机转动到指定的目标位置:
from robodyno.interfaces import CanBus
from robodyno.components import MiMotor
can_bus = CanBus()
motor = MiMotor(can_bus)
motor.position_mode()
motor.enable()
motor.set_pos(6.28)
通过以下方式可以控制电机按照指定的目标速度转动:
from robodyno.interfaces import CanBus
from robodyno.components import MiMotor
can_bus = CanBus()
motor = MiMotor(can_bus)
motor.velocity_mode()
motor.enable()
motor.set_vel(3.14)
Robodyno 的小米赛博电机的运动模式分为以下几种:
- MIT模式(
MIT) - 位置模式(
POSITION) - 速度模式(
VELOCITY) - 力矩模式(
TORQUE)
设置
电机 ID
通过以下方式设置电机 ID:
from robodyno.interfaces import CanBus
from robodyno.components import MiMotor
can_bus = CanBus()
current_id = 0x7F
new_id = 0x77
motor = MiMotor(can_bus, current_id)
motor.config_can_bus(new_id = new_id)
# 保存设置
motor = MiMotor(can_bus, new_id)
motor.save()
电机运行参数
通过以下方式设置电机运行参数:
from robodyno.interfaces import CanBus
from robodyno.components import MiMotor
can_bus = CanBus()
motor = MiMotor(can_bus)
# 设置 PID
motor.set_pid(100, 0.02, 0.1)
print(motor.get_pid())
# 设置电流限制
motor.set_current_limit(10)
print(motor.get_current_limit())
# 设置速度限制
motor.set_vel_limit(5)
print(motor.get_vel_limit())
# 保存设置
motor.save()
错误
如果电机运行过程中出现异常,可以通过以下方式查看错误信息:
from robodyno.interfaces import CanBus
from robodyno.components import MiMotor
can_bus = CanBus()
motor = MiMotor(can_bus)
print(motor.error)
完整的错误列表请参考 电机错误。
在确保电机没有异常的情况下,可以通过以下方式清除错误:
from robodyno.interfaces import CanBus
from robodyno.components import MiMotor
can_bus = CanBus()
motor = MiMotor(can_bus)
motor.clear_errors()
硬件参数
| 参数 | 小米 Cyber Gear |
|---|---|
| 电源输入 | 11.1V ~ 24V |
| 额定功率 | 102W |
| 最大相电流 | 23A |
| 减速比 | 7.75:1 |
| 额定扭矩 | 4Nm |
| 最大扭矩 | 12Nm |
| 最大转速 | 296RPM |
API
| 组件 | 说明 |
|---|---|
| can_bus.mi_motor | CAN 总线小米赛博电机类 |