锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

智能车竞赛技术报告 | 基础四轮组 - 大连理工大学 - 霹雳小队

时间:2022-08-25 20:30:00 abs轮速传感器被动式002高分辨率伺服型加速度传感器6x3光电传感器反光板反射式光电传感器

学 校:大连理工大学
队伍名称:霹霹雷小队????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
参赛队员:黄涛???
郝泽源郝泽源郝泽源郝泽源
何泽禹何泽禹何泽禹
带队教师:吴振宇 李胜铭


??随着近年来电子科技的不断发展,电子科技的影响逐渐渗透到各行各业,越来越多的自动化设备逐渐渗透到人们的生产和生活中。嵌入式的快速发展也为智能研究提供了更广泛的平台。5G随着互联网的到来,无人驾驶汽车的研发进入了一条新的快车道。在此背景下,由各种传感器和控制器组成的控制模式已成为一个新的研究热点,控制算法和控制策略更为重要。

??全国大学生杯智能汽车竞赛是德国英飞凌半导体公司生产的国家教学质量和教学改革项目资助项目TC264作为车载的核心控制模块,单片机增加了道路传感器、摄像头、电机驱动电路,并编写了相应的程序,制作了一个可以独立识别道路的汽车模型。因此,本次比赛涵盖了智能控制、模式识别、传感技术、汽车电子、电气、计算机、机械等学科,对提高学生的知识整合和实践能力具有良好的促进作用。

??本文采用了第十六届全国大学生智能车竞赛的汽车模型——B车型模型作为研究平台,32位单片机TC264作为主控制单元,应用AURIX Development智能控制策略研究软件作为开发工具。道路信息检测模块将电感线圈和矫正电容器组成电磁传感器和OV7725硬件二值化值化摄像头获取轨道信息。本车型为B型号模型由后电机驱动,两个轮子之间的机械差速在转弯时获得轮速差。因为只有一个电机,所以只需要一个编码器来测量速度PID闭环控制速度的算法。

??采用电源模块设计TI公司开关电源芯片TPS565201和两个线性稳压电源AMS-1117-3.3 分别产生5V3.3V电压,5V电压为LM324同向放大器供电,其中之一AMS-1117-3.3编码器、摄像头、串口通信、按钮、LCD、拨码等模块供电,另一个输出仅为单片机供电,两个3.3V单片机的供电模块可以保证单片机的供电电压稳定,使单片机运行更加可靠高效。最后还有一个LM2596-adj由于舵机的供电范围不固定,虽然舵机的型号是固定的,但不同的工作电压会使电机有不同的响应速度和扭矩,因此选择可调的稳压模块,以便调试和优化舵机模块。

??单片机算法设计部分是本论文的重点,主要体现了应用PID控制理论完成车模速度控制,使用最长的白列算法更准确地识别图像。

??本技术报告将从智能汽车的机械结构、硬件电路、算法设计等方面全面详细介绍整个准备过程。
?

第一章 案设计


??章节主要介绍了智能汽车系统总体方案的选择和总体设计理念。

1.1系统总体方案的选择

??在这场智能汽车比赛中,我们的团队基于四轮组。在寻找传感器时,选择使用电磁传感器和摄像头。电磁放大电路使用经典LM324,选择硬件二值化相机OV7725,使用编码器测速进行速度闭环控制。

1.2系统总体方案设计

??该系统的硬件电路采用模块化设计。主要分为五个部分:主控制板、电机驱动和速度测量、电磁信号采集和图像采集。单片机最小系统集成在主控制板上,主控制板与其他功能板连接。

  • 主控板:

