上海大学xx队智能汽车竞赛技术报告Word文档格式.docx

上传人:b****5 文档编号:19228407 上传时间:2023-01-04 格式:DOCX 页数:21 大小:2.39MB
下载 相关 举报
上海大学xx队智能汽车竞赛技术报告Word文档格式.docx_第1页
第1页 / 共21页
上海大学xx队智能汽车竞赛技术报告Word文档格式.docx_第2页
第2页 / 共21页
上海大学xx队智能汽车竞赛技术报告Word文档格式.docx_第3页
第3页 / 共21页
上海大学xx队智能汽车竞赛技术报告Word文档格式.docx_第4页
第4页 / 共21页
上海大学xx队智能汽车竞赛技术报告Word文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

上海大学xx队智能汽车竞赛技术报告Word文档格式.docx

《上海大学xx队智能汽车竞赛技术报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《上海大学xx队智能汽车竞赛技术报告Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

上海大学xx队智能汽车竞赛技术报告Word文档格式.docx

6.3分段计时系统30

第7章总结与展望1

引言

飞思卡尔比赛已经举办了三届,从以往的比赛中可以看出,参赛车模水平提高迅速,比赛越发激烈,而比赛的侧重点也随着车速的提升而发生改变。

机械性能对车模的速度越发重要,同时对于摄像头的车模而言,必须保证在高速情况下图像的稳定性。

我校队伍曾在上一届比赛中获得摄像头组全国第五名,由于今年人员变动较大,所以没有延用去年的队名,而今年华东区分赛区比赛时的队名Freestyle为临时队名。

今年,我们为提高图像质量,做了大量的测试,包括更改数字摄像头的曝光时间,利用硬件二值化提高图像精度等等,但是这些技术大多数以失败而告终,未能使用在比赛车模中,因此我们最终的参赛车模的图像质量较去年而言,未能有本质性提高。

在机械调校方面,我们也做了大量测试,取得了一些成效。

本技术报告将主要介绍我们在去年车模上做出的改进以及一些测试情况,其中包括一些不成功的部分。

此外,本技术报告还会对去年S.U.L.挑战者队的技术报告中写得不明确的部分进行补充。

第1章车模的总体设计

1.1车模期望的目标

由第三届比赛可知,车模的图像是车模稳定性的关键,机械部分是速度的关键,优良的辅助调试系统是高效率调试的前提,而其它的控制、驱动、决策等部分在以上部分良好的前提下,则显得相对次要。

鉴于在第三届比赛中我校车模的表现,本次车模的制作目标应着重提升机械性能,并提高图像质量。

其它的部分则应尽量做得简洁、可靠。

1.2车模总体结构

车模整体效果如图2.1所示。

图2.1车模整体效果

 

第2章机械系统

车模的机械部分是影响其行驶性能最直接的部分,其重要性不言而喻。

一个不良的机械系统会增加控制的难度,会为车模的速度提升带来障碍。

因此,车模的机械性能应该是优先考虑的问题。

2.1摄像头的安装

大量事实证明,重心越低越好。

为降低重心,并同时保证图像视野宽度,最好的方法就是使用旋转摄像头。

第三届比赛中,摄像头-舵角连动机构在RacerX的车上取得了出人意料的成效,但也暴露出了一些机构固有的问题,其中包括:

机构虚位导致摄像头定位不准,摄像头在中位附件容易振荡。

因此需要对机构进行改良。

改良方法如下:

(1)增加自动回正机构,给旋转摄像头提供自动回正力矩,以减小机构虚位。

(2)给旋转摄像头机构调静平衡,减少车模在过弯过程中离心力对摄像头的影响。

(3)用滑槽代替原本中间的连杆球头,为旋转摄像头在中位附近制造一段死区,使车模在打小角度舵角时,摄像头不转,从而增加车模在直线和小S弯中的稳定性。

改良的机构三维图如图3.1所示。

图3.1改良摇头机构三维图

综上所述,这是一个带有死区及自动回正机构的旋转摄像头机构。

