智能车竞赛技术报告 | 智能视觉组 - 北京科技大学智能视觉组

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能车竞赛技术报告 | 智能视觉组 - 北京科技大学智能视觉组相关的知识,希望对你有一定的参考价值。

简 介: 本文设计的智能车系统以 为核心控制单元,通过CMOS摄像头检测赛道信息,使用数字摄像头采集赛道的灰度图,通过动态阈值算法生成二值化图像数组,提取黑色引导线,用于赛道识别;通过光电编码器检测模型车的实时速度,使用PID控制算法调节驱动左右电机的转速,实现了对车运动速度和运动方向的闭环控制。为了提高模型车的速度和稳定性,使用C#、MFC上位机等调试工具,进行了大量硬件与软件测试。实验结果表明,该系统设计方案确实可行。

学 校:北京科技大学     
队伍名称:北京科技大学智能视觉组
参赛队员:范一鸣        
潘依涵        
陈云青        
指导教师:马飞         

 


  着信息技术的发展,汽车的电子化模块越来越多,智能汽车领域受到了大量的关注。受教育部高等教育司委托(教高司函[2005]201号文),高等学校自动化专业教学指导分委员会主办全国大学生智能汽车竞赛,以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科交叉的科技创意性比赛。

  参赛选手须使用竞赛秘书处统一指定并负责采购竞赛车模,自行采用 32 位微控制器作为核心控制单元,自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法及执行、动力电机驱动、转向舵机控制等,完成智能汽车工程制作及调试,于指定日期与地点参加场地比赛。参赛队伍之名次(成绩)由赛车现场成功完成赛道比赛时间为主,技术方案及制作工程质量评分为辅来决定。

  本届全国大学生智能汽车竞赛分竞速赛和创意赛,竞速比赛分为基础四轮组、节能信标组、智能视觉组、电磁越野组、双车接力组、全向行进组、单车拉力组、专科基础组八个组别,分别进行比赛,我队参与智能视觉组比赛。此次比赛按照官方规定需使用C型车模,使用指定NXP系列单片机,完成本次比赛设计。

  本篇技术报告主要包括机械系统、硬件系统、软件系统等,详尽地阐述了我们的设计方案,具体表现在硬件电路的设计以及控制算法的部分想法,希望能和其他学校的同学交流沟通,更进一步。

 

第一章 案设计


1.1系统概述

  摄像头车的系统整体结构如图所示。微处理器通过采集模拟CMOS摄像头的硬件二值化信号,得到赛道边沿信息;通过采集陀螺仪数据分析计算过桥信息;通过采集光电编码器对车轮转速的脉冲计数,得到车行进的速度数据。通过微处理器对图像处理,对角度、速度进行PID控制,最后PWM波输出驱动电机、舵机。

 

第二章 能车机械


  据今年组委会的相关规定以及智能视觉组比赛规则使用新C车模完成任务,因此需要合理的方案完成任务。在比赛备战之初,我们就对该车模进行了详细的系统分析。但由于新C型车模精度不是很高,因此在规则允许范围内尽量改造车模,提高车模整体精度,以提高车辆行驶的稳定性。本章将主要介绍智能汽车车模的机械结构及调整方案。

2.1车体机械方案

  根据十六届智能车竞赛细则对智能视觉组的要求,我们选择新C车模完成任务。

2.2四轮车模机械建模

  此次竞赛的四轮赛车车模选用由东莞市博思电子数码科技有限公司提供的新C型车模。车模外形如图2.1所示:

▲ 图2 1 四轮车模俯视图

2.2.1四轮车模前轮倾角的调整

  四轮车模后桥固定,对于后桥并无大的改动。在调试过程中,我们发现前轮对于车模的运行影响较大,并且由于前轮轴和车轮之间的间隙较大,对车高速时转向中心的影响较大,会引起高速转向下模型车的转向不足。然而这里是规则中严禁改动的部分,所以为了尽可能降低转向舵机负载,我们对前轮的安装角度,即前轮定位进行了调整。

  前轮定位的作用是保障汽车直线行驶的稳定性,转向轻便和减少轮胎的磨损。前轮是转向轮,它的安装位置由主销内倾、主销后倾、前轮外倾和前轮前束等4种可调参数决定,实现转向轮、主销和前轴等三者在车架上的位置关系。

  在实际调试中,我们发现适当增大内倾角可以增大转弯时车轮和地面的接触面积,从而增大车了地面的摩擦程度,使车转向更灵活,减小因摩擦不够而引起的转向不足的情况。并且我们智能视觉组设计的车模相对于往届车模来说重心更高,更靠前,所以我们对于主销后倾做了一些调整。