??主控板上包括一片TC264一片作为核心控制器TPS565201作为5V电源芯片,两片AMS1117-3.3单片机和其他部件分别供电,还有一片LM2596为舵机供电的目的是让单片机在更稳定的电压环境中工作。以及一些辅助设备
??模块按键、LED、拨码、LCD用于操作,通过预留串口连接蓝牙,方便调试和数据获取。
??辅助模块相互配合,自己写GUI辅助操作界面,方便观察车模运行状态,修改参数,调整档位等功能。
??主要包括电源部分8V5V降压模块,3.3V稳压模块和舵机电源电路。其中,由于舵机摆角瞬时功率大,对电源纹波要求不严格,选择了LM2596-adj电源和可调电压输出更方便优化舵机的机械性能。外设和单片机选择3.3V线性5V电源不仅供电放大器,还供电两片AMS1117-3.3供电,所以选择TI公司的TPS565201作为5V利用片设计的电路理论可以输入最大电压15V,输出电流最大7A,它的性能完全可以满足所有元件的工作消耗,而且绰绰有余,这也解决了我们第一次使用它7805芯片过热问题。

  • 信号采集:

??信号采集部分是电磁和摄像头。

??采用电磁信号采集系统6.8nF电容和10mH通过电感配对采集电磁导引信号LM324通过放大和滤波电路,获得波动较小的直流电压信号TC264内部自带的ADC采集引脚进行信号采集。
??相机采集使用硬件二值化相机OV7725,相机可以通过编写寄存器配置来改变对比度、曝光等设置,可以满足图像的采集功能。

  • 电机驱动:

??电机驱动板包括为MCU以及外部供电的电源电路,使用电机驱动板20P灰线连接到主控制板,包括电机驱动、速度测量和液晶屏接口。电机驱动采用两个半桥驱动芯片BTN7971构成H桥式电路具有简单、集成度高、可靠、方便等优点。预留预留6pin编码器接口。选择液晶屏SPI接口的ILI9341芯片控制的2.8TFT液晶屏。
?

第二章 械结构调整与优化


  能汽车各系统的控制都是在机械结构的基础上实现的,因此在设计整个软件架构和算法之前一定要对整个模型车的机械结构有一个全面清晰的认识,然后建立相应的数学模型,从而再针对具体的设计方案来调整赛车的机械结构,并在实际的调试过程中不断的改进优化和提高结构的稳定性。本章将主要介绍新B3车模的机械结构和调整方案。

2.1 智能汽车车模的选择

  本届比赛基础四轮组使用B3车模.

▲ 图2.1智能汽车B3车模

2.2 智能汽车传感器的安装

  车模中的传感器包括有:速度传感器(编码器),电磁传感器,摄像头传感器。下面分别介绍这些传感器的安装。

2.2.1 速度传感器的安装

  速度传感器我们使用了龙邱mini512线带方向编码器,安装方法如下图:

  X线含义是编码器旋转一圈产生 X个脉冲,通过脉冲计数可以读取到数值A。这个数值A和小车的速度呈线性关系,一般情况下可以不去换算具体速度直接使用即可。

  若想转换为具体速度,则需要则需要知道以下参数:车模轮子周长 X0、车模齿轮的齿数 X1、编码器齿轮的齿数 X2、编码器的线数 X3ENC 读到数据 X4ENC 读取时间间隔 X5,速度换算公式:V = ( (X4 / X3) * X2 / X1 ) * X0 / X5

▲ 图2.2 编码器安装示意图

2.2.2电磁传感器的安装

  为了收集到更多的赛道信息,电磁放大板通过两根碳纤维杆固定在距离车身最前方大约10cm处,电磁电路板共有四个电磁传感器,两个横放的电磁传感器位于电路板最两侧,两个斜放着的电磁传感器位于电路板中间的两侧,通过对电磁值的处理,来判断入圆环的时刻以及小车是否冲出赛道等情况。

2.2.3摄像头传感器的安装

  对于摄像头传感器,我们使用了山外鹰眼二值化摄像头,只有黑白两色。由于比赛严格限制了摄像头高度(摄像头镜片中心的高度距离地面不超过10厘米),所以我们利用自己设计的3D打印模块,通过螺丝螺母将摄像头固定在碳纤维杆上同时用热熔胶加固。对于摄像头的安装角度,由于摄像头是120°广角摄像头,角度太靠近地面会导致画面畸变较大,太远离地面又会导致画面无用部分所占比例较大,因此对于角度的调节要恰当适中。同时虽然二值化方便了对于图像的处理,但是无法避免赛场反光的影响,进而导致车模无法正确找到赛道,该问题也一直存在于我们整个调车过程中。