此外,在控制方面,可以设法检测出摄像头旋转的角度,并将其反馈的控制算法里。

检测摄像头角度的方法大致有以下两种:

(1)在车头划线做标记,用摄像头检测车头标记,来判断自己所转的角度。

(2)由于舵机S3010是模拟舵机,其中是用电位器来反馈舵角的,因此可以将此电位器的信号飞线引出来,用单片机内部AD进行采集。

3.2偏振镜的使用

由于追求更好的机械性能,我们把摄像头降低,达到降低重心的目的。

但是由此带来了反面的影响,那就是图像的形变以及受到跑道面反光的影响。

跑道上的黑线由于反光原因,摄像头检测的数据丢失黑线。

为了解决反光导致检测不到黑线的问题,我们利用了偏振镜。

偏振镜的作用其实是过滤掉某个角度的偏振光,实现检偏的作用。

当自然光经过跑道面以后,会产生偏振光,这反射的偏振光会影响到图像的采集。

通过在摄像头前面安装偏振镜片,并且调整偏振镜片的检偏角度,可以得到几乎无反光影响的图像。

如图3.2所示。

未加偏振镜前的效果加装偏振镜之后的效果

图3.2偏振片效果图

不过,使用偏振镜也会带来问题。

虽然偏振镜能把跑道的偏振光过滤掉,但同时把环境的自然光强度降为原来光强的二分之一,也就是说通过偏振镜之后光线变暗了。

在光线强度较大的时候不会有太大影响,但是如果环境光比较弱的时候,加了偏振镜会使摄像头感应的光线更弱,而大多数摄像头具有自动曝光功能,在光线昏暗时,摄像头会自动增加曝光时间,导致图像更容易模糊。

因此,使用偏振镜要合理权衡利与弊才能发挥偏振镜的作用。

2.2机械性能调校

尽管比赛规则对车架做了很大的限制,但车模的机械调校仍然会起着举足轻重的作用。

去年我决赛的跑道摩擦力极强,而我们的车模在转向时,由于悬挂调整不当,甚至出现了前轮跳动的现象,使得前轮的抓地力无法发挥出来,极大的限制了我们的成绩。

今年,我们主要对车模的悬挂做了较大的调整。

首先更换前避震弹簧,使用直径4mm线径0.3mm螺距2mm的弹簧作为前避震弹簧,使前悬挂大幅变软,以增加过弯时车头的侧倾量,同时调整前轮的camber角和caster角,保证车模在转向过程中,外侧的前轮与地面基本保持垂直。

由于这种调校下,车头的侧倾量较大,因此转向时外侧的前轮起主要作用,可以将前束脚调成0°

甚至是略有toein的状态,来增加车模的转向。

此外,由于本届比赛窄道标记前赛道上有一段突起,而较软的悬挂可以有效减少车模的颠簸,因此还可以减少后避震插片,使后悬挂也变软。

在悬挂的调整过程中,有一点需要注意,就是虚位问题。

由于国产车模的质量不好,在悬挂关节处有较大的间隙,使得悬挂变得不可靠,尤其是在改软前弹簧后,如果悬挂关节修整不好,会造成车体左右的不平衡。

因此需要利用强力胶对悬挂的间隙进行修补。

其中,前悬挂上A臂最好能做到无阻力无虚位。

第3章硬件电路系统

3.1电路总体结构

本次电路采用模块化设计思路,整个系统可分为图像采集模块、升压模块、驱动模块、单片机核心板模块、串口模块、SD卡模块。

总体硬件电路图如图4.1所示。

图4.1总体硬件电路图

3.2电源设计

众所周知单片机电源直接影响到单片机的稳定性,例如电源电压波动很容易会引起单片机复位、保护等等。

因此我们需要一个十分稳定的电源。

本次设计中,大量采用了MIC2930x系列的电源芯片。

MIC2930x系列的电源芯片是MICREL公司生产的大电流低压降的线性稳压芯片。

MIC2930x系列的芯片最大可以提供3安培电流,并且在全负载的情况下压降也仅仅是350毫伏。

