因个人原因断更了一段时间,非常抱歉!

接着之前的从零教你设计ROS试验车(1)从零教你设计ROS试验车(2)。下面给大家介绍一下在此基础上升级之后的ROS试验车,主要开发了机器人的控制程序,并在原来的基础上添加了液晶显示屏 。

升级前的机器人三维模型和实物图

升级后的机器人三维模型和实物图

从零教你设计ROS试验车(2)中的最后部分,我们提到当前这款机器人没有搭载液晶显示屏,并给出了进行数据监控的两个方案。但是,通过户外调试遇到的种种问题,我们发现,安装一个液晶显示屏还是很香的。本次采用的是触摸式液晶显示屏,机器人搭载单目相机进行测试(本次试验首先测试机器人的运动控制)。

小车运动控制调试(动态)

从上面视频中我们可以看出,我们不但可以通过机器人搭载的液晶显示屏进行数据监控。而且,在同一局域网下可通过远程工具进行机器人远程桌面控制,实现远程数据监控。由于机器人上搭载的上位机为TX2,使用的是Ubuntu系统,常用的远程桌面工具(ToDesk、向日葵)基本都不支持ARM板,因此,我们采用NoMachine工具进行远程桌面控制。Nomachine工具在2G网络下也可实现较为流畅的数据传输,并且操作简单,只需获取机器人IP、用户名、用户密码即可。我们我们的测试主要是在同一局域网下进行的,如果需要远程测试,可采用端口映射的方法。

硬件升级之后,我们同时适配了机器人软件系统。软件采用PyQt5进行人机交互界面开发,实现机器人数据监控和运动控制。上面我们提到,本次的测试采用的是单目相机进行数据采集(机器人上方搭载的激光雷达,本次试验暂不进行测试,后续会对激光雷达通讯协议进行报文解析,并使用激光雷达进行环境感知)。

人机交互界面

人机交互界面我们采用PyQt5开发。关于12V10Ah锂电池、12V20Ah锂电池和惯性导航传感器通讯报文,采用pyserial库进行串口数据发送和接收;图像目标检测采用YOLOv5进行数据集训练和识别。

人机交互界面左侧为图像显示区域:用于显示单目或者双目相机图像;中间为数据监控区域:主要用于显示12V10Ah锂电池、12V20Ah锂电池和惯导数据;右侧为机器人运动控制区域:通过滑块调节机器人运动速度(机器人电机转速-100~100 RPM),再通过按键将控制指令发送至下位机控制板,实现机器人运动控制。机器人不仅包含手动控制,还能够实现自主巡检操作,上位机通过目标识别算法对机器人周围环境进行感知,同时进行路径规划,再根据USB转RS232数据线对下位机发送控制指令,实现机器人自主巡航。

人机交互界面(操作演示)

目前机器人动作主要包括前进、后退、左转、右转、急停五个主要动作,在急停模式下,将运动控制进行初始化(速度置0)。在自动控制模式下,开启YOLO目标检测算法,对周围目标进行检测识别,并输出控制指令至下位机,实现机器人自主越障。

在机器人运动控制过程中,我们需要注意的地方有:

1、机器人采用四驱控制,编写控制程序时,机器人左侧2个轮子动作保持一致、右侧2个轮子动作保持一致。

2、机器人采用四驱控制,原地转动时容易出现晃动,建议更改机器人配重。

3、机器人运动控制过程中,速度变化应避免出现阶跃式变化(可采用线性变化)。

4、机器人在转弯时,应注意转弯速度不应过大。

机器人运动控制(速度变化曲线)