2.2.2底盘高度的调整

  在保证顺利通过坡道的前提下,底盘尽量降低,从整体上降低模型车的重心,可使模型车转弯时更加稳定、高速。但是过低的底盘会造成上桥剐蹭底盘等的现象,对车模正常行驶造成影响。

2.2.3齿轮啮合以及编码器的安装

  考虑到智能视觉组需要停车这一问题,我们对于车子齿轮啮合需要较高的要求,如果啮合不好,对于车子正常行驶和停车正不正都有较大影响。为了更为精确的获得电机转速的返回值,本次车模上安装的是与上届相同的编码器。最终综合考虑了读数精准和重心分布两大因素,用齿轮进行了安装配合,尽量使得传动齿轮轴保持平行,传动部分轻松、流畅,不存在过大噪音,卡齿,丢数情况。如图2.2所示。

▲ 图2 2 编码器安装

2.2.4 舵机安装结构的安装

  考虑到主板的安装方便以及车模转向性能,我们对舵机安装结构进行了较大的调整。比赛车模的转向是通过舵机带动左右横拉杆实现。舵机的转动速度和功率是一定,要想加快转向机构的响应速度,唯一的办法就是优化舵机的安装位置及其力矩延长杆的长度。由于功率是速度与力矩乘积的函数,过分追求速度,必然要损失力矩,力矩太小也会造成转向迟钝,因此设计时就要综合考虑转向机构响应速度与舵机力矩之间的关系,通过优化得到一个最佳的转向效果。利用实际参数经计算,我们得出了一套可以稳定高效工作的参数及结构。

  最终,我们设计了一套舵机连片(转向拉杆),综合考虑了速度与力矩的关系,并根据模型车底盘的具体结构,简化了安装方式,实现了预期目标。

  关于舵机的安装方式,我们实验室较为主流的有直立式安装和倒置式安装,我们的舵机安装如图2.3所示。

▲ 图图2 3 舵机安装

2.2.5 舵机转角分析

  车模的转向运动主要是靠舵机和前轮来实现的,因此,关于舵机和前轮转向关系的分析就显得尤为重要。
  依据数学建模,通过MATLAB进行分析后,得出了如下结果。

  右前轮转角(绿色)及舵机转角(红色)关于转弯半径关系图,如图2.4所示。

  舵机转角关于(右)前轮转角关系图,如图2.5所示。

  由以上两图得出结论:

  • 舵机转角变化范围即使较小,转弯半径的变化也会很大,因而对多级的控制显得尤为很重要。

  • 前轮打角越小,随着打角变化,转弯半径变化越明显,即小转角对半径的变化会更加明显,因而从前桥到舵机连片的机械固定需牢靠,尽量减少虚位。

  • 舵机转角关于前轮转角呈线性变化,在思路上为通过舵机转角改变从而获得所要前轮转角提供便利。
      改变前束,获得新的右前轮转角(绿色)及舵机转角(红色)关于转弯半径关系图,如图2.6。通过与图2.4的对比,获

  得两种前轮方案对转角的影响,从而选择合适的方案。

▲ 图2.6

2.2.6 摄像头的安装

  为了降低整车重心,需要严格控制CMOS摄像头的安装位置和重量,我们自行设计了轻巧的铝合金夹持组件并采用了碳纤维管作为安装CMOS的主桅,这样可以获得最大的刚度质量比,整套装置具有很高的定位精度和刚度,使摄像头便于拆卸和维修,具有赛场快速保障能力。摄像头的安装如图2.7所示。

▲ 图2.7