在我们实际测试中,输入5.1伏电源电压,经过MIC29300稳压后实际输出4.94伏,经过测试完全适用于条件苛刻的情况下。

而且MIC29300芯片封装可以直接兼容广泛使用的LM2940、7805等电源芯片,使用起来相当方便。

另有MIC29301和MIC29302带有使能脚,其中MIC29301可以输出跌电信号,MIC29302输出电压可调。

这里,采用了MIC29300-5为单片机供电,采用MIC29302为舵机供电。

需要注意的是,MIC2930x的输出脚需要接一个10μF的电容,这个电容的性能与稳压的效果有较大关系,最好选用钽电容。

3.3图像采集模块

清晰稳定的图像是一切的基础,因此今年我们在摄像头选择和多种采集方案的测试上花了很多功夫。

3.3.1摄像头选择

由于CMOS摄像头重量轻,功耗低,因此依然十分有吸引力,所以我们对CMOS与CCD再次进行对比测试,测试用的CMOS摄像头为康美迪亚的1/3CMOS,下为CMOS摄像头与CCD摄像头的原始图像,可以看到CMOS图像中的噪点远远多于CCD的图像,如图4.2所示。

图4.2CCD与CMOS图像对比(左CCD,右CMOS)

并且,CMOS摄像头在拍摄运动图像时容易发生模糊,如图4.3所示。

图4.3CMOS摄像头动态模糊图

动态图像模糊主要是在光线较暗的环境下,为了保持图像亮度,摄像头自动将曝光时间增大所致。

要彻底避免图像模糊情况的出现,就要手动设置摄像头曝光时间,于是我们又测试了1/3数字摄像头OV7620,通过SCCB将摄像头设置到手动模式,手动修改其曝光时间。

自动曝光1/760曝光时间

图4.4曝光时间对比

从对比图(图4.4)可以看出减小曝光时间,也会带来一些负面影响比如相同光照环境下,图像会变暗、噪点会增多。

但这些缺陷可以通过图像处理克服。

3.3.2图像采集方案

今年我们测试了很多种采集方案,首先由于更换了主频更高的S12XS128,我们对其内部AD又进行了测试,结果很失望,尽管主频增高,最高精度从10BIT增加到了12BIT,但是AD的转换时间并没有多少改善,88MHZ主频下行像素在80左右。

之后我们又测试了外部二值化采集、数字摄像头采集、外部AD加LM1881采集、视频解码芯片采集。

其中视频解码芯片图像质量最好,并且有图像预处理电路,但由于实验电路还在测试阶段,本次比赛并没有启用,仍然延用了去年的外部AD采集方案。

3.4升压模块

我们的图像采集选用PAL制式CCD摄像头,摄像头需要12V供电。

车模能够稳定运行的前提是要有良好的图像采集能力,而图像采集能力一方面由摄像头工艺决定,一方由摄像头所工作的环境决定。

在选择了一个不错的摄像头后,我们需要给一个良好的环境,保证其能够采回高质量的图片。

排除车模运动过程种抖动对图像采集造成的影响后,一个稳定的供电系统对成像质量起着尤为重要的作用。

竞赛规则规定,车模只能使用组委会规定的7.2V电池供电,而车模系统中各个模块需要各种不同的供电规格(如5v、6v等)。

这种情况下,共电源及共地干扰将显得尤为严重,尤其是电机启动和制动过程将给整个系统的供电带来极大的波动,如果摄像头供电模块性能不佳,这种情况下摄像头将由于拉电现象而采集不到正确信息,进而造成车模无法正常运行。

所以要得到稳定的图像,一个很好的供电模块必不可少。

在比较和试用了多片芯片后,我们最终选用凌特公司的LT1070作为升压芯片,稳压部分仍采用以前的LM2940.

LT1070的以下特性决定了它对于我们的供电要求有良好的适应性:

1)大范围输入电压(3V-60V);

2)低静态电流(6mA);

3)内部5A转换;

4)输出电压范围可调;

5)简单的外部电路;

6)关闭模式仅拉50uA源电流;

