满足机器人与人的交互,还需要人机交互模块。根据各个模块之间的关系得到机器
人软件的总体框图如图 3.10 所示。
在这一小节中主要是对机器人底盘软件进行设计,所涉及的模块主要是机器
人的控制模块,如图 3.10 中标红的部分。机器人自身的软件重点工作有两个:一
是解算上层规划层给出的运动指令下发给驱动单元,二是机器人接收遥控器数据
下发控制底盘运动,并通过数传通道反馈自身状态信息给监控端。具体实现流程如
图 3.11 所示。
图 3.11 为机器人底盘的控制流程。当底盘节点开启时,程序会循环检测控制
输入信号。当有控制输入时,判断输入信号是否为遥控话题发布的数据,如果为遥
控数据,机器人数据链路切换到人机交互链路;如果不是遥控话题发布数据,保持
机器人自主运行的正常通信链路。将控制信号输入到 SWDMR 的映射矩阵中将控
制信号转换成各个电机的驱动信号(如果电机为速度模式,则为轮速信号;如果电
机是力矩模式,则为电流信号),控制机器人的运动。判断机器人是否到达目标位
置,如果未到达,进入下一个循环;如果到达目标位置,则结束控制流程。
3.4 六轮差速移动机器人落地测试
3.4.1 六轮差速移动机器人遥控测试
软件框架设计完成将所有的硬件模块部署在机器人本体上,调试信号通道,进
行落地测试,初步验证软件的正确性,并暴露出机器人当前可能存在的一些问题。
落地测试验证了 SWDMR 的遥控通道的稳定性,紧急停止,差速转向等功能。
测试过程中发现当只给机器人某个方向的运动指令时,机器人的实际运动轨迹会
不断往一个方向发生偏移。分析产生这种现象的原因可能是车身结构的问题或者
路面不平整导致了在不改变遥控指令的情况下机器人偏离期望轨迹。将实验场地
选在路面较为平整的室内,还是会出现室外测试的现象,排除了路面因素导致机器
人的偏移。经过检查发现是因为机器人左前轮悬架安装位置有所偏差,最终使得机
器人在运行时会产生一个横向的力矩,使得机器人不断向一边偏移,形成一个螺纹
式的运动曲线。机器人某时刻的运行状态如图 3.13 所示:
3.4.2 基于 PID 的纠偏调节
根据前一小节的测试发现的问题,设计辅助控制器以减小这种系统误差产生
的影响,使得机器人能够较好的执行控制指令。选取机器人的横摆角作为性能指标,
通过加入 IMU 闭环补偿使得车辆有一定的纠偏能力。纠偏控制框图如图 3.14 所
示:
采样控制输入时刻机器人的实际横摆角度值,以此横摆角的值为起始横摆角,
将 IMU 测得的机器人横摆角反馈给辅助控制器,起始横摆角与机器人执行控制输
入时的横摆角做差,将差值输入到外环 PID 控制器,实现对横摆角的控制。为了
使得机器人的调节更加平滑,将外环 PID 控制器的输出作为内环 PID 的输入,并
通过 IMU 得到机器人调节过程中的横摆角速度,将两个变量做差输入到内环 PID
控制器实现横摆角速度的控制。下一采样时刻,重复上述过程。
图 3.15 是在室内测试时记录的曲线,蓝色曲线为横摆角速度响应曲线;黑色
曲线为横摆角响应曲线;红色虚线为横摆角设定曲线,上升沿时刻表示将当前机器
人的横摆角设置为参考值。在 0-15s 这个时间段处于待机状态,测试通信是否均为
正常;在 15-30s ,机器人在无纠偏控制下向前运动,因为有横摆角速度的存在,角
度误差一直在累积;在 30-35s 为处于待机状态;在 35-55s, 机器人回退到起点并手
动调整机器人车身位置,保证机器人与无纠偏状态下的初始位置一致;在 55s 之后
是进行纠偏实验, 58s 设定当前 IMU 上报的横摆角度位置为目标方向,纠偏控制
接入, 75s 给速度指令让机器人运动,角度值基本上与设定值保持一致, 140s 结束
实验。下面对横摆角速度进行分析:
图 3.16 为室内测试时机器人横摆角速度响应曲线,根据实验数据可以得到机
器人在没有纠偏控制时,前进时会有一个 -0.016rad/s 左右的横摆角速度存在;后退
时有一个 0.044rad/s 左右的横摆角速度,加入纠偏处理后,横摆角速度基本上稳定
在了 0 附近。
图 3.17 为室外测试时机器人的横摆角变化。在不加纠偏直行时,图 3.17(a) 所
示的 75-110s 时间段:机器人行驶 7m 左右车身方向就偏移了 32.9° 。控制机器人回
到初始的位置并手动调整底盘位姿,保持与开始实验时位置一致,纠偏控制介入,
如图 3.17(b) 所示纠偏过程中,机器人的航向角调节始终维持在目标值附近,最大
误差为 0.8° ,平均误差仅为 0.01° 。
3.5 本章小结
本章主要工作是搭建六轮差速移动机器人,首先对机器人可能需要用到的硬
件做了初步的分析,对驱动单元的额定转矩做了预估;接着是对基础硬件做了选
型及测试,验证了硬件的功能并测试出在遮挡条件下数据传输的稳定行,最大的
通信距离;然后对机器人软件设计的整体框架做了介绍,着重介绍了控制模块的
控制流程;最后是对机器人的搭建,并在搭建完成之后做了落地测试,同时根据
测试的效果设计了纠偏控制器作为运动控制的辅助控制器,使得机器人能够更为
准确的执行上层下发的控制指令。