2.2.7 运用mini摄像头完成任务设计

  在mini摄像头固定的设计时,由于mini摄像头需要旋转,我们用了一个小金属舵机带动mini旋转,这样既可以减小体积,又可以减轻重量,固定方式和CMOS摄像头一样,该方案具有高稳定性以及高鲁棒性的优点。经过实际测试后,该方案可行性得到了验证。

 

第三章 路设计说明


3.1硬件方案设计

  我们主要从系统的稳定性、可靠性、高效性、实用性、简洁等方面来考虑硬件的整体设计。从最初方案设定到最终方案的敲定,我们经历各种讨论与大的改动才有了如下的硬件方案。

  可靠性与稳定性是一个系统能够完成预设功能的最大前提。在原理图与PCB的设计过程中,我们考虑到各个功能模块的电特性以及之间的耦合作用。对易受干扰的模块做了电磁屏蔽作用,而其他部分则做了相应的接地、滤波、模拟与数字电路的隔离等。

  高效与实用性是指本系统的各模块能充分完美的实现相应的功能。从以下两点可以体现出:

  1. 视频信号的提取一般有三种方法:片内AD转化、基于TLC5510的8位并行AD、硬件二值化。第一种方通过片内AD转换把连续的模拟视频信号转为数字信号存储起来。第二种方法通过外部AD芯片直接把视频信号转为并行的数字信号,而处理芯片只要通过普通IO来读取存储;前者不需要外部电路但浪费系统时间,对于主频不高的处理芯片会造成很大负担。而后者虽然精度高但浪费过多的硬件资源。硬件二值化是通过比较器去捕捉视频信号的跳变沿,这不仅减少了采集时间,也节约硬件资源,还省去了许多存储空间。但硬件二值化灵活性差,在面对复杂光线环境,固定阈值无法根据需求动态调整局部阈值,无法解决光线分布不均匀的赛道环境。数字信号虽然占用运算资源,但在芯片运算能力满足的条件下,可以通过程序复杂算法应对光线分布不均匀的赛道环境,适应能力更强。

  2. 对于电机驱动,由于新C车模电机对驱动性能要求高。我们设计了由单独的驱动芯片组成驱动器,该驱动器瞬间驱动电流最大可以达到几十安。

  简洁是指在满足了可靠、高效的要求后,为了尽量减轻车模的负载,降低模型车的重心位置,应使电路设计尽量简洁,尽量减少元器件使用数量,缩小电路板面积,使电路部分重量轻,易于安装。在设计完原理图后,注重PCB板的布局,优化电路的走线,整齐排列元器件,最终做到电路板的简洁。

3.2传感器选择

3.2.1摄像头选择

  • COMS与CCD

  CCD摄像头具有对比度高、动态特性好的优点,但需要工作在12V电压下,对于整个系统来说过于耗电,而且CCD体积大,质量重,会抬高车体的重心,这对于高速情况下小车的行驶非常不利。

  与之相比,COMS摄像头具有体积小、质量轻、功耗低,图像动态特性好等优点,因为小车对图像的清晰度,分辨率要求并不高,所以选用COMS摄像头。

  对于摄像头的选择,主要考虑以下几个参数:
  1. 芯片大小
  2. 自动增益
  3. 分辨率
  4. 最小照度
  5. 信噪比
  6. 标准功率
  7. 扫描方式

  其中芯片大小主要会对视场的范围会有影响,扫描方式主要有追行扫描以及隔行扫描,像ov5116就是隔行扫描。

  市面上的摄像头主要分为数字和模拟两种,数字摄像头主要有OV7620,OV6620,OV7670,OV7725,模拟摄像头主要有OV5116,BF3003,MT9V136。大多数摄像头都支持sccb通信,可以很好的实现单片机与摄像头之间的交互。

  智能车的摄像头队图像的分辨率要求并不高,但是对动态特性要求非常高,特别是小车在高速行驶入弯或者出弯的时候,图像变化较大,这就对摄像头的自动增益有较高的要求。一般来说,在摄像头图像发生突变时,感光芯片本身会有一段适应时间,这段时间要求越小越好。

  我们先后试用了OV5116、MT9V022、OV7725、BF3003、MT9V136以及PC1030N等摄像头,后四种均为彩色摄像头,在经过硬件二值化后可以取其有效信息,与黑白数字摄像头得到的信息类似。经过对比,虽然后四种摄像头图像效果更好,动态性能也更好,但是在弯道、回环等元素中由于自动曝光导致得到赛道信息不准确,在智能车应用中MT9V022已足够满足需求,因此我们最终选择了MT9V022数字摄像头。