7)过载保护;

8)标准五脚封装;

电路设计过程中,我们再电源输入端并上了100uf胆电容缓启动电路减小上电过程对电路冲击。

电路设计过程中应注意选用大电流电感,电路原理图如图4.5所示。

图4.5升压电路原理图

3.5单片机核心板模块

今年我们使用的是MC9S12XS128单片机,对原来的MC9S12DG128兼容性很好,程序移植很方便。

核心模块(如图4.6)我们也设计成与原核心模块管脚完全兼容。

同时去掉了复位开关增加了PE2PE3PE4PE5PE6五盏灯。

图4.6核心板图

3.6电机驱动模块

去年我们使用SI4430,模仿电子调速器制作了驱动电路,取得了不错的效果,但是对于能耗刹车的刹车能力始终存在争议,因此我们对能耗刹车和反压刹车做了对比测试。

参考第三届交大SpeedStar队的技术报告,我们使用BTS7970制作了驱动电路,其原理图如下。

该电路有一路PWM输入,两根IO线作为模式选择线,可以有正转、反转、能耗刹车三种工作模式。

图4.7驱动电路图

我们使用白骑士的驱动电路与上述电路(图4.7)进行对比测试,以下(图4.8)是车模的速度曲线,其中浅蓝色的线为给定速度,深蓝色的线为实际速度,纵坐标单位为毫米每秒,横坐标单位为帧(即40ms)。

BTS7970SI4430

图4.8两种驱动模块性能对比

比较以上速度曲线,两种驱动在加速能力上相差不大,而反压刹车的减速能力远高于能耗刹车。

因此,可以得出结论,对于比赛所提供的380电机而言,10豪欧左右内阻的驱动电路已经足以满足要求,反压刹车的效果是远好于能耗刹车的,而用BTS7970制作驱动电路是一个简单易行方案。

3.7SD卡

SD卡实时存储系统是我们去年率先提出和使用的辅助调试手段,极大的提高了调试效率,今年我们继续延用并对SD卡存储的速度和稳定性做了改进。

3.7.1SD卡读写稳定性改进

去年我们使用的MC9S12DG128,在设计之初主要考虑到SD卡为3.3V系统,而单片机为5V系统,之间需要逻辑电平转换,为此我们在设计SD卡电路时在单片机输入端加了三极管放大。

今年我们使用的MC9S12XS128可以支持3.135V到5.5V的宽电压供电,我们使用3.3V供电就可以实现与SD卡接口的直连,这样可以提高读写SD卡的稳定性。

在之后的调试中,我们又注意到S12与S12X系列单片机IO口有内置的上拉下拉电路,通过设置PullDeviceEnableRegister和PolaritySelectRegister寄存器可以选通,例如将PM2口设置为内部上拉,只要设置PERM_PERM2=1

PPSM_PPSM2=0。

经过测试,设置为内部上拉后3.3V到5V系统也可以直连,在3.3V的系统中设置MISO位的内部上拉,也可以提高在高速读写是准确性。

3.7.2SD卡存储速度优化

SD卡按速度等级大致分为普速和高速两种,普速的SD卡写速度最小有2MB/S以上,高速卡则可以达到10MB/秒或更高,不同公司同等价位的卡,实际的读写速度和稳定性也会不同。

理论上我们调试需要的速度极限为8KB/20ms也就是400KB/S,也就是说普通SD卡都应该可以满足我们的要求,但事实上SD存储速度不是恒定的,最大速度要视SPI的接口速率而定。

单片机端SPI口的速率取决于单片机的主频和SPI模块的分频系数,去年我们使用的S12主频为32MHZ,SPI分频为2,这样SPI接口的传输速率就为16Mbit/S也就是2MB/S。

今年我们换成主频更高的S12X,主频设到88MHZ,当SPI分频为2(44Mbit/S)时SD卡可以写入但写入数据有误,当分频为4(22Mbit/S)时,SD卡读写均稳定。

我们测试使用的是SanDiskultraII1GSD卡最高写入速度标称9MB/S,实测8MB+/S。