2.3 智能汽车电路板及电池的安装

2.3.1 电路板的安装

  为了使智能车具有较好的稳定性及转向性能,我们在搭建智能车时将主控板放到了车模的底板上,并用热熔胶和尼龙柱牢固地固定到了车体上。电机驱动电路板则是直接安装到了电机上方,和主控板之间用灰排线和功率电源线连接。

2.3.2 电池安放

  由于我们使用的是体积和重量较大的镍镉电池,我们将电池放到了车底盘靠近电机的部分,通过橡皮筋固定,方便的同时进一步降低车模的重心。

2.4 其他机械结构的调整

2.4.1 机械差速的调整

  B车模只有一个电机,因此后轮只有机械差速,即被动差速。机械差速器为滚珠差速,需要通过松紧来调节差速效果和动力太松会动力不足,滚珠空转,不能将电机的动力输送到轮子上去,太紧会失去后轮的被动差速效果,不利于转弯。尤其是在后期提速的过程中,尤其注重差速的调节,这需要车手不断的调节去感受差速带来的变化,否则会导致转弯工程后轮的漂移或者冲出赛道。所以这部分一定需要花时间去找到感觉才能做出一辆顺滑迅捷的极速四轮车。

2.4.2 车轮表面的处理

  对于车胎,新B车模采用了全新的空心胎皮。但对于尤其是新买的车轮,因为车轮因为与赛道摩擦少,还是光亮面,会降低车轮的抓地力,所以需要对轮子的表面进行处理,以保持其粘滞性,提高抓地力。

2.5 小结

  一个良好的机械结构是一辆“神车”基础,关乎车的整体的性能,包括车的加速性能、转弯性能等。在相同程序代码的控制环境下,机械结构直接影响着车模是否可以在较高速度下正常行驶。因此我们也花了较多的时间在改进车模的机械结构上,例如调节前轮悬挂的松紧,将前轮倾角调节至内倾内八,在可调节的范围内降低车模的重心等。经过大量的理论实验与研究调节机械结构之后,小车整体的稳定性和可靠性得到了较大的提高。

 

第三章 件电路方案设计


  系统采用模块化设计方式,主要包括单片机最小系统模块、电源模块、电磁信息采集模块、图像信息采集模块、串口通信模块、测速模块、显示操作模块等部分。

3.1单片机最小系统模块

  本设计核心控制器为英飞凌公司生产的32位单片机TC264,该单片机具有144引脚,双核设计,最大频率位200MHz,具有2.5Mbyteprogram flash96KbyteData Flash.具有硬件I2C接口和SPI接口,和独立的ADC模块等。

  这些丰富的系统资源可以更方便的连接外部电路,多个独立的ADC通道也使得外围的某些ADC模块的设计得到了简化,多种通讯接口也方便了扩展更多的外设和电路功。最高200MHz的频率也让该单片机具有更快的计算速度,使得可以最大的减小数据处理时间。并且TC264双核的结构可以使两个和分别执行不同的命令,丰富功能,提高运行效率。

3.2电源模块

  电源模块是系统稳定工作的基础不管是单片机的稳定运行还是ADC的采集数据等硬件电路的良好运行,都离不开一个稳定的电源系统。因此,一个具有稳定的电压是粗话模块和电流的稳定性在整个的智能车系统中起着十分重要的作用。