3.2.2陀螺仪选择

  本届大赛对陀螺仪的型号没有限制,经过挑选我们最终确定陀螺仪使用L3G4200D。

  L3G4200D该产品为ST推出采用一个感应结构检测三条正交轴向运动的3轴数字陀螺仪。L3G4200D是三轴共用一个感应结构,这一突破性概念可以消除轴与轴之间的信号干扰,避免输出信号收到干扰信号的影响。

3.2.3编码器选择

  为了使用闭环控制,我们在汽车模型上附加了编码器。经过机械和电路性能的考虑和挑选,最终我们选用了ABI Mini增量式旋转编码器。

  和其他元件相比,选用编码器可以使电路更加完善,信号更加精确。编码器功耗低,重量轻,抗冲击抗震动,精度高,寿命长,非常实用。编码器内部无上拉电阻,因此编码器接口出需要设计上拉电阻。同时为了保证波形的稳定,主控板上使用了74HC14非门隔离。微处理器自身具有正交解码功能,因此这里无需使用任何外围计数辅助器件,只需要将接口连接到单片机上相应的接口即可。接口如图3.1和图3.2所示。

▲ 图3.1 编码器接口

▲ 图3.2 非门电路

3.3电路模块实现

3.3.1电源管理模块

  首先了解一下不同电源的特点,电源分为开关电源和线性电源,线性电源的电压反馈电路是工作在线性状态,开关电源是指用于电压调整的管子工作在饱和和截至区即开关状态的。线性电源一般是将输出电压取样然后与参考电压送入比较电压放大器,此电压放大器的输出作为电压调整管的输入,用以控制调整管使其结电压随输入的变化而变化,从而调整其输出电压,但开关电源是通过改变调整管的开和关的时间即占空比来改变输出电压的。

  从其主要特点上看:线性电源技术很成熟,制作成本较低,可以达到很高的稳定度,波纹也很小,而且没有开关电源具有的干扰与噪音,开关电源效率高、损耗小、可以降压也可以升压,但是交流纹波稍大些。

  电源模块对于一个控制系统来说极其重要,关系到整个系统是否能够正常工作,因此在设计控制系统时应选好合适的电源模块。竞赛规则规定,比赛使用智能汽车竞赛统一配发的标准车模用7.2V 2000mAh Ni-cd供电或者使用锂电池(两节18650,2AH,配备保护板),我们在多次尝试对比之后选择采用锂电池。而路径识别的CCD传感器均使用的是3.3V的电源。单片机系统、陀螺仪、编码器需要5V电源,伺服电机工作电压范围为4V到6V(为提高伺服电机响应速度,采用7.2V 供电),直流电机可以使用锂电池直接供电,智能汽车电压调节电路示例见图3.3。

▲ 图3 3 电源管理模块原理图

  在电源管理模块中,我们选用了5片TPS7350和2片TPS7333,其中DCDC5-12和IR2184S共用一个5V电源,逻辑元件和编码器共用另一个5V电源,OpenArt mini单独使用一个5V电源,主单片机单独使用一个5V电源,其余模块共用3.3V电源。为了使摄像头的供电稳定,满足摄像头在高速下的运行要求,我们外加了一块5V电源单独给摄像头供电。

  16届规则规定,AI视觉组的微控制器使用 NXP 公司的任意一款单片机。经过考虑,我们决定采用 微处理器作为主控单片机。我们最先使用TPS7350作为 微处理器的供电芯片,但是在实际使用过程中发现TPS7350容易出现过热保护的问题,考虑到 微处理器的功耗比较大,我们决定不采用LDO作为 微处理器最小系统的供电芯片,而是更换为DC-DC降压芯片。我们向后尝试了AOZ1280CI和MP1584EN这两款芯片,实际使用一段时间后,我们最终确定使用MP1584EN。其原理图和PCB布局如下:

