8、控制机器人运动

8、控制机器人运动8.1、实验目标8.2、实验准备8.3、实验效果8.4、程序源码

8.1、实验目标

控制Rosmaster上的前进后退,向左向右,设置小车的相关参数。

 

8.2、实验准备

电机接口具有防反接功能,使用Rosmaster的电机排线连接到电机即可。

电机对应的接口线序如下图所示:

image-20210903114433917

控制Rosmaster的电机需要用到的Rosmaster_Lib库函数:

参数解释:小车运动控制,此功能会读取编码器的脉冲数据,从而计算小车运动的速度。根据不同小车可能存在差异性,这里以麦克纳姆轮小车为例: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]

返回值:无。

 

参数解释:PID 参数控制,会影响set_car_motion函数控制小车的运动速度变化情况。默认情况下可不调整。

kp ki kd = [0, 10.00], 可输入小数。

forever=True永久保存,=False临时作用。

永久保存是将数据写入到单片机芯片的Flash中,重启后数据不丢失,写入时间较久,所以加入delay延迟时间,避免导致单片机丢包的问题。临时作用反应快,单次有效,重启单片后数据不再保持。

返回值:无。

 

参数解释:单片机自动返回数据状态位,默认为开启,如果设置关闭会影响到读取数据功能。

enable=True,底层扩展板会每隔40毫秒发送一次数据。enable=False,则不发送。

forever=True永久保存,=False临时作用。

返回值:无。

 

参数解释:清除单片机自动发送过来的缓存数据。

返回值:无。

 

参数解释:重置小车flash保存的数据,恢复出厂默认值。长按扩展板上的K2键约10秒也可以达到此功能。

返回值:无。

 

以下函数功能都是返回数据,需要在create_receive_threading()正常启动的情况下才能读取数据:

参数解释:获取加速度计三轴数据

返回值:a_x, a_y, a_z

 

参数解释:获取陀螺仪三轴数据

返回值:g_x, g_y, g_z

 

参数解释:获取小车速度,返回val_vx, val_vy, val_vz

返回值:val_vx, val_vy, val_vz

 

参数解释:获取小车的运动PID参数,读取错误返回[-1, -1, -1]

返回值:kp, ki, kd

 

8.3、实验效果

请查看课程配套视频。

注意:如果在本课程中修改了一部分配置并设置了永久保存,导致后续出现异常的情况(例如:设置自动返回数据状态enable=False,并永久保存为True,导致无法正常读取数据)。请调用reset_flash_value()函数,或者长按扩展板上的KEY1键约10秒,恢复出厂配置。

 

8.4、程序源码

将Rosmaster机器人打开电源开机,并打开Jetson Nano或者远程电脑的浏览器进入Jupyter lab编辑器。

参考代码路径:Rosmaster/Samples/8.car_motion.ipynb