3.2.1电池的使用

  电池采用的是2000mAh的镍镉电池,该类型电池的特点就是“结实”、价格便宜,作为官方推荐的电池,镍镉电池完全可以胜任对整个智能车系统供电的要求。

  但是由于镍镉电池电池容量小,具有记忆性的缺点,每次使用不能对电池进行过度放电,并且每次充电前必须先放电才能在充电。

  电池通常电流高,电池的爆发力会强些,但未必如电流低时饱满、持久。同时我们也必须注意充电电流不能过高,当电流过高时,不仅不能提高电池性能,反而会损坏电池,严重时会导致电池起火、爆炸。电池充满电时,电压大约为8V。在电池压小于8V时,应注意及时充电,电池过放会对其造成不可逆转的损害,电压低于7V会对电池造成毁灭性伤害,导致以后再使用时会出现放电量不足的现象,影响整个系统的运行,更严重的可能会导致单片机因为掉电而复位。

3.2.2 稳5.658V电源模块

  使用LM2596-adj将电压降到5.628V供舵机使用。电路原理图如图3.1所示。

  通过R14R15构成的反馈回路调整输出电压的大小。因为舵机的型号种类不同,所以设计可调输出电压的稳压模块微电机供电就可以避免在更换电机的时候必须更换整个电路板的尴尬情况。

▲ 图片3.1稳5.658电源模块

3.2.3 稳5V电源模块

  由于放大器的额定工作电压为5V,所以需要一个5V的稳压模块,这里选用的是TI公司生产的TPS565201电源芯片,其特点是可以通过大电流和较宽的输入电压范围,方便后期更换输入电源。
  5V稳压电源模块如图3.2所示。

▲ 图片3.2 5V稳压模块

3.2.4稳3.3V电源模块

  由于单片机的额定电压为3.3V,串口通信等模块也为3.3V,所以将电压稳定在3.3V为各个模块供电是必不可少的。
  电路的设计原理如图3.3所示。

▲ 图图片3 3 3.3V稳压模块

3.3 电机驱动模块

  本智能车车模重量不大,并且电机型号较小,对电机驱动的输出电流要求并不苛刻,因此本设计的驱动电路由两片BTN7971芯片构成H桥电路。通过控制电流的流通方向来实现电机的正反转。并通过控制输入的PWM波的占空比来调节电机的平均输出功率,达到控制电机转速的目的。具体电路如图3.4所示。

3.4 串口通信模块

  调车的过程中,需要实时的观察变量变化情况,通过下载线在Live Watch 窗口中观察变量很受局限,所以采用蓝牙无线通信模块,波特率为115200,传输速度更快,配合上位机观察超调量,有助于调试PID参数,还可以用蓝牙来无线传输采到的数据。具体电路图如图3.5所示。

▲ 图图片3 5串口通信原理图

3.5 运算放大器

  对采集到的电磁值进行放大和稳流处理,方便单片机自带的ADC通道进行读取。电路如下图3.6所示,一共四路ADC放大电路。

3.6总结

  一个良好的、运行稳定的硬件电路是一个智能车系统的核心,电路就像是人体中的神经网络,将单片机发出的指令传给各个模块,使各个模块之间配合的更加高效。而电路的鲁棒性也需要更加的强大,才能保证智能小车可以更稳定、更持久的运行下去,尤其是今年国赛的要求是在两分钟内的积分制,这更加考验了智能小车硬件运行的稳定性和耐久性。

 

第四章 车的控制方法


  础四轮组多采用摄像头采集数据,力求以最快的速度,跑完整个赛道。不论上哪种方案,软件的总体框架总是相似的,我们的想法是先调稳定,再提速度。软件上大类分为图像采集、图像处理,电感采集,电磁控制,速度采集以及速度控制。其中以图像处理为主,电磁辅助控制。

