车道保持辅助系统数据可视化及控制策略
2021-05-19刘春阳王张飞陈立海
刘春阳,王张飞,隋 新,詹 坤,郭 楠,,陈立海
(河南科技大学 a.机电工程学院;b.机械装备先进制造河南省协同创新中心;c.河南省机械设计及传动系统重点实验室,河南 洛阳 471003)
0 引言
车道保持辅助(lane keeping assist, LKA)控制系统是汽车安全辅助驾驶技术研究的重要内容,通过传感器技术对车道线进行检测识别,根据LKA控制系统做出判断并控制车辆方向盘转动,从而使车辆保持在车道线内[1-2]。文献[3]采用改进单点预瞄最优曲线驾驶员模型实现了车道保持控制,但是算法鲁棒性有待提升。文献[4]提出了一种安全屏障监控的车道自动保持控制方法,低速状态下算法运算效率高,但在高速条件下性能稳定性变差。文献[5]提出了基于模糊控制理论人机共驾的控制方法,虽然可以维持在车道线内行驶,但驾驶员体验效果还有待改善。LKA控制系统在实车测试阶段,需要根据不同的车速、路况等条件进行合适的参数设置,传统模式下,需要通过开发环境对控制程序进行修改,效率低,数据可视化效果差。因此,有必要设计一套在线调试系统,在保证驾驶安全的前提下,使车辆在行驶过程中实现参数的在线调试及数据的可视化监测,帮助调试人员更好地了解车辆状态信息,提高试验调试的效率和质量。
针对上述问题,本文提出了一种基于Python语言开发的车道保持控制在线调试系统。利用PyQt开发系统界面和功能,在实车测试环境下,进行车辆状态和道路环境检测、LKA系统参数监控调整、数据存储管理以及可视化,实现车道保持控制系统安全高效的在线调试。
1 LKA系统设计
1.1 LKA控制系统结构
LKA控制系统整体结构框图如图1所示,下位机以意法半导体32位(STMicroeletronics 32-bit,STM32)控制器为核心[6],通过控制器局域网(controller area network,CAN)通信接口和各个传感器模块进行数据交互,并借助按键、显示器、指示灯等实现与驾驶员的交互操作。上位机调试软件依托Python语言开发,具有跨平台可移植特性,主要实现LKA控制系统的状态信息可视化监测、控制策略参数优化和在线调试的人机交互。
1.2 三段式LKA控制策略
系统结合驾驶员模型,模拟车辆驾驶过程,设计了三段式纠偏控制策略进行LKA控制,三段式纠偏控制策略如图2所示。以车辆发生左偏,控制车辆往右纠正到车道线内为例,设定LKA辅助扭矩发送标志位为S。
第1阶段,激活LKA纠正,设置S=1,线性增加LKA辅助扭矩使方向盘顺时针转动,辅助扭矩增速小于0.2 N·m/s。根据车辆类型,设定正向最大扭矩阈值(maximum torque threshold,MTT),当LKA扭矩达到最大扭矩阈值时,维持扭矩不变。检测方向盘转角测量值,达到设定的阈值角度时,设置S=2,降低LKA辅助扭矩使方向盘角度维持不变。当车身方位角逐渐减小且车辆回到车道中心线位置时,进入第2阶段,设置S=3,反向增加LKA扭矩,为增加车辆转向时车身的稳定性,设定反向最大扭矩阈值(reverse maximum torque threshold,RMTT)。若方向盘逆时针转动,当车身方位角减小为零时,设置S=4,减小作用于电动助力转向系统(electric power steering,EPS)执行机构的辅助扭矩,进入第3阶段。若方向盘未逆时针转动,则增大LKA辅助扭矩阈值(increase reverse torque threshold,IRTT),使方向盘逆时针转动,当车身摆正,方位角减小为零时,设置S=7,进入第3阶段。第3阶段,根据方向盘角度值,设置S=5,正向增加LKA辅助扭矩阈值(second forward torque threshold,SFTT)使方向盘顺时针转动,当方向盘回到零位时,设置S=6,使LKA辅助扭矩降为零,完成纠偏控制。
系统通过对各传感器采集的数据进行处理,分析车辆与左车道线距离(left-left distance,LLD)、车辆与右车道线距离(right-left distance,RLD)、车身方位角及车速等信息,判断车辆是否发生偏离。只有当判断车辆处于非人为控制产生的偏离时,LKA控制系统才处于激活状态,启动车辆偏离抑制功能。根据三段式LKA控制策略,通过对LLD、RLD、MTT、RMTT、IRTT、SFTT、车身方位角等参数进行不断优化,计算LKA辅助扭矩。输出辅助扭矩到EPS单元[7-9],调整车辆在车道线中的位置,从而维持车辆在车道线内行驶。
1.3 LKA系统程序设计
图3为下位机LKA控制系统软件流程图。如图3a所示,各个传感器的数据通过CAN报文方式传递,主程序在设定的内存中查询CAN报文,根据制定的通信协议对其进行解析和处理。若发生人机驾驶冲突,则LKA控制系统逐渐降低扭矩,有序退出;若未发生人机冲突,系统进入LKA主工作流程。如图3b所示,当车辆往左侧发生偏离时,启动三段式左偏右纠控制策略,通过LKA控制系统主程序对解析后的数据进行分析,计算出相应的辅助扭矩,作用于EPS执行机构[10-18];当车辆往右侧发生偏离时,启动三段式右偏左纠控制策略。下位机与上位机之间通过232公认标准(recommended standard-232,RS-232)串口通信建立连接,下位机将解析后的各项数据发送至上位机,以便通过可视化数据实时监控车辆状态。同时,对控制策略参数进行优化调整,实现在线调试功能。
(a) 系统流程图 (b) LKA主工作流程图
2 上位机软件设计
在Linux系统上采用Python3.6、PyQt5开发在线调试软件,硬件系统采用Jetson TX2运算平台[19-20],便于后续进行数据的深度挖掘。
2.1 软件功能结构设计
上位机软件功能设计结构如图4所示。上位机软件功能结构主要分为系统实时通信、数据可视化、参数配置和数据存储4个模块。系统实时通信模块主要完成上位机与下位机之间的串行通信和协议解析工作;数据可视化模块主要用于显示当前状态车辆和传感器的实时信息,包括车速、车辆到车道线距离、车身方位角、车辆是否发生偏离以及EPS传感器等数据;参数配置模块用于实现LKA三段式控制策略参数向下位机进行读写配置;数据存储模块主要用于各传感器数据以及控制策略配置参数的存储,便于数据记录、查看以及调用。
图4 上位机软件功能设计结构图
2.2 系统通信设计
上位机调试软件基于Python编写,采用Serial串口控制模块进行串口通信,支持跨平台调用[21]。上位机数据刷新频率为20 ms,可满足实时性要求。下位机与上位机之间采用ASCII码字符的形式进行数据接收和发送,定义比特率为115 200 bit/s。考虑到串口通信的利用率和系统的容错率,定义参数队列。将不同功能的参数放入参数队列,将刷新频率相近的参数放在同一个参数队列中发送,可有效减少节点信息发送次数,提高串口的利用率。根据传感器工作特性,数据发送周期分别为20 ms和80 ms。在20 ms周期内,定义发送报文为:方向盘扭矩、方向盘角度、车身方位角、辅助扭矩;在80 ms周期内,定义发送报文为:行驶速度、三段式标志位、LKA开关、左车道线距离、右车道线距离、左车道线类型、右车道线类型、左车道线曲率、右车道线曲率、左车道线置信度、右车道线置信度。
2.3 人机交互界面设计
为了便于数据观察和实现更好的人机交互功能,人机交互界面将上位机功能结构中的4个模块通过传感器数据监控、数据图形化、汽车状态监控、参数配置和用户设置5个区域进行显示。
传感器数据监控区域主要包括车辆当前位置、车道线识别、LKA辅助扭矩等数据;数据图形化区域主要将车辆与左右车道线的距离、车身方位角、方向盘转角和LKA辅助扭矩进行数据曲线显示,便于调试人员进行车辆前后状态对比分析;汽车状态监控区域用于实时更新LKA控制系统状态以及车辆运行状态,如LKA功能是否开启、车辆是否偏离车道等信息,并通过外置声卡进行声音输出,对驾驶员进行提醒;参数配置区域实现对三段式控制策略参数的读取和写入,便于调试人员对LKA控制策略参数进行在线优化;用户设置区域主要用于串口的打开和关闭、数据的存储等。
3 试验与分析
选用的试验车为江淮轻型卡车,图5a为试验车外部视图。所用视觉传感器为Mobileye-E630传感器,粘贴在前车窗的中心,经过校准后可以准确识别和测定车道线信息。试验过程中,车辆实现纠偏控制转向,如图5b所示,图5b中①和②分别为开发的LKA下位机控制器和上位机调试系统。
因试验场地限制,试验中设定车速为35~95 km/h,试验车进行多组道路测试,根据不同车速设置对应的参数,可以实现较好的纠偏效果。不同车速状态下车辆发生左偏和右偏时的纠正参数设置分别如表1和表2所示。试验中设置最低车速为35 km/h,将车速以20 km/h进行区间划分。当车速增加时,设定车辆与车道线距离阈值逐渐增大,为后续纠偏过程预留足够的响应时间,其中,设定车辆与左车道线距离阈值为-3.3~-3.2 m,设定车辆与右车道线距离阈值为3.1~3.2 m。同时,设定车身方位角和辅助扭矩阈值逐渐减小,避免车辆在进行纠偏动作时出现较大幅度摆动,设定车身方位角为-0.003~0.003 rad,设定辅助扭矩阈值为-1.3~1.5 N·m。
表1 不同车速状态下车辆左偏纠正参数
表2 不同车速状态下车辆右偏纠正参数
图6为车速85~90 km/h时实车试验数据曲线图。图6a为车辆与左右车道线的距离,用于监测当前时刻车辆在车道线内的位置;图6b为LKA辅助扭矩,辅助扭矩线性变化,作用于EPS单元,控制车辆方向盘转动;图6c为车身方位角,用于判断车辆与车道线之间的角度;图6d为方向盘角度,通过对方向盘角度进行微调,从而维持车辆在车道线内稳定行驶。图6中,A、B、C和A′、B′、C′分别表示车辆往左侧和往右侧偏离车道线,为三段式控制策略进行第1、2、3阶段纠偏控制起点;D和D′分别表示完成左侧和右侧偏离的纠偏控制。
当车辆往左侧发生偏离,同时满足LKA控制系统激活条件时,启动三段式纠偏控制模式。第1阶段,给EPS执行机构施加辅助扭矩进行纠正,如图6b中AB段所示,控制器输出的辅助扭矩线性增加,使得车辆方向盘转角向右侧转动增加,并带动车辆车身方位角减小,纠正车辆的运动偏离趋势,设置辅助扭矩阈值为-1.3~1.5 N·m。当扭矩达到最大阈值时,扭矩进入维持状态,当方向盘转角达到设定值时,扭矩下降到维持方向盘转角的临界值,确保车辆能够连续稳定进行纠正。第2阶段,使车身方位角摆正,如图6c中BC段所示,当车身已纠正回到车道线内,扭矩开始下降,并反方向驱动方向盘回转,带动车身方位角逐渐减小,直到车辆与车道线趋于平行,试验过程中,车身方位角稳定维持在-0.02~0.02 rad。第3阶段,将方向盘进行回正,如图6d中CD段所示,微调辅助扭矩的输出,控制车辆方向盘转角逐渐降为零,试验过程中,方向盘转角为-0.30~0.33 rad。当方向盘转角回到零位,完成本轮纠偏控制,辅助扭矩降为零。车辆在完成第1次纠偏动作后,受道路环境因素影响,车辆往右侧发生偏离,同时满足LKA控制系统激活条件,再次启动三段式纠偏控制。控制过程与第1次纠偏控制相同,采用三段式纠偏控制策略,将车辆纠正到车道线内。经过上述两次纠偏控制后,车辆沿车道线中心位置行驶,如图6a中D′点以后所示,车辆与左右车道线距离基本相同,车身与车道线平行,同时车身方位角逐渐降为零,如图6c中D′点以后所示,车辆稳定在车道线内行驶。若经过上述两次纠偏控制,车辆再次偏离车道线,此时系统将再次启动纠偏策略进行纠偏控制,直至实现车辆在车道线内稳定行驶。
图7 车道保持控制算法持续作用控制效果
根据通信协议分别对视觉传感器和EPS传感器进行报文解析,车辆与车道线距离以及车身方位角信息刷新频率为0.1 s,EPS单元扭矩刷新频率为20 ms。试验中设置控制系统数据传输刷新频率为20 ms,能够满足传感器报文数据处理的实时性。由于三段式纠偏控制方法以车辆与车道线距离以及车身方位角信息作为车辆偏离判断条件,因此,启动三段式纠偏控制后,系统监测车辆跑偏的响应时间为0.1 s,进行扭矩等控制参数更新的时间间隔为20 ms。
试验车辆的车身宽度为1.9 m,视觉传感器粘贴在前车窗的中心,所以视觉传感器与车辆左右两侧距离约为1 m,即视觉传感器获取的距离数据小于1 m时,表示车辆超出车道线。图7为车道保持控制算法持续作用控制效果图。从图7中可以看出:使用三段式纠偏控制方法,车辆能够稳定在车道线内行驶,并且稳定运行时间超过40 s。
4 结论
(1)基于可跨平台移植的Python语言和PyQt工具包,设计了LKA控制在线调试系统。实现了与车道保持控制下位机通信、调试过程监控数据的可视化、控制策略参数在线调试、人机交互等功能。
(2)设计了三段式车道保持控制策略,分析了各段的控制过程和关键参数,结合开发的上位机调试系统,可以进行参数的在线优化调试。开发了基于STM32的LKA下位机控制器,通过CAN通信获取各类状态信息,并实现了LKA的底层驱动控制。
(3)通过不同车速下规则化道路上的实车测试,验证了三段式控制策略的有效性,并优化了不同车速下的控制参数。系统监测车辆跑偏的响应时间为0.1 s,纠正后能保持车道线内稳定行驶达40 s以上,满足了LKA控制系统在线调试的需求。