▲ 图3 4 ME1584EN-3.3V稳压原理图

▲ 图3 5 ME1584EN-3.3V稳压PCB布局

3.3.2电机驱动模块

  常用的电机驱动有两种方式:

  一、集成电机驱动芯片;

  二、采用N沟道MOSFET和专用栅极驱动芯片设计。市面上常见的集成H桥式电机驱动芯片中,33886型芯片性能较为出色,该芯片具有完善的过流、欠压、过温保护等功能,内部MOSFET导通电阻为120毫欧,具有最大5A的连续工作电流。使用集成芯片的电路设计简单,可靠性高,但是性能受限。由于比赛电机内阻仅为几毫欧,而集成芯片内部的每个MOSFET导通电阻在120毫欧以上,大大增加了电枢回路总电阻,此时直流电动机转速降落较大,驱动电路效率较低,电机性能不能充分发挥。

  由于分立的N沟道MOSFET具有极低的导通电阻,大大减小了电枢回路总电阻。另外,专门设计的栅极驱动电路可以提高MOSFET的开关速度,使PWM控制方式的调制频率可以得到提高,从而减少电枢电流脉动。并且专用栅极驱动芯片通常具有防同臂导通、硬件死区、欠电压保护等功能,可以提高电路工作的可靠性。

  1.专用栅极驱动芯片的选择:
  IR公司号称功率半导体领袖,所以我们主要在IR公司的产品中进行选择。其中IR2184型半桥驱动芯片可以驱动高端和低端两个N沟道MOSFET,能提供较大的栅极驱动电流,并具有硬件死区、硬件防同臂导通等功能。使用两片 IR2184型半桥驱动芯片可以组成完整的直流电机H桥式驱动电路。由于其功能完善,价格低廉容易采购,所以我们选择它进行设计,如图3.4所示。

▲ 图3 6 IR2184应用图

  2.MOSFET的选择:
  选择MOSFET时主要考虑的因素有:耐压、导通内阻和封装。智能汽车电源是额定电压为7.2V的电池组,由于电机工作时可能处于再生发电状态,所以驱动部分的元件耐压值最好取两倍电源电压值以上,即耐压在16V以上。而导通内阻则越小越好。封装越大功率越大,即同样导通电阻下通过电流更大,但封装越大栅极电荷越大,会影响导通速度。常用的MOSFET封装有TO-220、TO-252、SO-8等,TO-252封装功率较大、而栅极电荷较小。于是我们最终选择了IR公司TO-252封装的LR7843型N沟道MOSFET,VDSS=55伏、RDS(on)=8.0毫欧、ID=110安。

  3、驱动电路的原理分析及元件参数确定