4.1图像采集思路

  摄像头选择具有硬件二值化的OV7725,传输回的是320160的黑白图像,以16进制存在40160的数组中。使用硬件二值化的好处是处理简单,不需要设计复杂的二值化方法。但是这也成为了一种限制:在实际的调车过程中,环境亮度随时间变化明显,必须时刻调节相应的对比度阈值(宏定义)以达到稳定的图像读取效果;若赛道光照不均匀,更是束手无策(见图4.1.1,在一边调好的阈值,到另一边就完全花了)。

  在我们日常练习的赛道上,另一个更加严峻的问题是自然强光的干扰,分为直射光和反射光。由于摄像头较低,想要获得较长的前瞻就不得不将摄像头俯角尽量减小,但是这样一来只有下半部分是赛道信息,上半部分不仅没有参考意义,还会有很强的直射自然光干扰,在对比之下赛道二值化成了一团黑色,调节对比度阈值也无济于事。于是我们利用电磁板,将摄像头上半面遮住,以此缓解此问题。也是由于摄像头较低,远处的自然光在地板、墙面上的反射也对摄像头二值化干扰较大,我们唯一能做的就是加装偏振片,但是效果仍不理想。 只得在程序中采取各种过滤、补齐方法减小影响。

4.2图像处理思路

  图像处理的大思路是边扫描边处理,即每一行、每一列扫描的同时对赛道元素进行分析、操作。这样做是因为我们主要采用从上一行的中间点开始向两边扫描边界的方法,这样在十字等地方遇到向下的尖角时就面临选边问题(见图4.2.1),为了让中点有一个大致的取向,就采取了一定的预测手段,向前补线。

4.2.1边界的获取

  我们采用了先纵向扫描、再横向扫描的方法。即先隔8个像素点纵向扫描,得到40列的上下边界数据,进而得到纵向最低点、最长白列、二阶差分跃变点、前瞻行高度等信息,为横向扫描做一定的预处理,再自下而上隔一个扫一个地读取60行的左右边界数据。其中横向扫描时在判定白色点时为减少无效判别,采用隔8扫1的方法,即先取数组中的16进制数,若为0x00(定义白色为0),则直接跳过,直到不满足条件时,再取16进制数的各个位正常判别。

  补线方面有断点补线和宽度补线两种,都是在横向扫描每一行结束后的操作。断点补线就是在二阶差分足够大时认为其是断点,向下取一斜率,下一回开始以断点为依据,依斜率补线,此时关闭边界扫描及其他判定。宽度补线就是在一边丢线后依经验得到的宽度公式(这里只采用了y=ax+b的简易拟合),将另一边补出来。由于直道和弯道的宽度不同,由纵向贯通列的多少大致地区分,对应不同的预测公式。两个补线均具有预测性质,是基于人的习惯做出的模仿,断点补线的预测成分更大一些,且一开始就是为了应对十字而存在的,最后有了分辨十字元素的思路以后就显得鸡肋了,在弯道等地方会经常误触(如图4.2.1.1,二阶差分的确挺大的),加上路肩后斜率会求错(如图4.2.1.2),如果有机会继续调车的话多半会舍弃掉。

4.2.2 特殊元素的处理

  处理特殊元素的思路是抓住特征,不同阶段之间衔接灵活,最好可以在一定引导下正常循迹,同时存在冗余,保证未正常触发下一阶段时也可完成整个元素。

  以圆环为例。入环使用的是最常规的补线,将纵向二阶差分大的点与左/右下角连接,为了衔接平滑,结束补线的标志是前瞻行搭到此断点以上。出环时先借助断点补线维持一定打角,当补线结束时再以环内打角的平均值延一段距离,解除死打角的标志是判定到直道。入环时为了保证不读到旁边的直道,横向中点读到纵向二阶差分大的地方会限幅到入环方向以内。

  坡道的触发分为3个阶段,均是由纵向贯通行的数量判别的。当大于一个较小阈值时认为在上坡,可在一定容错范围内重复触发,当不满足此条件且超出容错时便认为在坡顶,当大于一个较大阈值时认为在下坡 ,超出容错时认为结束坡道。这里的容错计数皆使用帧数,个人认为比较符合人的逻辑。另外由于坡顶会不可避免地读到赛道外的干扰因素(如图4.2.2.1),于是将前瞻行限制到一定高度以下。

  三叉的判别是根据俯视图“丁”字形的横向贯通、纵向截断的特点来的。入三叉方法与入圆环方法类似,将上边界最低点与左右下角连线,由于下凸不是很明显,难以由纵向二阶差分准确判断前瞻行是否搭在断点上面,于是模糊地认为最低点到边界一定范围内就进入三叉了。三叉内由于电磁值小,特别禁用了由电磁值判定的舵机打死。

