无人驾驶方程式赛车智能控制系统平台开发*
2020-10-13闫丰雨李刚张心怡卢铭昊
闫丰雨 李刚 张心怡 卢铭昊
(辽宁工业大学汽车与交通工程学院)
无人驾驶技术在减轻驾驶员操纵负担和提高车辆行驶安全性方面具有重要意义,控制系统是其核心部分,也是开发难点之一[1]。在传统开发中,无人驾驶控制程序设计与验证通常要在实际场地或特定场景下进行反复调试,这种调试时常受到场地与天气因素限制,且需要大量可视化数据,但数据采集与存储并不容易,所以文章提出了一个集程序开发、仿真验证和数据采集与存储于一体的控制系统开发平台[2]。该系统给工程师提供了一套完整的开发工具,可以帮助工程师完成程序开发调试,并且缩短开发周期。经过验证,该平台可以达到预期效果。
1 平台控制算法
1.1 模型预测控制算法设计MPC
模型预测控制致力于将更长时间跨度、甚至于无穷时间的最优化控制问题,分解为若干个更短时间跨度,或者有限时间跨度的最优化控制问题,并且在一定程度上仍然追求最优解[3]。模型预测控制主要由预测模型、在线滚动优化和反馈校正3 个要素组成。本控制系统采用基于运动学模型的模型预测控制,模型预测控制原理,如图1 所示。
图1 模型预测控制原理图
其中k、k+1 分别表示当前时刻、下一时刻,横轴k+m 到k+p 范围内为预测时域。曲线u,yp分别代表系统的输出和当前状态,而yp与y 轴和r(·)围成的面积为系统的累计误差。
1.2 航向预估控制
航向跟踪预估控制算法的基本思想是预测无人驾驶汽车的航向变化趋势,并将其计入到控制偏差中,这样航向角的变化就可以影响控制器的输出,也就是无人驾驶汽车的前轮转角[5]。当无人驾驶汽车开始根据控制指令进行运转的时候,要经过一个采样周期T,但是此时的无人驾驶汽车的航向已经改变,也就是控制指令执行的时候已经有了一个采样周期的延时,而且,当采样周期一定,无人驾驶汽车纵向速度或其他影响因素不同时,航向的变化量也是不同的[6]。
在Simulink 控制模型中将期望航向与实际航向之差作为控制器的输入量,控制器控制输出量为无人驾驶汽车的前轮转角,无人驾驶汽车输出纵向速度、当前航向以及前轮转角,作为控制算法的反馈量,从而形成能够实时反馈的闭环控制,如图2 所示。
图2 航向跟踪预估控制逻辑图
2 平台硬件设计
无人驾驶汽车智能控制系统平台的硬件部分主要分为整车控制器和EBS 紧急制动系统。
2.1 整车控制器设计
整车控制器设计主要运行智能算法,通过CAN 总线通讯、RS485 通讯、RS232 串口通讯以及普通IO 口通讯对整车的执行部件进行智能控制。
整车控制器采用意法半导体的STM32F4 系列的芯片STM32F405RGT6,内核为ARM Cortex-M4。内核处理速度高,车辆信息处理迅速。该芯片不仅内核主频高,而且还具有非常丰富的外设。例如有bxcan 控制器、nvic 中断控制器、串口,DMA、SPI、IIC、GPIO 等。针对控制器的要求,会使用的功能主要集中在CAN 通讯,串口通讯及DMA,GPIO 等开关量控制,如图3 所示。
图3 整车控制器示意图
CAN 通讯、485 通讯和232 通讯等多种通讯方式可以提高控制器的兼容性,方便匹配各种通讯方式的其他控制器来对整车进行控制。485 通讯主要使用AMD2483 芯片将芯片端口电平转换为满足485 通讯标准的通讯电平。485 通讯电路,如图4 所示。
图4 485 通讯单元电路原理图
2.2 紧急制动系统设计
2.2.1 逻辑处理单元
逻辑处理单元主要由2 个74 系列或非门芯片对整车的供电状态进行监控,当发生故障时,该芯片通过逻辑判断出故障设备,并直接通过输出电平变化来驱动继电器控制电磁阀开关,直接触发紧急制动机械系统实现停车。电路原理图,如图5 所示。
图5 逻辑处理单元电路原理图
2.2.2 状态锁存单元
该装置不仅可以对故障进行判断处理,而且还可以将故障状态锁存住,只有将整车关闭后,修复故障,才可以解除安全状态。锁存单元主要由3 个双路继电器搭成的锁存电路实现功能,原理如图6 所示。
图6 锁存单元电路原理图
2.2.3 自身供电保护单元
如果处于无人驾驶状态期间,EBS 自身供电出现故障,将无法监测整车的安全状态,所以一定要对这种危险进行处理。在该装置上添加了自身供电自检,并通过电容放电的方式来给EBS 提供足够的能量实现整车断电并执行紧急停车。
2.2.4 机械气缸制动驱动单元
当逻辑单元对故障进行判断后,会输出相应的错误电平控制继电器电平变化,驱动电磁阀触发气缸,实现紧急停车。
3 平台软件设计
无人驾驶汽车智能控制系统平台软件部分主要使用MATLAB/Simulink 进行设计,软件部分主要包括Simulink 自定义模型库和数据处理App,其中包括算法库WicTeam-algorithm、硬件接口库 WicTeam-Control-Interface 和模型仿真库WicTeam-simulation 3 个自定义开发库。Simulink 自定义开发库,如图7 所示。
图7 Simulink 自定义模型库显示界面
上述软件库主要可以满足正常无人驾驶程序设计,使用硬件接口库完成硬件控制器中的快速原型程序的搭建,并使用STM32-MAT 和STM32cubeMX 联合生成嵌入式代码,然后部署到整车控制器中。这样可以极大地加快无人驾驶赛车的开发进度。
用户可以直接调用算法库中的模型,搭配上用户设计参数,这样就可以优化控制程序,使程序达到最佳控制效果。
仿真库主要可以验证整个程序的运行效果,在场地不满足调试需要的情况下,完成试验仿真调试,并且可以在实车测试之前对整车程序进行仿真验证。
除了3 个接口库,本系统还设计了1 个数据处理App(WicTeam—HT),WicTeam—HT 可以将整车控制器中采集到的试验数据读取到软件中,并进行绘图处理,绘制出的二维曲线可以反映出整车在执行无人驾驶任务过程中的参数变化情况,其曲线如图8所示。
图8 WicTeam-HT 界面示意图
WicTeam_HT 通过控制器USB 端口直接与电脑相连,连接后将控制器数据存储模块的数据导入到电脑中,这些数据以.xls 格式存储在控制器存储单元中。通过MATLAB 将表格内的数据读取到工作空间中,然后使用数据处理App 绘制出当前数据的曲线图。
4 试验验证与误差分析
无人驾驶汽车智能算法开发平台包括硬件快速原型控制器、软件算法、接口和仿真库,并且添加了数据可视化展示平台,整个平台如图9 所示。
图9 无人驾驶汽车智能控制系统开发平台
为了验证文章中的轨迹点生成方法及轨迹跟踪效果,在MATLAB 中编写了M 语言,设定汽车轴距为2.8 m,分别以车速30 km/h、60 km/h 进行了验证,由于设定的轨迹长度是一定的,所以30 km/h 形成的轨迹点比60 km/h 形成的轨迹点多一倍。设定汽车状态输入向量为(x,y,θ),其中 x 为车辆横向位置,y 为车辆纵向位置,θ 为车辆当前航向角。设置汽车的初始状态为(0,0,60°),向量中以 0.05 s 的轨迹点采样时间,每2 个采样点之间车辆模型分10 步运行,轨迹点和前轮转角的仿真结果,如图10 和图11 所示。从图10 可以看出,实际轨迹点和参考轨迹点的误差很小,最大偏差为0.19 m。从图11 可以看出,平滑的前轮转角更符合车辆行驶稳定性。
图10 仿真跟踪轨迹点
图11 前轮转角仿真结果
从图10 中可以看出,仿真路径与实车测试路径很相近,说明整个软件在设计程序过程中的效果很理想。
经过仿真测试与实车测试之后,需要进行实车道路测试,整车控制器通过CAN 总线接收环境感知系统处理得到的参考路径数据,控制算法程序解算出所需要的目标控制量,并发送给实车上的执行部件实现无人驾驶控制的实时性、响应性和精确性,如图12 所示。采用现有的MPC 控制算法模型对汽车的转向系统进行控制,从图12 可以看出,感知系统规划好路径之后,无人驾驶汽车能够稳定地跟踪参考路径行驶。
图12 实车道路测试示意图
5 结论
本无人驾驶智能控制系统平台进行了无人驾驶领域主流的控制算法的研究,开发了控制算法仿真环境,配置了可生成代码的框架,使得使用者能够根据自己的需求生成目标代码,并与控制器底层接口代码进行集成。自行设计完成控制器硬件电路板,通过仿真分析和试验验证的手段,验证了所设计的无人驾驶汽车智能控制系统平台能够满足使用者的开发需求,并且控制算法能够安全稳定地在控制器里运行。平台同时具有一定的可扩展性,使用者可以根据需求进行二次开发。无人驾驶汽车智能控制系统平台对新型智能电动汽车的发展具有重要的参考价值,无人驾驶汽车控制方式是当今及未来无人驾驶汽车控制的发展方向,为无人驾驶汽车控制算法的开发和验证,提供了可靠的仿真验证平台,并且缩短了开发周期,对未来无人驾驶汽车的发展具有一定的指导意义。