控制Rosmaster上的前进后退,向左向右,设置小车的相关参数。
电机接口具有防反接功能,使用Rosmaster的电机排线连接到电机即可。
电机对应的接口线序如下图所示:
控制Rosmaster的电机需要用到的Rosmaster_Lib库函数:
set_car_motion(v_x, v_y, v_z)
参数解释:小车运动控制,此功能会读取编码器的脉冲数据,从而计算小车运动的速度。根据不同小车可能存在差异性,这里以麦克纳姆轮小车为例:v_x表示小车纵向速度,单位为m/s,正数前进,负数后退;v_y控制表示小车的横向速度,单位为m/s,正数为向左,负数为向右;v_z表示小车旋转速度,单位为rad/s,正数为左旋,负数为右旋。
v_x=[-1.0, 1.0], v_y=[-1.0, 1.0], v_z=[-5.0, 5.0]
返回值:无。
xxxxxxxxxx
set_pid_param(kp, ki, kd, forever=False)
参数解释:PID 参数控制,会影响set_car_motion函数控制小车的运动速度变化情况。默认情况下可不调整。
kp ki kd = [0, 10.00], 可输入小数。
forever=True永久保存,=False临时作用。
永久保存是将数据写入到单片机芯片的Flash中,重启后数据不丢失,写入时间较久,所以加入delay延迟时间,避免导致单片机丢包的问题。临时作用反应快,单次有效,重启单片后数据不再保持。
返回值:无。
xxxxxxxxxx
set_auto_report_state(enable, forever=False)
参数解释:单片机自动返回数据状态位,默认为开启,如果设置关闭会影响到读取数据功能。
enable=True,底层扩展板会每隔40毫秒发送一次数据。enable=False,则不发送。
forever=True永久保存,=False临时作用。
返回值:无。
xxxxxxxxxx
clear_auto_report_data()
参数解释:清除单片机自动发送过来的缓存数据。
返回值:无。
xxxxxxxxxx
reset_flash_value()
参数解释:重置小车flash保存的数据,恢复出厂默认值。长按扩展板上的K2键约10秒也可以达到此功能。
返回值:无。
以下函数功能都是返回数据,需要在create_receive_threading()正常启动的情况下才能读取数据:
xxxxxxxxxx
get_accelerometer_data()
参数解释:获取加速度计三轴数据
返回值:a_x, a_y, a_z
xxxxxxxxxx
get_gyroscope_data()
参数解释:获取陀螺仪三轴数据
返回值:g_x, g_y, g_z
xxxxxxxxxx
get_motion_data()
参数解释:获取小车速度,返回val_vx, val_vy, val_vz
返回值:val_vx, val_vy, val_vz
xxxxxxxxxx
get_motion_pid()
参数解释:获取小车的运动PID参数,读取错误返回[-1, -1, -1]
返回值:kp, ki, kd
请查看课程配套视频。
注意:如果在本课程中修改了一部分配置并设置了永久保存,导致后续出现异常的情况(例如:设置自动返回数据状态enable=False,并永久保存为True,导致无法正常读取数据)。请调用reset_flash_value()函数,或者长按扩展板上的KEY1键约10秒,恢复出厂配置。
将Rosmaster机器人打开电源开机,并打开Jetson Nano或者远程电脑的浏览器进入Jupyter lab编辑器。
参考代码路径:Rosmaster/Samples/8.car_motion.ipynb