4.3 电感采集、控制策略

  电感采取两横两斜的排布方式,两个横电感主要用作丢线打死的方向判别,两个斜电感主要用作环岛的触发。四个电感数据在10ms中断里分别采集10次求平均,分辨率为12位。

  两个斜电感在经过环岛时会分别经历一次极大值,其间两个横电感之和一直比较大,但是鉴于车身在通过时不一定是理想中的在赛道中央,所以斜电感仅用作环岛的触发,而后续的入环方向等判别由摄像头完成。

  当弯道打角不足、车身探出赛道时,摄像头已经读乱,无法自主返回赛道,这时靠近赛道中央的横电感还是有区别于其余三个电感的较大的读数的,于是可以靠这一点来向正确方向打死,回到赛道。这个打死阈值最好与摄像头读乱的时机有重合或正好承接。

  当四个电感的读数都很小时,可认为赛车冲出赛道,在0.5s后开始每经过一个10ms中断将目标速度减1,不满足减速条件后就直接重置。之所以这么做是为了在失误冲出赛道后也能有机会回到赛道。
  另外,直道上的四个电感之和的最小值与三叉内四个电感之和的最大值有明显的区别,可用作出入三叉的辅助判别,如电磁值大才可触发入三叉,电磁值小才可触发出三叉。

4.4 速度采集以及速度控制

  本次采用编码器测速,优点是用齿轮啮合,测速稳定,使用中出现的问题是测得的瞬时速度波动较大,单次测速作为参考不太可靠。应对措施是采取一定的过滤方法,并取十次速度的平均值作为参考。

  电机开始采用增量式PID,可能是由于参数没调好,发现电机超调严重,例如目标速度是70时会一路加速到110以上,相比之下减速略显不足,弯道车模甚至会竖起来,电机也会容易发烫。于是改用了位置式PID,电机超调明显减缓,加减速响应及时了不少,甚至运行时的声音也低了不少。

  速度的控制策略就是简单的直道高目标速度,弯道低目标速度,其中环岛采用固定目标速度,以求稳定通过。上坡采用比直道更高的目标速度,以减小机械上被动减速的影响。

4.5 舵机打角控制策略

  在较高的电压下,普通的塑料舵机容易损坏,于是我们更换了金属舵机,之后再没有出现损坏。我们的舵机使用PWM波控制,由位置式PD给出占空比的值,频率采用50Hz,因为舵机的反应时间为0.1s左右,采用更高的频率意义不大(个人观点)。

  输入舵机打角的值是参考行上读取的赛道中间值和屏幕中间值的差,参考行由纵向扫描的最长白列乘以一定的比例(宏定义)获得,随着调车进程推进,速度上升,比例也逐渐加大。

  PD值的选取依然按直道和弯道加以区分,直道PD均小,弯道PD均大。考虑到一般的弯道有专门多余的打角以配合速度,环岛这种持续的打角额外采用比直道更小的PD来改善循迹。
  第五章 开发工具、制作、安装、调试过程

5.1 上位机

  在调试过程中,我们使用的是由智能车实验室成员自主设计开发并适合摄像头、光电组别的上位机。大体功能如下:

5.1.1 串口功能

1、普通查看接收功能

  选择串口号,和波特率。默认串口号位所有可以使用的串口中号码最小的,默认波特率位115200(考虑速度和误码率确定为115200),然后选择“打开串口”。

2、普通发送功能

  必须打开串口此功能才能用。有“显示发送了多少字节”功能,“清空显示”功能,还可选择“包含换行符”,“16进制发送”功能。

3、直接发送字节功能

4、蓝牙调试功能

  使用此功能必须打开串口,然后“使能蓝牙调试”框勾选。