▲ 图3 7 电机驱动分析图

  这个驱动设计单从信号逻辑上分析比较容易理解,但要深入的理解和更好的应用,就需要对电路做较深入的分析,对一些外围元件的参数确定做理论分析计算。图3.8中IC是一个高压驱动芯片,驱动2个半桥MOSFET。Vb,Vs为高压端供电;Ho为高压端驱动输出;COM为低压端驱动供电,Lo为低压端驱动输出;Vss为数字电路供电.此半桥电路的上下桥臂是交替导通的,每当下桥臂开通,上桥臂关断时Vs脚的电位为下桥臂功率管Q2的饱和导通压降,基本上接近地电位,此时Vcc通过自举二极管D对自举电容C2充电使其接近Vcc电压.当Q2关断时Vs端的电压就会升高,由于电容两端的电压不能突变,因此Vb端的电平接近于Vs和Vcc端电压之和,而Vb和Vs之间的电压还是接近Vcc电压.当Q2开通时,C2作为一个浮动的电压源驱动Q2;而C2在Q2开通其间损失的电荷在下一个周期又会得到补充,这种自举供电方式就是利用Vs端的电平在高低电平之间不停地摆动来实现的。

  由于自举电路无需浮动电源,因此是最便宜的,如图所示自举电路给一只电容器充电,电容器上的电压基于高端输出晶体管源极电压上下浮动。图2.6中的D和C2是IR2184在脉宽调制(PWM)应用时应严格挑选和设计的元器件,根据一定的规则进行计算分析;并在电路实验时进行调整,使电路工作处于最佳状态,其中D是一个重要的自举器件,应能阻断直流干线上的高压,其承受的电流是栅极电荷与开关频率之积,为了减少电荷损失,应选择反向漏电流小的快恢复二极管,芯片内高压部分的供电都来自图中自举电容C2上的电荷;为保证高压部分电路有足够的能量供给应适当选取C2的大小.

  MOSFET具有相似的门极特性,开通时需要在极短的时间内向门极提供足够的栅电荷,在自举电容的充电路径上,分布电感影响了充电的速率,下桥臂功率管的最窄导通时间应保证自举电容有足够的电荷以满足栅极所需要的电荷量再加上功率器件稳态导通时漏电流所失去的电荷量.因此,从最窄导通时间为最小值考虑,自举电容应足够小;综上所述,在选择自举电容大小时应考虑,既不能太大影响窄脉冲的驱动性能;也不能太小影响宽脉冲的驱动要求,应从功率器件的工作频率、开关速度、门极特性等方面进行选择、估算后调试而定。

3.3.3视频处理模块

  我们的智能模型车自动控制系统中使用黑白全电视信号格式CMOS摄像头采集赛道信息。摄像头视频信号中除了包含图像信号之外,还包括了行同步信号、行消隐信号、场同步信号、场消隐信号以及数字信号等。因此,若要对视频信号进行采集,就必须通过SCCB设置数字摄像头的部分参数。

3.3.4 OpenArt mini

  对于AI视觉组来说,要完成AI部分的识别二维码、数字、水果、动物等任务,OpenArt mini是必不可少的。我们购买了逐飞的成品摄像头,通过串口将识别的信息与主单片机进行通信,从而执行对应的任务。

3.3.5接口及外接模块

  对于单片机最小系统、陀螺板、视频模块、OpenArt mini,我们在主板上设计了外接接口,用于连接。

▲ 图 3.8: 微处理器 控制最小系统接口

▲ 图3 9: 微处理器 图像最小系统接口

  我们最小系统的原理图参考了龙邱公司、NXP公司的 微处理器最小系统原理图,我们更改了内核供电方案,屏蔽了没有使用到的引脚。在软件上,我们使用了龙邱公司提供的开源库。

  在调试过程之中,我们需要实时的了解与掌握一些车的运行状态,比如说传感器的状态,舵机的转角等,调试时用OLED显示屏将这些参数显示出来,让我们实时的监测车的状态,从而做出判断,这样很大程度的方便了对车的调试。

 

第四章 能车控制软件


  效的软件程序是智能车高速平稳自动寻线的基础。我们设计的智能车系统采用CMOS摄像头进行赛道识别,图像采集及校正处理就成了整个软件的核心内容。在智能车的转向和速度控制方面,我们使用了鲁棒性很好的经典PID控制算法,配合使用理论计算和实际参数补偿的办法,使智能车能够稳定快速寻线。

4.1赛道中心线提取及优化处理

4.1.1原始图像的特点

  在单片机采集图像信号后需要对其进行处理以提取主要的赛道信息,同时,由于交叉道、起点线的存在,光线、杂点、赛道远处图像不清楚的干扰,图像效果会大打折扣。因此,在软件上必须排除干扰因素,对赛道进行有效识别,并提供尽可能多的赛道信息供决策使用。

  在图像信号处理中我们提取的赛道信息主要包括:赛道两侧边沿点位置、通过校正计算的赛道中心位置,中心点规划面积,赛道变化幅度,赛道类型判别。

  由于摄像头自身的特性,图像会产生梯形式变形,这使得摄像头看到的信息不真实。因此我们利用赛道进行测量,创建函数还原出了真实赛道信息。原始图像是一个将数字图像经模拟电路转换得到的二维数据矩阵,矩阵的每一个元素对应一个像素点,近处的图像大,黑线为梯形状。

  程序上将每一行的黑白跳变点(跳变点按从右到左的顺序)记录下来,保存到两个二维数组里(分别表示上升沿、下降沿)。通过遍历上升沿和下降沿可以完成赛道边沿的提取。

  摄像头采集到几种典型赛道图像如图4.1~图4.4所示。