由此判断44Mbit/S已经超过S12XS128SPI接口速度极限。

写卡速度瓶颈还取决于代码效率,通过优化代码提高主频我们将原来写6KB数据的时间从22MS减小到了7MS。

提高代码效率可以通过减少循环跳转,提高主频,减少外部函数调用,或者用汇编语言编写。

第4章软件系统

图像处理算法已经控制算法较去年没有本质性改变,这里不再重复阐述,以下主要介绍图像识别的一些改良。

4.1黑三角识别

今年赛道特征中加入了窄道特征,在窄道的两端加入正黑三角和倒黑三角作为入窄道和出窄道的标志。

特征参数如图5.1所示:

图5.1窄道标志

在控制算法中对于弯道,在赛道范围内走捷径可有效的提高成绩。

引入窄道特征后,再走捷径,直接的后果将是违反比赛规则,被算做冲出赛道。

这时候就必须放弃走捷径的算法,而乖乖的沿线行走,而整个赛道中窄道只是一小部分,完全沿线必将造成其他路段上的时间浪费而影响比赛成绩。

所以做好的方法就是识别出入弯和出弯标志,入弯后走沿线算法,出弯后运行切线算法,既不违反比赛规则,又能走捷径提高比赛成绩。

图5.2黑三角识别示意

如图5.2所示从左至右分别为一幅带有正三角特征图像的原始图片、阈值分割后图片,和经过图像处理提取赛道特征后的图片。

图中可以看出我们的图像采集丢失了一些图像信息,而这些信息的丢失给黑三角的识别带来了一定的困难。

我们使用的片外AD逐点采集的方法占用了大量内存,为了节约内存和算法周期,我们图像处理采用了局部扫描的方法。

这种方法下,所采集到的黑三角信息更加的不完全,所以我们的黑三角识别不能仅仅依靠赛道提取的算法识别,而必须加入额外的识别方法。

我们所使用的思路是:

在从一幅图像中提取出赛道后,判断图像是否因丢失信息失真,在得出不失真信息部分满足黑三角条件后,对该特征部分在局部扫描基础上进行补全操作,再根据黑三角特征判断是正三角还是倒三角。

同时在程序中引入正三角和倒三角标志位和识别逻辑判断,在识别到正三角前部识别倒三角,减少外界干扰。

程序流程如图5.3所示。

图5.3黑三角识别程序框图

识别后效果如图5.4所示,左边为阈值分割后,过滤掉失真图片识别出的正三角,右边为倒三角。

识别具有一定精度,但仍有错误识别情况需要其他方法滤除。

图5.4正三角与倒三角识别示意图

4.2起跑线识别

上一届由于图像精度太低,在局部扫描图像处理提取赛道信息的基础上,识别起跑线,我们不得不是用复杂的算法才能实现。

大概思路为图像处理完后,在直道特征的基础上,扩到扫描范围,对一定范围内图像进行二次扫描。

在二次扫描的基础上,对于符合起跑线特征的行,再在该行一定范围的外围继续扩大范围逐层扫描,直道判断出该特征是否是起跑线为止。

算法繁琐,虽能有效滤除十字交叉的影响,但是受外界干扰大,造成起跑线识别率低,尤其是今年跑道外使用蓝色背景,更降低了起跑线识别精度。

今年在图像采集上,我们适当牺牲前瞻,提高图像采集精度。

图像精度提高后,在保留了一些去年识别方法的优点基础上,我们采用了更简单、有效的识别方法,一个很形象的名字叫做“四刀切方法”。

程序流程如图5.5所示:

图5.5起跑线识别程序框图

由于图像精度问题,失真的三角特征有时阈值分割后也与起跑线极其相似,这个问题可以根据起跑线特征滤除,下面以图像为例说明:

图5.6十字交叉

图5.6从左至右分别为十字交叉原始图像,阈值分割及阈值分割后赛道提取的图像。

图5.7起跑线

图5.7从左至右分别为起跑线原始图像,阈值分割及阈值分割后赛道提取的图像。

图5.8起跑线识别