注意:

  AT+BAUD: 后边是1,2,3,4,5,6,7等。4代表9600bps,8代表115200bps
  AT+NAME: 可以是英文或者数字组合。
  AT+NAME: 可以是英文或者数字组合。
  AT+ROLE: 后边是0,1。0是从机,连接单片机,1是主机,连接电脑。

单片机程序:

【省略】

 

第六章 模主要参数


6.1智能车外形参数

  • 经过改装后,智能汽车外形参数为:
  • 车B3
  • 车长:435mm 车宽:245mm 车高:143mm
  • 摄像头距地面高度:9.3mm
  • 车重:1kg

6.2智能车技术参数

  智能汽车相关技术参数如表6.1所示:

  • 项目 参数
  • 车模轴距/轮距(mm) 200
  • 车模平均电流(匀速行驶)(mA) 400
  • 电容总量(uF) 2400
  • 传感器种类及个数 测速编码器 1个
  • LC电磁传感器 4个
  • OV7725 1个
  • 新增加伺服电机个数 0
  • 赛道信息检测空间精度(mm) 10
  • 赛道信息检测频率(次/秒) 100

 


  这份报告中,我们主要从智能车的机械结构、硬件电路、控制算法、调试方法等介绍了我们准备比赛的整个过程,摄像头的寻迹程序大体上是继承了前辈们的精髓,但是也做出了我们自己的创新。创新之处大体为以下几点:

  1、 我们并没有选择单一的摄像头传感器寻迹,选择使用电磁配合摄像头进行一些元素的识别。我们电磁的分布选择两个平电感和两个外八电感。平电感的作用主要是用来辅助识别车辆位置的,由于今年基础四轮组别的摄像头高度固定在了10cm以内,这就导致了视野和前瞻的远近相互制约,但是一辆车如果看的不够远那就很难跑快,所以为了获得更远的前瞻,我们不得不牺牲一部分的视野来换取更远的前瞻,所以车辆近处的信息就无法通过摄像头来获取。于是我们选择了在距离车头10cm处添加两个平电感来获取车辆近处的位置信息。另外两个外八的电感用来辅助环岛的识别,使得环岛的识别更加的准确。

  2、 读取图像的方式也进行了改进,由于摄像头过低,并且为广角摄像头,所以获得的图像会出现很大的畸变。为了可以更准确的获得赛道信息,我们选择最长白列算法进行读取,这样就可以控制赛道读取的位置。

  3、 对车模进行一些调整。今年使用的车模是B3车模,该车模后置一个电机,依靠机械差速来调整轮速差。为了提高车辆的拐弯性能,我们调整机械差速器的松紧,并且改变了前轮的倾角来提升转弯时车辆的抓地性能。
  智能车是培养大学生综合动手能力的一个很好的、很成熟的一个竞赛,在比赛里我们不仅需要编程能力,还需要对车辆机械结构有着较深的理解,也需要熟悉各种传感器和电路的性能,你会发现不管是什么专业的学生都会在这个比赛中找到自己的定位。智能车比赛中最重要的是你需要足够多的创新能力和想法,和国家已经把创新放在了国家全局的核心位置,如今的竞赛一方面是在考验大学生的基本知识,更实在考验每一个参赛大学生的创新能力,所以只有创新才可以从全国大学生中脱颖而出。

  在这个比赛中每个人都会学有所得,做有所获,通过这个比赛我也懂得了团队的重要性,学会分工合作,也找到了自己的擅长一面,同时也弥补了自己的不足之处。在长达几乎一年的准备过程中,我们团队三个人并没有一帆风顺,但我们不惧艰难,苦难与折磨只会让我们更加的强大,一年中的欢笑也会是我内心永远的花朵。
  希望这篇技术文档会对未来参与智能车这项比赛的同学有所帮助,也祝愿他们可以在比赛中收获快乐

 

考 文 献


