控制小车移动
通过 MyAGVPlus 提供的运动控制接口,您可以方便地控制全向麦克纳姆轮底盘进行平移、后退以及原地旋转等操作。
1 接口说明
平移类的移动指令需要传入 speed(速度)参数,其有效范围为 0.01 到 1.60 (m/s)。出于安全考虑,如果速度设置越界,系统将弹出警告并在底层自动拦截。原地旋转的指令参数为 angular_speed(角速度)。
常用运动接口如下:
move_forward(speed): 控制小车向前平移move_backward(speed): 控制小车向后平移move_left_lateral(speed): 控制小车向左横向平移move_right_lateral(speed): 控制小车向右横向平移turn_left(angular_speed): 控制小车原地左转(逆时针旋转)turn_right(angular_speed): 控制小车原地右转(顺时针旋转)stop(): 紧急刹车停止所有运动,底层将瞬间下发 0 速度指令
安全须知: 系统后台运行有自动保护进程。若出现严重亏电(<19.0V)或电机过流卡死,系统会自动忽略新的速度指令并锁死电机,请及时检查报错日志
BACKGROUND VOLTAGE DETECTED!或STALL DETECTED!。
2 简单演示
创建一个新的 Python 文件 control_move.py,并输入以下代码:
from pymycobot.myagvplus import MyAGVPlus
import time
# 初始化 MyAGVPlus 对象
agv = MyAGVPlus('/dev/myagvplus_controller', baudrate=921600, esp32_port='/dev/ttyACM0', esp32_baud=115200, debug=True)
# 开启机器人(继电器上电并使能电机,需等待约 6 秒让电机完全启动)
agv.power_on()
speed = 0.5 # 设置统一平移速度 0.5 m/s
angular_speed = 0.5 # 设置旋转角速度 0.5 rad/s
print("向前平移...")
agv.move_forward(speed)
time.sleep(2)
agv.stop()
time.sleep(1)
print("原地左转...")
agv.turn_left(angular_speed)
time.sleep(2)
agv.stop()
time.sleep(1)
print("向右横移...")
agv.move_right_lateral(speed)
time.sleep(2)
agv.stop()
# 运行完毕,安全关闭机器人电源并禁用电机
agv.power_off()