时间:2024-08-31
张政,孙鹏,王立勇,丁炳超,史宇辰,王绅同
(北京信息科技大学 现代测控技术教育部重点实验室,北京 100192)
我国“十四五”交通领域科技创新规划提出要“大力发展智慧交通”[1],新一代信息技术与交通运输融合已成为未来交通行业发展的必然趋势。近年来,随着计算机技术及人工智能技术的迅猛发展,无人驾驶技术应运而生。2017年中国汽车工程学会主办的首届中国大学生无人驾驶方程式大赛(Formula Student Autonomous China,FSAC)[2]成功举办,引起国内各大高校的密切关注。赛事的初衷是鼓励对无人驾驶技术有兴趣的大学生独立地设计、建造一套满足比赛规则的无人驾驶方程式赛车系统,目前已成为培育汽车行业创新人才的重要平台。本文将对满足FSAC比赛规则的整车控制器(vehicle control unit,VCU)设计进行研究。
VCU作为无人驾驶方程式赛车决策控制层中至关重要的环节,对于保证车辆安全有着重要意义[3]。VCU主要负责将上位机发布的控制指令解析之后通过总线分发至电机控制器(包含动力电机控制器和转向电机控制器),从而实现对执行机构的控制作用。另外,VCU还需要对车辆舱内的传感器(如油门踏板传感器、制动油压传感器、气压传感器等)进行数据解析,之后根据协议打包封装,通过总线发送至上位机。
现阶段,各车队常用的VCU方案大多为购买市面上常见的快速控制原型,优点在于开发周期短,便于代码编写。但其成本较高,并且可拓展性较差,同时,这种方案不涉及底层的软硬件知识,不利于大学生动手实践能力的培养[4]。另外一种方案是使用较为常见的控制板,例如MCT车队在2020赛季采用Arduino Uno开发板。其优势在于成本低,但此类产品可靠性较差,不满足车辆控制需求。与之类似的方案还有采取一款32位的芯片作为主控芯片,但由于其驱动能力有限,在此基础上拓展出额外的微控制器,增加成本的同时提高了通信过程中的风险[3]。
本文结合FSAC比赛规则进行需求分析,最终确定使用恩智浦公司的MC9S12XET256单片机作为主控芯片设计VCU,该芯片为较为常用的车载芯片,在降低成本的同时,提高系统的可靠性。由于采用自主研发的电路板作为VCU,更加符合赛事规则要求,也可以根据车队要求,灵活进行软硬件调整。本文主要针对VCU的软件设计进行论述。
VCU作为无人方程式赛车控制系统的中枢环节,对上要与上位机进行通信,将目前下端设备的状态反馈给上位机;对下要根据现有运行状态将上位机的控制指令传达给下端设备。方程式赛车VCU组成原理如图1所示。
为了提高控制的实时性,基于控制器局域网络(controller area network,CAN)通信技术进行通信:VCU与上位机之间使用CAN0通信,交换控制信息,与动力电机控制器和转向电机控制器之间使用CAN1通信,发送控制消息及接收控制器的状态反馈;使用脉冲宽度调制(pulse width modulation,PWM)信号对制动舵机和喇叭进行控制;使用并行数字量输出通道对赛车制动尾灯和各种系统指示灯进行控制;使用数字量输入通道检测按钮或开关状态;使用模拟量输入模数转换(analog to digital converter,A/D)采样通道对车载的油门位置传感器和压力传感器的电压信号进行采样。
根据赛事规则,无人驾驶方程式赛车需要同时具备无人驾驶模式和有人驾驶模式(Manual Driving),其中无人驾驶模式又分为5种状态机,分别为无人驾驶系统关闭状态(AS_Off)、无人驾驶系统准备状态(AS_Ready)、无人驾驶系统行驶状态(AS_driving)、紧急制动状态(Emergency)和无人驾驶系统完赛状态(AS_Finished)[5],各状态机根据所接按钮及开关的状态不同而切换,关系如图2所示。
Manual Driving:若无人驾驶主开关(autonomous system master switch,ASMS)关闭,驱动系统(tractive system,TS)被激活,则切换至手动驾驶模式,该模式具有基本的驾驶功能,可根据油门开度对驱动电机扭矩进行控制;
AS_Off:作为无人系统上电自检后的初始状态,主要负责对系统进行初始化及保障车辆处于静止状态且车辆制动系统处于激活状态;
AS_Ready:在AS_Off状态下按下某一个任务按钮,打开ASMS并激活TS,则可进入AS_Ready状态,该状态会激活驱动及转向系统,并且使车辆处于制动状态;
AS_Driving:在进入AS_Ready状态5秒后,若人为地通过远程遥控系统(remote emergency system,RES)发送一个GO信号,则可进入AS_Driving状态,该状态下制动系统处于松弛状态,车辆会根据所选任务不同按照上位机指令执行;
AS_Finished:在完成一项无人驾驶任务后,上位机会发送一个finish信号,且当VCU检测到车速为0时,控制车辆进入AS_Finished状态,该状态下车辆制动系统被激活,高压断电,处于一个较为安全的状态;
Emergency:若VCU检测到紧急制动系统(emergency brake system,EBS)被触发或RES的急停按钮被触发即整车安全回路断开,则进入Emergency状态,该状态下车辆制动系统被激活,鸣笛且无人指示灯闪烁,高压电被切断,驱动及转向系统不可用。
在无人方程式赛车中,需要使用到多种传感器。与VCU相连接的传感器主要包含2路油门踏板位置传感器、2路油压传感器和1路气压传感器,共5路模拟量信号,所输出的采样信号均为电压信号,VCU根据所接收到的不同电压值,通过映射关系,得到相应的数字量。A/D转换作为VCU与外界沟通的桥梁,可以将电流、电压的模拟量转化为芯片可以识别的数字量,之后VCU通过相应策略对车辆进行控制。本文所使用的芯片具有16个12位的A/D采样通道,转换结果可以设置为8位、10位及12位精度。系统涉及5路传感器,故在初始化阶段设置为10位转换精度5通道轮流采样,同时由于在比赛过程中会进行传感器断线的操作,将A/D模块的快速清零功能打开,保证在断线时结果寄存器为0。下面将对油门踏板策略、制动策略和油刹冲突策略分别进行阐述。
2.1.1 油门踏板开度检测
油门踏板位置的测量使用电阻式位移传感器,供电电压不变时,当测量杆由于受力而位置变化时输出电压值产生相应线性变化。
根据赛事规则,油门踏板位置需要通过2路传感器同时采集,并且两个传感器不能使用同一路电源,故本文采用5 V与3.3 V两种电源电压,分别为两路油门踏板位置传感器供电,即量程分别为0~5 V与0~3.3 V。图3为油门系统结构示意图,两路位置传感器分别放置于踏板支撑杆两侧,箭头方向为踏板踩踏方向。
图3 油门结构示意图
油门开度的计算遵照以下公式:
(1)
式中:VP为油门开度,踏板踩下越多开度值越大;Am为油门松弛时的采样结果,由传感器标定得到;AP为油门当前的采样值,由传感器输出模拟电压转换为数字量得到;Ar为油门采样范围,通过传感器标定可以得到。由于使用两路传感器,故两路传感器的开度值取平均,得到当前油门开度。
2.1.2 制动检测
在制动部分,分为油压制动与气压制动,其中,油压制动是VCU通过PWM信号控制制动舵机转动,模拟人脚踩刹车踏板带动连杆给车轮制动压力,从而使车轮抱死;而气压制动是在车辆触发EBS时,通过气瓶打出0.4 MPa的压力,通过气管传导,使制动卡钳夹紧刹车盘,从而使车轮抱死。两部分传感器均使用12 V供电,输出模拟电压信号在1~5 V之间。其中,1 V为传感器正常工作时的初始电压,故当相应的A/D通道数字量大于等于1 V对应的数字量时,认为传感器工作正常;若大于1 V对应的数字量,则为制动状态;若为0,则相应传感器异常,使车辆进入Emergency状态,需要立即下电检查。
2.1.3 油门、制动冲突检测
当车辆处于有人驾驶模式下,由于驾驶员的误操作,可能会出现同时踩下油门踏板和制动踏板的情况,从而造成设备及人员损伤,故需要从硬件及软件层面对油门制动冲突的情况进行监测。
硬件层面使用逻辑电路搭建制动系统可靠性装置(brake system plausibility device,BSPD),同时对驱动电源的输出功率及制动传感器进行监测。当检测到两者同时大于其设定阈值时,表明车辆处于油门踏板与刹车踏板同时踩下即油刹冲突状态,此时应立即切断安全回路,使得动力电机不工作。软件层面同时监测油压传感器及油门踏板,当检测到制动和油门均踩下时,向电机控制器发送0转矩控制指令,使车辆处于静止状态。当检测到制动状态消失,但油门依然存在且开度大于5%时,仍不工作;直到油门开度小于5%时,油刹冲突状态解除,系统恢复到正常有人驾驶状态。两个层面设计互为冗余,可以有效提高系统安全性。
为了使系统更加可控稳定,可以通过添加反馈机制对输出量进行监测。在无人驾驶车辆系统中,为了提高系统安全性,通常对轮速进行测量并反馈到上位机,由决策层对车辆状态进行控制,故本文系统除针对电机控制器反馈的CAN消息帧进行电机转速解析外,还使用单片机的增强型捕捉定时器(enhanced capture timer,ECT)模块对车轮的实时转速进行测量ECT是由标准定时器模块发展而来的,主要有4种功能,分别是输入捕捉、输出比较、脉冲累加和模数递减计数[6]。该模块有8个输入捕捉通道,每个通道可独立地针对脉冲信号的上升沿、下降沿或上升及下降沿进行捕捉,由于测速所使用的霍尔传感器输出信号为上升沿有效,故采用上升沿捕捉进行轮速测量,并通过公式计算实时车速,公式如下:
(2)
式中:vw为轮速,单位为cm/s;Dw为车轮外径,单位为cm;nt为后车轴连动轴齿轮的齿数;Δt为相邻两个上升沿的时间差。
在CAN通信中,总线为同步半双工串行通信总线,由两条数据线组成[7]。CAN总线经过多年发展,已成为汽车计算机控制系统和嵌入式工业控制领域的标准总线。
VCU作为整车系统的消息集中与分发中心,为了将上位机与下端设备隔离开,本文采用两路相互独立的CAN通道,连接方式如图4所示。
根据实际需求,若VCU在系统自检阶段检测到传感器及外部设备有故障时,进入Emergency状态,需要将相应的字节置为故障态,反馈给上位机进行存储,便于后期人为检修;上位机需要从VCU处获取到车速及转向信息用于实现整车控制。故VCU发送至上位机的8个字节消息中应包含有舱内各传感器的错误状态反馈、外部设备(动力电机控制器、转向电机控制器、RES)错误状态反馈、无人驾驶任务选择、动力电机当前转速反馈、转向电机当前转角反馈以及轮速反馈,其中动力电机当前转速反馈和转向电机当前转角反馈分别占用两个字节,均为各自控制器反馈内容的转发。
图4 CAN通信连接方式
VCU需要从上位机获取到针对动力电机输出扭矩及转向电机转角的控制值,根据控制器协议,各占用两个字节。另外,为了在上位机程序错误时不进行指令转发,协议中添加心跳检测字节。
VCU与上位机之间的通信协议结构如表1所示。
表1 VCU与上位机之间的通信报文数据域结构
为保证VCU系统在赛车(如图5所示)实际工作状态时的稳定性与准确性,对上述理论设计进行如下实验验证。
图5 赛车实体
赛车整体结构为阿克曼式结构,即后轮驱动前轮转向式结构,如图6所示。无人方程式赛车横向运动控制本质是进行转向控制[8]。
图6 阿克曼转向结构
当角度较小时,认为该角的弧度值与其正弦值相等。在此前提下,根据阿克曼转向几何,可得到左前轮转角θ1、右前轮转角θ2及车辆轴向角θ满足如下关系:
(3)
式中:L为轴距;R为转向半径;d为轮距。可见车轮的转角与转弯半径成反比,转弯半径越大,车轮需要的转角越小,反之则越大。
在无人方程式赛车系统中,通过控制转向电机直接控制的是方向盘转角,而方向盘转角与车轮转角成一定比例关系。为了确定这两者之间的数量关系,设计完成了标定实验:首先对转向系统进行零度对中;然后通过CAN卡向转向电机控制器发送CAN消息,使转向电机固定地向左、向右转动20°、40°、60°、80°、100°,在标定板上测量出两侧轮子转动角度,数据如表2所示,由于左右轮转角差距不大,故对其取平均作为赛车横向转角。
表2 方向盘与车轮转向角度对应表 (°)
由表2数据可知,方向盘转角与车轮转角呈线性关系。将数据导入Matlab软件进行直线拟合,拟合结果如图7所示。图中负角度为右向,拟合结果满足式(4),平均误差为0.9%:
α=0.202 7δ-0.136 4
(4)
式中:δ为方向盘转角;α为车轮转角。
图7 方向盘与车轮转向角度拟合结果
经测量,车轮外径为45 cm,后车轴连动轴齿轮的齿数为30,故将式(2)改写为
(5)
该部分实验中,由于电机控制器自身反馈电机转速,因此将其经过换算后得到的车速作为真实值,与相同时刻经霍尔传感器检测后代入式(5)得到的车速进行对比分析,结果如表3所示。
表3 轮速测量结果
由表3数据可以看出,由霍尔传感器测量得到的车速和电机反馈计算得到的车速差距很小,满足反馈应用的需求。
为了保证实车运动时的安全性,针对油门开度与VCU到动力电机控制器的CAN通信网络设计完成联合实验。踩下油门踏板得到不同的开度,根据式(1)油门开度与其所对应的扭矩及CAN指令按照式(6)进行计算:
(6)
在CAN消息中,只保留转矩计算结果T的整数部分。式中B3为动力电机控制器接收的第4个字节,即转矩与固定偏置相加后低位字节信息;B4为动力电机控制器接收的第5个字节,即转矩与固定偏置相加后高位字节信息,即表1(b)所示,5 000为固定偏置。
表4为油门踏板在不同开度下对应电机控制器反馈转矩的结果,可以看出动力电机控制器所接收到的转矩控制信息与油门开度计算结果的整数部分一致,实现了对控制指令的转发功能。
表4 油门踏板与CAN通信实验结果
本文针对大学生无人方程式大赛规则,根据车队实际需求设计VCU整体的软件系统功能架构,包含有A/D转换、实时车速测量以及车载CAN总线通信3个功能模块,并对其进行综合实车实验的验证,在符合赛事规则的前提下,加入一定冗余设计,保证了赛车及人员安全。VCU软件开发经历需求提出、总体方案确定、具体功能设计、实车测试等阶段,具有较为成熟的结构体系,可以满足无人方程式赛车的比赛需求。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!