[1] 童诗白,华成英.模拟电子技术基础[M].北京. 高等教育出版社.2000
[2] 邵贝贝. 嵌入式实时操作系统[LC/OS-Ⅱ(第2版)[M]. 北京.清华大学出版社.2004
[3] 阎石.数字电子技术基础[M].北京:高等教育出版社,1998.
[4] 雷霏霖,梁志毅.基于CMOS传感器 OV7620 采集系统设计[J].电子测量技术,2008,12(31):110-112.
[5] 谭浩强.C程序设计[M].北京:清华大学出版社,2005.
[6] 郭芳,曹桂琴.数据结构基础[M].大连:大连理工大学出版社,1994.
[7] 邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社,2004.
[8] 胡寿松.自动控制原理(第六版)[M].科学出版社,2014.
[9] 张文春.汽车理论[M].北京.机械工业出版社.2005
[10] YUAN Quan,ZHANG YunZhou,WU Hao,et al. Fuzzy Control Research In The Courses Of Smart Car[C]. Machine Vision and Human-Machine Interface (MVHI), Kaifeng,China, 2010: 764-767.
[11] 侯虹.采用模糊PID控制律的舵机系统设计[J].航空兵器,2006,2(1):7-9.
[12] 孙浩,程磊,黄卫华,等.基于HCS12的小车智能控制系统设计[J].单片机与嵌入式系统应用,2007,03(16):51-54.
[13] LU Zhenlin,LI Jingjiao,Zhang Minghui.Intelligent Control Research based on the Smart Car[C]. Advanced Computer Control (ICACC),Shenyang,2010:292-297.

 


附录A:程序源码

PID控制:

void Motor_PID()//电机PID
{ 
        
    static int error[2] = { 
        0};   //历史误差     左边变量
    long P_data = 0, I_data = 0, D_data = 0;
    static long I_count = 0; //积分累计值

    error[0] = Speed_Target - speed;
    P_data = MotorP * error[0];
    I_count += error[0];
    if(I_count > I_COUNT_MAX)
        I_count = I_COUNT_MAX;
    else if(I_count < -I_COUNT_MAX)
        I_count = - I_COUNT_MAX;
    I_data = MotorI * I_count;
    D_data = MotorD * (error[0] - error[1]);
    Motor_Output = P_data + I_data + D_data;  //计算输出

    if (Motor_Output > 60000)                //限幅,Motor_Output=10000时速度就很快了,所以限制在30000以下,避免反复启动时电流过大,对元件造成损伤
        Motor_Output = 60000;
    else if (Motor_Output < -60000)
        Motor_Output = -60000;
//    if(error[0]<0 && flag_podao==1) //坡道溜坡
//        Motor_Output=0;
    //更新误差
    error[1] = error[0];

}

舵机PD:

void Dir_PD()   //无平均
{ 
        
    static double error[2] = { 
        0};  //历史误差
    int angle;

    error[0] = -((double) MID - (double) mid_eve);
    error[0]=error[0]*4/MID;//相當於除以40,使大於80的經平方變大,小於80的更小

    if(flag_island)
    { 
        
        angle = (int) (Dir_mid + 210 * (error[0]) + 470 * (error[0] - error[1]));   //计算增量
    }
    else if((startline>=xiang+5))//(((Mid_H) > (xiang-20)))  //參考中綫的高度來確定用哪一套PD,即入彎靈敏度,||((flag_island!=0)&&(flag_island!=15)),||(flag_island) count_lst>=5 &&
    { 
        
//        if (abs(error[0]) >= 40) && flag_island!=1 && flag_island!=2 && flag_island!=12
        angle = (int) (Dir_mid + DirP_L * (error[0]) + DirD_L * (error[0] - error[1]));   //计算增量
//        else
//            angle = (int) (Dir_mid + DirP_L * 0.8 * (error[0]) + DirD_L * 0.9 * (error[0] - error[1]));   //计算增量
    }
    else
    { 
        
//        if (abs(error[0]) >= 40)
        angle = (int) (Dir_mid + DirP_S * (error[0]) + DirD_S * (error[0] - error[1]));   //计算增量
//        else
//            angle = (int) (Dir_mid + DirP_S * 0.8 

相关文章