图5.8为上两幅图片二次扫描和“四刀切”后识别效果。

图中可以看出,十字交叉被有效滤掉,而起跑线被识别并计算出车距离起跑线的位置。

第5章辅助调试系统

5.1串口调试系统

将单片机超频到一定频率,配合串口速率的设置,可以配出921600的串口速率。

在此速率下,数据传输会略有不稳定,并且需要对上位机的代码进行优化,否则无法发挥出该速率的优势。

为保持传输的稳定,我们采用了应答式的传输。

由电脑向单片机先发送指令,单片机收到后再向电脑发送图片,然后电脑接收。

对于上位机的代码,我们主要做了如下的优化:

(1)在C#程序中,原先我们使用serialPort控件的ReadBytes()方法来读取串口的数据。

ReadBytes()方法只能一位一位地读取数据,效率较低,因此此次我们该用Read()方法,直接读取串口缓存中的所有数据。

为了防止传输速率低于读取速率的情况,我们采用了分批读取的方法。

这里,利用了serialPort控件的BytesToRead属性,BytesToRead属性可以反映串口的接收缓冲区中数据的字节数,把所需要读的字节数、已经读到的字节数和缓冲区中的字节数三者进行比较,不难实现数据的分批读取。

(2)C#中本身对操作Bitmap对象提供了SetPixel()和GetPixel()方法,但是测试发现,SetPixel()和GetPixel()方法的效率较低,操作图片很慢。

为提高图片的操作速度,参见MSDN,可以将图片锁定后,获取BitmapData,然后通过指针操作图片。

这样可以讲图片的操作速度提升几个数量级。

示例代码如下:

privatevoidLockUnlockBitsExample(PaintEventArgse)

{

//Createanewbitmap.

Bitmapbmp=newBitmap("

c:

\\fakePhoto.jpg"

);

//Lockthebitmap'

sbits.

Rectanglerect=newRectangle(0,0,bmp.Width,bmp.Height);

System.Drawing.Imaging.BitmapDatabmpData=

bmp.LockBits(rect,System.Drawing.Imaging.ImageLockMode.ReadWrite,

bmp.PixelFormat);

//Gettheaddressofthefirstline.

IntPtrptr=bmpData.Scan0;

//Declareanarraytoholdthebytesofthebitmap.

intbytes=bmpData.Stride*bmp.Height;

byte[]rgbValues=newbyte[bytes];

//CopytheRGBvaluesintothearray.

System.Runtime.InteropServices.Marshal.Copy(ptr,rgbValues,0,bytes);

//Seteverythirdvalueto255.A24bppbitmapwilllookred.

for(intcounter=2;

counter<

rgbValues.Length;

counter+=3)

rgbValues[counter]=255;

//CopytheRGBvaluesbacktothebitmap

System.Runtime.InteropServices.Marshal.Copy(rgbValues,0,ptr,bytes);

//Unlockthebits.

bmp.UnlockBits(bmpData);

//Drawthemodifiedimage.

e.Graphics.DrawImage(bmp,0,150);

}

经过以上优化,在用串口传输140*40的图片时,上位机显示速率可以达到12fps。

5.2SD卡调试系统

去年,我们编写的SD卡上位机处理系统中,由一个程序将SD卡的信息解码出来,然后以图片组的形式存在文件夹中,并保存excel文件来记录速度、舵角等信息。

这样做主要是考虑到SD卡文件解码速度较慢,并且不确定解多少图片较为合适,因此以图片组的形式存储信息,以便日后再次分析。

分析发现,SD卡解码速度慢主要是受到了图片处理速度的限制。

如先前串口调试模块中所说,通过优化图片处理的代码,可以将图片处理的速度提升几个数量级,因此SD卡文件的解码速度得到了大幅提升。

原先解码2000张图片需要82秒,而现在只需1.5秒,因此存储图片组就变得多此一举,可以直接存储SD卡中的原始文件。

改进后的调试界面如6.1所示:

图6.1SD卡辅助调试界面

此界面下,可以直接绘制单片

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1