4.1.2赛道边沿提取

  边沿提取算法的基本思想如下:

(1) 直接逐行扫描原始图像,根据设定的阈值提取黑白跳变点;
(2) 赛道宽度有一个范围,在确定的赛道宽度范围内提取有效赛道边沿,这样可以滤除不在宽度范围内的干扰;
(3) 利用赛道的连续性,根据上一行白块的位置和边沿的位置来确定本行的边沿点;
(4) 求边沿点时,因为近处的图像稳定,远处图像不稳定,所以采用由近及远的办法;
(5) 进出十字的时候,通过校正计算出边沿角度可较好的滤除十字并补线;
(6) 人字元素是整个赛道边沿角度是尖锐角的部分,根据这个特征通过计算边沿的角度以及内侧两条边沿包络形成的面积可以有效的识别出人字;为了排除赛道方向的突变对控制造成干扰,将人字建模成为具有一定曲率的弯道,并进行补线;
(7) 由于权重分配的问题,如果不对障碍进行一定的处理的话,控制量对于远端的障碍相应比较小,可能在很接近障碍的时候才有响应,这样很容易造成撞到障碍,为了消除这种影响,我们利用曲线包络的形式 将障碍作用的区域人为扩大,这样有效避免了碰撞障碍的危险。

  边沿提取算法的程序流程如图4.5所示。

  处理后得到的黑线中心如图4.6~4.9图所示。

4.1.3图像校正

  图像校正的实现如下:
(1) 调整好摄像头位置、前瞻,固定好;将摄像头对准黑白相间的赛道板,然后用电视观看摄像头图像,用照相机对准电视拍照(见图4.10);

(2) 从照片中截取出赛道部分,然后用matlab编写程序,载入图片并进行相应的桶形变换、透视变换,调整好参数,生成校正表和反校正表;

▲ 图4.11 校正后的效果

(3) 在单片机程序中加入常量表,然后就可进行相应的校正和反校正变换了。
(4) 用上位机观察的校正效果如下:

▲ 图4.12 上位机模拟校正

4.1.4推算中心

  通过之前提取的赛道边沿数据推算中心:当左右边沿点总数较少时返回;若只有单边有边沿点数据,则通过校正对单边数据按法线平移赛道宽度一半的距离;当能找到与一边能匹配上的另一边沿点时则直接求其中心作为中心点。推算完中心点后,对中心点进行均匀化,方便之后的控制。计算出的中心点效果如下:

4.1.5摄像头图像入库的处理

  我们的策略是使用摄像头后车入库。车子接到球跑完赛道后半段,图像在车库前先识别出车库的特征,判断出当前图像为车库后,寻找入库补线的起始点和终止点,然后调用补线函数,在图像校正域中补一条半径为赛道宽度的四分之一圆弧,对左右边界点进行均匀化处理后,就得到了以上图像。

