何牧天,傅敏康,何 毅,孙冬梅
(南京工业大学 电气工程与控制科学学院,南京 211816)
20世纪80年代初,美国率先提出自动驾驶计划,并由此衍生出“智能车”概念.2003年,韩国汉阳大学汽车控制实验室在飞思卡尔半导体公司的资助下举办了世界上第一届大学生智能车竞赛.2005年11月,中国教育部高等学校自动化专业委员会与飞思卡尔半导体公司签署了长期合作协议书.2006年,清华大学举办了我国第一届全国大学生智能车竞赛邀请赛,全国大学生智能车竞赛由此开始,时至2020年已经成功举办了15 届.该竞赛被教育部批准列入国家教学质量与教学改革工程资助项目,是教育部倡导的全国大学生课外学术科技A 类竞赛.其下设多个组别,其中,最为经典、历史最悠久的就是本文描述的四轮竞速组.历经15年的发展革新,第十五届智能车竞赛四轮组的规则较之前几届有了较大改动,对摄像头限高等关键技术指标的限制更加严苛,调整了赛道元素,新增了出入车库的环节,难度显著提升.而根据大赛组委会公布的最近5 届四轮组的成绩分析,虽然比赛难度不断增大,但是选手的整体成绩呈上升趋势,高水平竞速往往只相差一两个毫秒,获奖难度逐年提高.
笔者在第十五届全国大学生智能车竞赛中获得四轮竞速组华东赛区和全国总决赛一等奖.下面从组装、关键器件选型、硬件设计、电路板设计、传感器信号处理、算法和控制等方面加以论述.
“恩智浦”全国大学生智能车竞赛指定四轮车的车模有A、B、C 三种型号.智能车以较高速度行进时需采用差速控制,而A、B 型车模只有一个电机,故选用C型车模.C 型车模配有两个电机(RN-380)和一个舵机(Futaba S3010),如图1所示.C 型车模长28 cm,宽18 cm,车轮直径6.4 cm,行驶时不易打滑,减震性能优良.
图1 四轮车车模
摄像头根据感光传感器的不同分为CMOS 型和CCD 型.CCD 传感器在灵敏度、分辨率、噪声控制等方面都优于CMOS 传感器,而CMOS 传感器成本低、工作电压低、功耗低、整合度高、输出信号稳定[1].故选用了CMOS 型MT9V032 摄像头,其分辨率可达752×480,60 fps.由于处理器性能和实时性的要求,本系统将分辨率设置为60×80,200 fps.
摄像头安装高度影响前视距离、图像采集宽度等指标[2-4].安装过低,要降低俯视角度来获得更好的视野,但会使前视距离增加过多,难以避免受炫光现象影响,图像前若干行可信度降低,从而产生较大的误差.安装过高,则会在智能车行进过程中受鞭梢效应影响,发生反复震荡现象,影响稳定性.另外,由于较高的位置和较大的俯视角度,采集的图像容易出现畸变现象,采集的赛道边界线也会细化,路径提取效果降低.2020年第十五届全国大学生智能车大赛规定摄像头安装高度最高位10 cm.
兼顾到可视范围、前视距离、抗干扰性等因素,安装调整摄像头的前视距离为车头前方50~60 cm.摄像头成像中心距地面约10 cm,位于舵机安装位置正上方,约有15°左右的俯视角.
编码器用于智能车测速、计算行进距离.选用小型QY1503-CDZ 磁电式增量编码器,该编码器为4096 线,正交解码型,精度高且小巧.将一对编码器分别安装于两个电机上方,同时保证测速齿轮与智能车差速器齿轮良好啮合.如图2所示.
图2 速度编码器效果图
原车模上舵机采用垂直安装,智能车在转向过程中舵机固定配件容易受到扭曲发生形变,影响转向控制精度.为了提升转向控制的稳定性和转向更为平滑灵敏,降低智能车前部的重心位置,改为卧式安装,同时使舵机内部的驱动电路远离了位于其上方的摄像头和电磁传感器模块,降低了电磁互相干扰,如图3所示.
图3 舵机安装方式效果图
对于车辆而言,整车重心适宜位于车辆中后部,并且较低的重心可以获得更好的控制稳定性;重心位置偏前部可以提升车辆转向控制的实时性,但稳定性会相对降低;重心偏后部则可以获得较好的速度控制,但转向控制实时性也略微下降.由于摄像头和电磁模块的安装可以使智能车的重心整体上移且向车头方位偏移,在转向过程中更容易造成侧倾、甩尾以及轮胎打滑等问题.因此在重心分配的设计上,将较重的电池安装在智能车中部靠后位置,紧贴底盘以此将整车重心向后向下调整,并且尽可能在车体中轴线上以平衡左右两侧,在保持转向控制实时性的同时,兼顾速度控制的准确性以及快速性.如图4所示.
图4 智能车电池安装位置示意图
比赛过程中,要求智能车在长直赛道行进时尽量减少转向调整,而在弯道行进时转向平滑迅速,转向后自动快速回正,因此,需要对前轮定位参数进行校正.根据汽车机械理论[5,6],前轮采用主销内倾、前轮前束结构可以改善车辆运行的转向稳定性并减少车轮磨损.前轮主销内倾指在汽车横向平面内,主销轴线上端略向内倾斜,使前轮转向回正更为轻便.尽管内倾角越大回正越便捷,但是会导致轮胎磨损程度提升.通过反复优化验证,得到智能车达到轮胎磨损和转向轻便性较优平衡点为2°~ 4°.通过调整前轮转向臂螺杆长度即可完成主销内倾的调整,如图5所示.
图5 前轮转向机构调整效果图
根据“恩智浦”第十五届全国大学生智能车竞赛规定,赛道宽度不小45 cm.预赛阶段,赛场形状为约 5 m ×7 m 长方形,采用PVC 材料铺设含有各种元素的赛道.两条相邻赛道中心线之间间距不小于60 cm.赛道中存在着直线、曲线、十字交叉路口、环岛、坡道、车库等多种特殊道路元素.曲线的曲率半径不小于50 cm.基本赛道尺寸如图6所示.
图6 赛道部分尺寸参数示意图
根据赛道尺寸,参照汽车转向机构设计理论,对智能车转向机构进行调整和优化.转向时,转向轮尽可能绕顺时转向中心,以提升智能车行驶过程中的稳定性,避免频繁地转向控制调整,防止出现侧倾、甩尾和轮胎打滑等现象.转弯半径≤50 cm,以通过比赛规定的最小半径弯道.
大赛组委会规定:智能车微控制器必须选用“恩智浦”系列芯片,参赛者需要独立设计控制系统方案.硬件设计主要包含:微控制器核心板电路,电源稳压电路,姿态和速度采集的传感器电路,电机和舵机驱动电路,外置Flash 存储、独立按键、五向按键、NRF 无线、WIFI 图传人机交互外设电路、LCD 显示、蜂鸣器、LED 辅助外设电路等.其硬件设计框图如图7所示.本文将对部分主要的电路模块以及接口加以介绍.
图7 系统硬件设计框图
微控制器芯片选用NXP 公司的I.MXRT1021,功能丰富强大,在设计主控板电路时,选用其最小系统板作为接口电路单元,以降低设计难度.该芯片具有如下性能特征:
(1)内核是ARM Cortex-M7,主频500 MHz,16 kB I-Cache,16 kB D-Cache;
(2)外部存储器接口:8/16 位SDRAM,8 位NAND FLASH,SD/eMMC,单/双通道4 位SPI,并行NOR FLASH;
(3)音频接口:S/PDIF 输入输出,3 个同步音频接口(支持I2S、AC97、TMD和Codec/DSP 接口);
(4)通讯接口:USB 2.0 OTG,2 个uSDHC 接口,10 M/100 M Ethernet,8 个UART,4 个I2C,4 个SPI,2 个FlexCAN;
(5)片上存储器:96 kB Boot ROM,可组态最大256 kB SRAM;
(6)定时器:2 个通用可编程定时器,4 通道周期中断定时器,2 个4 位定时器,2 个FlexPWM;
(7)电源管理电路:片内集成DCDC,LDO,内置温度传感器,通用电源管理控制器;
(8)模拟电路:2 个12 位ADC,多达19 通道,4 路模拟比较器;
(9)工作电压3.3 V,ARM Cortex-M7 内核工作电压1.2 V,由内置DCDC 产生;
(10)封装:144-Pin LQFP 封装(或100-Pin LQFP).
由于微处理器无内置Flash,将W25Q64JVSIQ作为外接Flash.
本系统设计全桥电路驱动直流电机(RN-380),功率管选用IR7843,其驱动电路选用IR2104,如图8所示.
图8 直流电机驱动全桥电路
舵机(Futaba S3010)驱动接口电路如图9所示,其接口有3 个引脚,脚2和脚3 接6 V 电源,脚1 接控制信号PWM.由于微控制器是3.3 V 供电,而舵机是6 V供电,电平不兼容,所以需要通过三极管SS8050 进行电平转换,但转换后的电平和原PWM的反相了,然而I.MX RT1021 微处理器PWM 功能强大,可以把脉宽占空的输出设置为低电平,而脉宽非占空的输出设置为高电平,从而实现电平的匹配.
图9 舵机转向接口电路
选用1/3 英寸CMOS 数字图像传感器MT9V032(单色),该传感器具有并行数字输出和低电压差分信号(LVDS)输出接口.MCU 通过UART 接口对MT9V032进行初始化和发送控制命令等,通过DMA 接口接收MT9V032 发送的像素点数据,如图10所示.PIXCLK为像素点参数输出脉冲,LineValid为行有效输出,FrameValid为场有效输出.
图10 摄像头接口电路
电磁导航信号采集模块电路,用于采集赛道中央20 kHz的导航信号.电磁信号采集电路如图11所示.LC 感应电磁导航信号,LM321 组成电压偏置放大电路,放大后再进行倍压整流,然后送至母板进行ADC转换.
图11 导航信号采集电路
设计好智能车硬件原理图之后,再着手设计PCB电路板.为了保证设计的成功率和提高抗干扰能力,把PCB 设计分成主控母板、电机驱动板、电磁导航电磁信号采集板3 块PCB 设计.把PCB 电路板进行分开设计,既降低了设计难度,又降低了模拟电路和数字电路间的相互干扰,同时又便于在一定尺寸空间内安装整齐紧凑[7].图12~图14为各模块的PCB 电路板.
图12 主控母板PCB 电路板正反面
图13 电机驱动PCB 电路板正反面
图14 电磁导航信号采集板PCB 板
智能车的M P U 芯片选用的是N X P 公司的I.MXRT1021,此芯片在前文已介绍,功能丰富强大,故选用其最小系统板作为接口电路单元来设计主控母板,这样可以大大地降低PCB 设计的难度.
智能车有两个驱动电机,每个电机需要4 个MOS管组成全桥驱动电路.在放置MOS 管时,同一桥臂的2 个MOS 管放在PCB 板正反两面,通过焊盘或过孔相连,同时引出电机接线.
使用7 个电感采样电磁导航信号,如图15所示.最左侧(第1 个)电感、居中(第4 个)电感和最右侧(第7 个)电感平行于前轮转向牵引机构排布,第2和第6个电感呈外八字45°排布(在俯视视角下),第3和第5个电感呈内八字45°排布.其中,内八字排布电感用于检测特殊道路元素,如环岛的检测.其余电感均用于普通道路电磁环境检测,这样设计为软件控制算法的编写提供了便利,也使得对特殊元素状态识别更加灵敏.
图15 电感位置排布示意图
经过多次的试验对比,摄像头分辨率为120×60 时,将图像压缩变为80×60,可同时满足精度和实时性要求.原始图像与压缩图像的对比如图16所示(CMOS成像芯片被横放了).原始图像有较多的冗余信息,不利于提取有效信息,需对其进行处理.第一步将灰度图像信息二值化,常见的二值化方法有最大类间方差法、谷底最小值法、百分比阈值法等[6].用这3 种方法对图像进行二值化处理,处理后的效果如图17所示.进行比较之后,选用最大类间方差法用于原始图像的二值化处理,然后再计算拟合出道路中线曲线、左右边界、前瞻截止行以及终点斑马线等.图18为拟合后的环岛附近、弯道附近以及十字交叉路口附近的中线提取图像.
图16 原始图像与压缩图像示意图
图17 3 种不同的方法处理图像二值化
图18 环岛、弯道和十字交叉中线提取图像
赛道中线内铺设20 kHz 信号线,采样电感离信号线越近,其与磁场方向夹角越接近90°,互感电压就越大.前文已述,电感1、4、7 都是水平摆放,正常情况下,4 号电感最接近信号线,互感电压可以达到1 号和7 号电感的两倍,这3 个电感的互感电压可用来判断智能车偏移中心线的角度.
3 号和5 号电感呈内八字轴对称排列,当智能车出现轻微偏转时,略微偏向右侧,3 号电感就更靠近信号线,与信号线的角度偏差也会变大,由45°向90°靠近,互感电压大大增加.而5 号电感却相反,互感电压大大减弱.3 号和5 号电感对车辆轻微偏转有更明显的反映,比仅有1、4、7 号电感控制时,减弱了滞后环节的长度,使得控制实时性进一步提升.同理,2 号和6 号电感的作用.
在摄像头和电磁传感器共同作用下,得到了赛道边缘和中线位置信息.
速度传感器采用4096 线正交解码编码器,当智能车运动时,其A、B 信号线输出相位差90 度的脉冲,两个脉冲有先后顺序,且单位时间内可测定脉冲个数,因此不仅可以测量速度,判断旋转的方向,也可以计算智能车的行进距离.速度测量周期为5 ms,将每个周期行进的距离累加,即可获得单一后轮行进距离,将左右轮的数据进行均值滤波,就得到了智能车累计行进距离值.实验测得,行进500 米,计算出的误差小于0.3 米,误差率低于0.06%,精度满足要求.
有了赛道边界和赛道中线,就能判别赛道上的一些特殊元素,如环岛、坡道、起跑线和车库等.
环岛,是智能车竞赛的传统难点.它表现为在一段直道的左或右出现一个半径不等的圆环.智能车经过时,需要绕行圆环一周,然后驶出回到直道继续行进,如图19所示.当摄像头采集的图像出现一边赛道边界丢失时,此时可能到了环岛附近,关注4 号电感采样值,如果发生大的变化,可以判断来到了环岛旁(两股电磁导航线交汇).通过两只“外八字”电感采样值判断环岛在左或右位置.在此过程中,根据4 号电感值两次大的变化并计算期间智能车行进的距离,从而得出环岛半径大小.
图19 赛道中环岛示意图
若在一段直道中间出现两边不对称的坡,智能车需顺利通过坡道才能继续进行比赛.如图20所示.
图20 坡道示意图
当智能车的俯仰角超过10 度(由陀螺仪采样)时,即可判定上了坡道,摄像头视角被抬升,采集到的图像是远方的图像,此时将摄像头的图像信息的可信度置为0,电磁传感器置信度置1,完全由电磁信号导航,当驶出距离大于500 mm 之后,则确认已驶离坡道.重置摄像头信号的可信度为0.7,电磁传感器的置信度置为0.3.
起跑线是赛道起点和终点,以一条宽度为10 cm的斑马线构成,智能车第一次经过它时比赛开始,第二次经过它时比赛结束.当比赛结束时,智能车需在经过斑马线后及时转向进入车库中,否则将被加时惩罚.起跑线如图21所示.
图21 起跑线示意图
当从图像提取的有效信息中,靠近图像中部区域若干行出现超过5 次黑白跳变,即可判定智能车模即将经过起跑线,此时计算智能车行进的距离与偏航角,准备执行入库动作.
车库是第十五届大赛新增的元素,位于起跑线旁的长方形区域,长65 cm,宽45 cm.要求智能车从车库出发,行进一周后回到车库内,实现自动出入库.
为了竞速,采用漂移入库的策略,即靠近车库一侧的车轮在一秒内由原速变为慢速反转,另一侧的车轮保持原速向前,舵机朝车库方向转至限位角度.当检测到起跑线后,若出现黑白跳变的次数大于一定阈值的行数超过9 行,就断定为车库.依据图像边界跳变点的左右判断入库转向.此时开始执行漂移入库动作.小车入库的轨迹如图22所示.
图22 车库和漂移示意图
传统PID 控制有较高的精度,有较好的兼容性,但其控制参数无法随系统变化而调整,自适应性有所欠缺.模糊控制无需建立对象模型,用模糊规则表来描述系统特征,鲁棒性和自适应能力都比较好,但控制精度较差.本系统在传统增量式PID的基础上,通过棒棒控制消除积分饱和现象,达到积分分离的效果,再将PID控制与模糊控制相结合,进一步提升系统的综合性能.本系统中,分别对舵机和电机进行位置式PID和增量式PID 控制方式.
6.1.1 棒棒控制策略
棒棒控制的控制函数选取在输出范围上下边界附近,要么接近输出最小范围,要么接近输出最大范围.棒棒控制将目标值与反馈比较,若反馈值低于目标值则将输出量调节至最大,反之则将输出量调节至最小.引入棒棒控制,当输出量在与目标值有较大差距时能快速回调,当两值逐渐缩小,再回到增量式PID 控制,有较好的动态性能.这样,能够兼具棒棒控制快速性与PID 控制的稳定性,并降低电机功耗.
6.1.2 参数自适应优化
在正常行进过程中,若图像识别截止距离较远,说明图像信息的置信度较高,可以调高图像信息与电磁导航信息的置信度比例,同时提高行进设定速度;相反,若图像识别截止距离较近,降低图像信息与电磁导航信息置信度比例,同时降低行进设定速度.根据智能车当前“低速、中速、高速”的权重比例,对其P、I、D 参数进行加权运算,实现P、I、D 参数自适应调整的控制.
舵机上电后,给控制引脚PWM 信号,一定占空比对应一定的转角;在其扭矩范围内,能锁定转向的角度.在转向范围的中部,舵机转向角与PWM 占空比成线性正比.因舵机安装方位不同,舵机转向角有一定的限制.经实测,PWM为85.1%时,舵机转向角与智能车正向角度一致;PWM为83.1%时,为舵机右转向极限;PWM为87.1%时,为舵机左转向极限.因此,以83.1~87.1%为PWM 输入范围,对舵机进行转向控制.
6.2.1 动态自适应控制策略
舵机转向控制要尽可能精准,以减少行进时的振荡和摇摆,因此采用PD 控制.具体公式如下.
由于环境变化和其它因素影响,转向控制时,P、D 参数分为左、中、右3 类.通过多次测定来确定各类适应赛道的最优P、D 参数,实现动态自适应控制.理想效果是当智能车经过连续小S 弯道时,以近乎直线的行进路线通过,而在连续大弯道时可以从内道切入,尽可能减少行驶路线的距离.
根据第十五届智能车竞赛组委会给出的赛道样例,在实验室中搭建了调试赛道,如图23所示.其材质、元素、尺寸均与正式比赛赛道相同.并且在赛道两侧每隔50 cm 铺设黑色长条状路肩.除去出入库的距离,赛道总长约为27 m.同一辆车、相同采光条件下,每跑一次均擦拭赛道与轮胎,尽可能降低由灰尘降低车体摩擦力而导致的干扰.
将智能车绝对速度设为“慢速”、“中速”、“快速”3 个等级,在每个速度等级下采用3 种控制算法进行对比测试,每组连续跑10 圈.结果如表1所示.
表1 测试对比实验数据
通过表1可以看出,同时采用棒棒控制与动态自适应算法的小车不仅速度最快,而且稳定性最好.这是由于小车行驶的轨迹最优,节省了时间,而且小车在长直道上加速更快,爆发力更强.
采用动态自适应算法的小车的行驶轨迹略差,稳定性相差不大.但由于速度爆发力不如前者,入库时速度稍慢,故速度较慢.
而由于在赛道中加入了车库、圆环等较难的元素,仅采用PID 控制时,其鲁棒性最差,导致小车行驶轨迹差、磕碰路肩情况较多、飞坡后落点不准确.在高速驶过弯道时,无法及时调整舵机转角,自救能力差.所以仅采用PID 控制,在高速情况下是难以完成跑圈,无法取得好成绩.
根据大赛组委会公布的最近3 届四轮组的成绩分析,华东赛区晋级全国总决赛所需的平均绝对速度为2.72 m/s.而考虑全国总决赛的赛道长度为分区赛的两倍,元素数量也有所增加,许多队伍难以完赛,故平均速度仅为1.83 m/s.而获得全国一等奖的平均绝对速度不减反增,为2.89 m/s.而本届获得全国一等奖的平均绝对速度已达到2.96 m/s.
当电机的控制方式不变时,舵机分别采样PID和动态自适应控制时,智能车行驶的轨迹如图24所示.曲线1为增量式PID 控制的行驶轨迹,曲线2是动态适应控制的行驶轨迹.
图24 智能车行驶轨迹
本系统控制软件设计架构如图25所示,主要有各硬件功能初始化模块,主程序模块、中断模块等.电磁导航参数放在1 ms 定时中断采样;智能车速度、行进距离等参数放在5 ms 定时中断采样;摄像头图像放在主程序中采样,每5 ms 刷新一次图像(设定摄像头刷新速率为200 PFS),再结合电磁导航信号提取赛道信号后,执行电机和舵机的控制.用IAR 编辑工具软件,C 语言编程.程序有启动代码模块、驱动模块、Cortex-M7 内核模块、用户程序模块.前3 个模块属于底层硬件驱动程序,由SDK 提供直接使用,无需自己重新开发,只需专注用户程序的开发,这样可以大大缩短开发周期.
图25 软件设计架构框图
本文论述了全国大学生智能车竞赛四轮智能车组装、关键器件选用、硬件原理图设计、PCB 板设计、赛场中关键元素识别与处理、控制策略等方面,具有一定的实用价值.以上述论述的方法设计的智能车,在第十四届华东赛区和全国总决赛中分别获得一等奖.在第十五届华东赛区比赛中,获一等奖,名列第一,比赛用时9.59 s.在分赛区国赛中获国赛一等奖,比赛用时16.105 s,名列第三.