4.1.6路径选择

  根据往届比赛以及本届华北赛的经验,赛车能否以最短的时间完成比赛,与赛车的速度和路径都有着密切的关系,因此,如何使赛车以一个最合理、最高效的路径完成比赛是提高平均速度的关键。
  对于赛车路径的优化,我们从以下三个方面来完成:

  1)增加视场的长度和宽度
  根据我们的分析,当赛车采集到的图像能够覆盖一个比较完整的S弯道时,通过加权算法计算出来的中心就会处于视场中央附近,此时赛车会以一个比较好的路径快速通过S弯道;相反,如果视场无法覆盖一个完整的S弯道,赛车就会误处理为普通的单向弯道,这样赛车的速度就会大大减慢。因此,尽量增大视场的长度和宽度就很有必要了。

  视场的长度与单片机可以处理的图像行数成正比。我们采用由运算放大器制作的模拟比较器进行图像二值化,处理速度较A/D转换有了很大提高,大大增加了单片机处理的图像行数,最终处理行数为95行(隔3行提取一行),达到的视场长度为200多cm。为了增加视场宽度,增加每行采集的图像点数之外,我们采用了广角镜头,从而有效地增加了视场宽度。

  2)优化加权算法
  对整场有效行的中心求加权平均值的算法,在低速情况下可以有效地优化赛车路径,但在赛车速度提高到一定程度之后由于过弯时的侧滑,路径不是很好。而由于图像分布不均,三分之二的行分布于车体前方40cm的范围内,求出的加权平均值受车体近处的图像影响较大,因此整场图像求加权的算法对于高速情况下的路径优化效果不是很明显。

  为了解决这个问题,我们对于参与加权计算的图像行数及权重进行了处理,减小了车体前部50cm范围内的图像参与加权的行数和权重,同时增大视场前部图像的权重。在经过长期调试之后,得到了一套比较合适的参数,能够有效优化高速情况下的赛车路径。

  3)对不合理的中心点进行处理
  对于在校正后的图像数据中求得的中心线,反校正到原始图像后存在一行中含有多个中心点的情况。在通常情况下,这种情况出现在较远的视野中,但由于我们增大了视场前部图像的权重,这些中心点对权重的影响极大,导致车模容易出现掉轮甚至冲出赛道的现象。

  为了解决这个问题,我们利用数学方法求出了中心线的折点,对折点之后的中心点单独处理,使车模不再出现掉轮的现象。

4.2折点求取原理简介

  折点是指数学中的极值点,即一阶导数为0的点,但一阶导数为0的点不一定都是极值点,究竟是否是极值点,还要判断二阶导数。在图像的离散数据中,极值点的离散化计算公式如式如下:

( Y n − 1 − Y n ) ⋅ ( Y n − Y n + 1 ) < 0 \\left( {Y_{n - 1} - Y_n } \\right) \\cdot \\left( {Y_n - Y_{n + 1} } \\right) < 0 (Yn1Yn)(YnYn+1)<0

  但这个公式在图4.18中存在一些问题,对于(Xn,Yn)点,由于 ( Y n − Y n + 1 ) \\left( {Y_n - Y_{n + 1} } \\right) (YnYn+1) 为0,所以该点不会被判断为极值点。但我们认为这样的点也能反映图像的特征,因此对上式作出修改得到新的折点计算方法:

( Y n − 1 − Y n ) ⋅ ( Y n − Y n + 1 ) ≤ 0 & & ! ( 0 = = ( Y n − 1 − Y n ) & & 0 = = ( Y n − Y n + 1 ) ) \\left( {Y_{n - 1} - Y_n } \\right) \\cdot \\left( {Y_n - Y_{n + 1} } \\right) \\le 0\\& \\& !\\left( {0 = = \\left( {Y_{n - 1} - Y_n } \\right)\\& \\& 0 = = \\left( {Y_n - Y_{n + 1} } \\right)} \\right) (Yn1Yn)(YnYn+1)0&&!(0==(Yn1Yn)&&0==(YnYn+1))

  极值点是针对某一个坐标轴而言的,对上式稍作修改,即可得到针对另一个坐标轴的极值点的计算公式:

( X n − 1 − X n ) ⋅ ( X n − X n + 1 ) ≤ 0 & & ! ( 0 = = ( X n − 1 − X n ) & & 0 =

以上是关于智能车竞赛技术报告 | 智能视觉组 - 北京科技大学智能视觉组的主要内容,如果未能解决你的问题,请参考以下文章

17届智能车竞赛技术报告 | 北京科技大学无线充电组

智能车竞赛技术报告 | 智能视觉组 -哈尔滨工业大学 - 紫丁香七队

智能车竞赛技术报告 | 智能车视觉 - 青岛科技大学 - 飞猪

智能车竞赛技术报告 | 智能车视觉 - 西南科技大学 - 西科二队

智能车竞赛技术报告 | 智能车视觉 - 中南林业科技大学 - 弃车人队

智能车竞赛技术报告 | 智能车视觉 - 宜宾学院- 平头哥1组