三江学院三江摄像头2队智能汽车邀请赛技术报告Word文档下载推荐.docx
- 文档编号:16292034
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:38
- 大小:452.39KB
三江学院三江摄像头2队智能汽车邀请赛技术报告Word文档下载推荐.docx
《三江学院三江摄像头2队智能汽车邀请赛技术报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《三江学院三江摄像头2队智能汽车邀请赛技术报告Word文档下载推荐.docx(38页珍藏版)》请在冰豆网上搜索。
6.1软件调试平台CodeWarrior23
6.2CodeWarriorIDE基本使用方法24
第七章模型车的主要技术参数27
第八章结论28
参考文献29
附件A程序源代码30
第一章引言
1.1大赛背景和概况
“飞思卡尔”杯全国大学生智能汽车竞赛是由教育部高等学校自动化专业教学指导分委员会主办,飞思卡尔半导体公司协办的全国性的比赛。
与以往的专业竞赛不同,智能车大赛是以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科交叉的科技创新比赛,已经成为各高校展示科研成果和学生实践能力的重要途径,同时也为社会选拔优秀的创新人才提供了重要平台。
第三届“飞思卡尔”杯全国大学生智能汽车竞赛于2008年7月中旬举行分区比赛,8月上旬举行全国总决赛。
竞赛内容包括:
以飞思卡尔HCS12单片机为核心控制模块,以CCD或光电检测元件检测赛道引导线,引导改装后的模型汽车以最快的速度按照大赛组委会所设定的赛道行进,以赛车在最短时间跑完全程的队为优胜队。
该竞赛是涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科的科技创意性比赛,极具挑战性与竞争性。
该比赛已经列入教育部主办的全国大学生五大竞赛之一。
1.2智能车应用前景
智能车要实现在城市繁忙道路上完全无人驾驶,尚有很多研究工作要做。
但是通过这辆车来研究一些关键技术,并且把它们应用到实际工程中去,还是可行的。
譬如GPS在汽车定位、导航中的应用;
又如多种传感器信息处理,如果将二维图像与激光雷达的信息融合起来,可以得到更确切的道路或环境的信息;
传感器技术和自动驾驶技术可以实现汽车的自适应巡航,辅助人们把车开得又快又稳、安全可靠;
汽车夜间行驶时,如果装上红外摄像头,就能实现夜晚的汽车安全辅助驾驶;
在仓库、码头、工厂、机关、营房、住宅区或者危险、有毒、有害的工作环境里,自动驾驶或遥控驾驶技术有着广泛的应用前景,如无人值守的巡逻监视、设备的维护修理、物料的运输、消防灭火等等,有单位曾希望他们设计出遥控驾驶的消防车。
第二章赛车整体设计思路
2.1系统设计方案要求、目标
智能车竞赛所使用的车模是一款带有差速器的后轮驱动模型赛车,由大赛组委会统一提供。
通过设计基于Freescale公司开发的MC9S12DG128单片机的自动控制器控制模型车在封闭的跑道上自主循线运行。
自动控制器是以单片机MC9S12DG128为核心,配合有传感器,电机,舵机,电池及相应的驱动电路,它能够自主识别路径,控制模型车高速稳定运行在跑道上。
智能车竞赛要求参赛队伍设计一辆以组委会提供的车模为主体的可以在赛道上自主寻线的模型车,比赛成绩为单圈最好成绩。
设计自动控制器是制作智能车的核心环节。
可靠性是取得成绩的有力保障。
在提高车速的同时保证智能车的稳定性。
同时尽量简化电路设计,提高灵活性。
2.2系统硬件结构
按照预计的设计,我们设计出了系统结构图。
我们力求在最简的硬件系统上实现我们所要的效果,使得系统更高效。
在组委会提供的车模基础上,通过MC9S12DG128采样视频信号,获得图像数据。
然后根据图像数据,提取目标指引线。
图像采集模块主要有摄像头、S12的A/D模块、外围芯片LM1881和电路组成。
舵机模块主要控制智能车的转角。
驱动模块用于提供赛车的驱动,主要由MC33886芯片及其电路组成。
速度传感器模块由小型光电编码器和ect脉冲捕捉功能构成。
提供速度闭环控制。
硬件系统结构如图2.1所示。
图2.1硬件系统结构
2.3系统软件结构
有了系统硬件结构做后盾,通过软件算法给小车注入思想后就可以跑起来了。
系统的基本软件流程为:
首先,对各功能模块和控制参数进行初始化。
然后,通过图像采集模块获取前方赛道的图像数据,然后S12利用边缘检测方法从图像数据中提取赛道黑线,求得赛车与黑线位置的偏差,接着采对舵机进行反馈控制。
同时通过速度传感器模块获取赛车的速度。
根据检测到的速度,结合速度控制策略,对赛车速度不断进行适当调整,使赛车在符合比赛规则的前提下,沿赛道快速行驶。
系统的基本软件结构如图2.2所示。
图2.2软件流程图
第三章赛车机械部分设计
3.1车体结构设计
此次比赛选用的赛车车模采用1/10的仿真车模。
赛车机械结构只使用竞赛提供车模的底盘部分及转向和驱动部分。
控制采用前轮转向,后轮驱动方案。
软件程序和控制算法是要在一定的机械结构上才能充分发挥的。
所以机械部分不能小视。
在对车体的机械结构有了感性认识后,针对具体的设计方案来调整小车的机械结构。
3.1.1前轮倾角的调整
前轮是转向轮,它的安装位置由主销内倾、主销后倾、前轮外倾和前轮前束等4个项目决定,反映了转向轮、主销和前轴等三者在车架上的位置关系。
主销内倾是指主销装在前轴略向内倾斜的角度,它的作用是使前轮自动回正。
角度越大前轮自动回正的作用就越强烈,但转向时也越费力,轮胎磨损增大;
反之,角度越小前轮自动回正的作用就越弱。
主销后倾是指主销装在前轴,上端略向后倾斜的角度。
它使车辆转弯时产生的离心力所形成的力矩方向与车轮偏转方向相反,迫使车轮偏转后自动恢复到原来的中间位置上。
由此,主销后倾角越大,车速越高,前轮稳定性也愈好。
主销内倾和主销后倾都有使汽车转向自动回正,保持直线行驶的功能。
不同之处是主销内倾的回正与车速无关,主销后倾的回正与车速有关,因此高速时后倾的回正作用大,低速时内倾的回正作用大。
前轮外倾角对汽车的转弯性能有直接影响,它的作用是提高前轮的转向安全性和转向操纵的轻便性。
前轮外倾角俗称“外八字”,如果车轮垂直地面一旦满载就易产生变形,可能引起车轮上部向内倾侧,导致车轮联接件损坏。
所谓前束是指两轮之间的后距离数值与前距离数值之差,也指前轮中心线与纵向中心线的夹角。
前轮前束的作用是保证汽车的行驶性能,减少轮胎的磨损。
前轮在滚动时,其惯性力会自然将轮胎向内偏斜,如果前束适当,轮胎滚动时的偏斜方向就会抵消,轮胎内外侧磨损的现象会减少。
3.1.2后轮差速机构调整
当赛车在正常过弯时(假设无转向不足亦无转向过度),4个轮子的转速皆不相同,依序为:
外侧前轮>外侧后轮>内侧前轮>内侧后轮。
此次所使用车模配备的是后轮差速机构。
差速器的特性是:
阻力越大的一侧,驱动齿轮的转速越低;
而阻力越小的一侧,驱动齿轮的转速越高。
以此次使用的后轮差速器为例,在过弯时,因外侧后轮轮胎所遇的阻力较小,轮速便较高;
而内侧后轮轮胎所遇的阻力较大,轮速便较低。
差速器的调整中要注意滚珠轮盘间的间隙,过松过紧都会使差速器性能降低,转弯时阻力小的车轮会打滑,从而影响车模的过弯性能。
好的差速机构,应该在电机不转的情况下,右轮向前转过的角度与左轮向后转过的角度近似相等,不会有迟滞或者过转动的情况发生。
调整的原则是:
两传动齿轮轴保持平行,齿轮间的配合间隙要合适,过松容易打坏齿轮,过紧又会增加传动阻力,白白浪费动力;
传动部分要轻松、顺畅,容易转动,不能有卡住或迟滞现象。
电机转动时抓住其中的一只轮子,另一只依然能稍稍转动为佳。
3.1.3舵机的安装方式
舵机转向是整个控制系统中延迟较大的一个环节,为了减小此时间常数,通过改变舵机的安装位置,而并非改变舵机本身结构的方法可以提高舵机的响应速度。
分析舵机控制转向轮转向的原理可以发现,在相同的舵机转向条件下,转向连杆在舵机一端的连接点离舵机轴心距离越远,转向轮转向变化越快。
这相当于增大力臂长度,提高线速度。
针对上述特性,将舵机安装做了相关的改动(如图3.1)。
这样安装的优点是:
1)改变了舵机的力臂,使转向更灵敏2)舵机安装在了正中央,使左右转向基本一致3)舵机转角更稳定。
图3.1舵机安装方式
3.1.4摄像头的固定
摄像头的安装位置应合适选取。
安装位置太低,会导致视域不够广阔,影响寻线的有效范围;
安装位置太高,导引线会变得过窄而无法被检测到,而且
赛车系统会因重心抬高而稳定性变差。
摄像头的固定难度较大,摄像头架设的高度较高,要求材料要轻,所占空间小,刚度大,与车模地板连接牢固,摄像头角度可调。
摄像头安装必须居中,最好做到可调。
摄像头不会过分影响模型车的重心,模型车的总体重心还应该靠后。
摄像头角度要在不影响视野的前提下,尽量靠近垂直方向。
因为这样可以尽量减小最远点与最近点之间的变形差距,
考虑到摄像头的可调性,将摄像头支架分为底座和立杆。
这样可调性增加,更加灵活。
摄像头安装如下图3.2所示。
图3.2摄像头安装方式
3.2测速模块设计与安装
为了使得赛车能够平稳地沿着赛道运行,需要控制车速,使赛车在急转弯时速度不至过快而冲出赛道。
通过控制驱动电机上的平均电压可以控制车速,但是如果开环控制电机转速,会受很多因素影响,例如电池电压、电机传动摩擦力、道路摩擦力和前轮转向角度等。
这些因素会造成赛车运行不稳定。
通过速度检测,对车模速度进行闭环反馈控制,即可消除上述各种因素的影响,使得车模运行得更稳定。
车速检测的方式有很多种,例如用测速发电机、转角编码盘、透射式光电检测和霍尔传感器检测。
经过对去年测速方案和其它学校方案的比较,本次设计中速度传感器采用的是OMRON公司生产的E6A2-CS3C型光电编码器。
它由5-12V的直流供电,安装方式如图3.3所示。
速度传感器用螺钉固定在塑料片上,塑料片固定在后轮支架上,这样固定好之后,就有了较高的稳定性。
光电编码器上的齿轮是由于原先是没有的,所以是在经过计算后订做的。
速度传感器通过后轮轴上的齿轮与电机相连。
如图3.3光电编码器安装位置
3.3主板的安装
设计时,考虑到底盘已有孔洞及车体上的支架位置,在制PCB板时就留好洞孔。
将电路板支起一定高度,应高于减震弹簧以免发生短路。
将支柱固定牢,因为在小车的长久跑动过程中由于撞击等因素很有可能会松动。
应经常检查,防范发生短路等故障。
日常接触的时候也应保护主板,防止器件被碰掉。
还有就是容易触碰到的元件在做板时就应当注意将其转移。
安装的过程主要考虑其稳定性。
第四章系统硬件电路设计
4.1S12微控制器的组成
MC9S12DG128微控制器采用增强型16位S12CPU,片内总线是时钟频率最高可达25MHz,片内资源包括128KB的Flash存储器、8KB的RAM、2KB的EEPROM;
两个异步串行通信接口、两个串行外围接口、一组8通道的输入捕捉或输出捕捉的增强型捕捉定时器、两组8通道10路模数转换器、一组8通道脉宽调制模块、一个字节数据链路控制器、29路独立的数字I/O接口、20路带中断和唤醒功能的数字I/O接口、5个增强型CAN总线接口,并支持背景调试模式(BDM)。
4.2电机驱动电路模块
33886作为一个单片电路H-桥,是理想的功率分流直流马达和双向推力电磁铁控制器.它的集成电路包含内部逻辑控制,电荷泵,门控驱动,及低读选通(on)金属-氧化物半导体场效应晶体管输出电路.33886能够控制连续感应直流负载上升到5.0安培,输出负载脉宽调制(PWM-ed)的频率可达10kHz一个故障状态输出可以报告欠压,短路,过热的情况.两路独立输入控制两个半桥的推拉输出电路的输出.两个无效输入使H-桥产生三态输出(呈现高阻抗).33886制定的参数范围是-40°
C≤TA≤125°
C、5.0V≤V+≤28V。
集成电路也可以工作在40V通过降低规定的定额值。
集成电路能够在表面安装带散热装置的电源组件.
图4.1C33886的一个简单应用电路
图4.1MC33886典型应用电路
在使用MC33886时,采用两片并联使用,提高RS380SH的功率,提得提速更快。
这样做有两个优点,其一是提高电机的输入电流,增大电机的实际功率,使电机能在不增加动力源的情况下,性能大幅度提高;
其二是减小单片MC33886的功耗,MC33886发热现象比较严重,上面须加上一定面积的散热片来缓和一下,在这里用两片MC33886来为同一个电机供能,可以有效地减小单片MC33886的功耗,发热现象也可以得到部分缓解。
电路设计如图4.2。
MC3386发热问题比较突出,特别是其正反转较为频繁的时候。
在使用时在其上面加装散热片,以增大其散热面积。
图4.2C33886驱动电路
4.3图像处理模块
摄像头的信号经过LM1881视频分离芯片分离出行信号和场信号,场信号代表一个图像开始标志,行信号是DG128进行AD采集标志。
LM1881(如图4.3)是针对电视信号的视频同步分离芯片,它可以直接对电视信号进行同步分离,准确地获得所需的视频图像信号,使用者可根据需要对该同步信号进行时序逻辑控制.
图4.3LM1881应用原理图
视频信号中除了包含图像信号之外,还包括了行同步信号、行消隐信号、场同步信号、场消隐信号以及槽脉冲信号、前均衡脉冲、后均衡脉冲等,因此,若要对视频信号进行采集,就必须准确地把握各种信号问的逻辑关系。
LM1881就是针对视频信号的同步分离而生产的,LM1881可以从0.5~2V的标准负极性NTSC制、PAL制、SECAM制视频信号中提取复合同步、场同步、奇偶场识别等信号,这些信号都是图像数字采集所需要的同步信号,由此便确定采集点在哪一场,哪一行。
这几种重要的输出信号的时序参看图(4.4)。
图4.4输出信号时序
LM1881将视频信号中的行同步脉冲、消隐脉冲和场同步脉冲提取出来,并将它们转换成数字信号交给单片机的I/O口。
最后整个采样电路如图4.5所示。
图4.5摄像头采样电路
4.4电源模块
电源管理在整个电路中起着举足轻重的作用,电源芯片选择的好坏直接影响系统能否正常工作。
它不仅为单片机提供工作电压,而且为各个控制芯片提供工作电压。
因此,电源管理芯片的好坏直接影响系统的稳定性。
但由于电机带负荷的大电流特性,直接影响供电电源的质量,进而影响整个系统。
从整个系统稳定可靠的角度出发,我们选择了一款低压差芯片TPS7350,该芯片最具特色的优点是当输出电流为100mA时,最大压差只有35mV,只需很少的外围器件就能满足应用要求。
此外,充分使用该芯片的复位功能,减少了芯片的使用量,提高了系统的稳定性。
电源模块主要包括单片机电源模块、舵机电源模块、摄像头电源模块。
图4.6所示是电源管理电路的框图。
图4.6电源管理框图
图4.7所示是使用TPS7350为整个智能车系统提供+5V的工作电压的原理图。
图4.7+5V工作电压原理图
图4.8所示是使用TPS7350为整个智能车系统提供+6V的工作电压的原理图。
图4.8+6V工作电压原理图
第五章软件设计方案
5.1图像采集和数据处理
视频信号经过LM1881同步分离,行同步信号接到S12的ECT通道2是上,利用定时器中断对行同步引发的外部中断进行处理;
场同步信号接到是S12的T口上。
当场信号发生跳变时,对行信号计数器清零。
在行中断服务函数中,每来一个行同步则行计数器加1,当行计数等于所需采样行时,开始对此行信号进行AD转换,直到下一个行同步信号到来。
行中断服务函数的流程图如下图5.1所示。
图5.1行中断服务函数的流程图
经过实验发现在S12超频在32Hz的情况下,视频信号一行最多能采样到63个点,已经满足跑道的识别精度。
在行数的选择上考虑到对起始线的识别,我们提取了15行。
图像的采样效果如下:
图5.2采样数据
从图5.2可以看出黑色的值大概在1B左右,而白色大概在38左右;
黑白颜色的值差别比较明显。
黑线提取我们采用边缘检测(灰度的跳变),具体的算法思路是:
设定一个阀值(白线与黑线值的差),对每一行从左往右相邻两像素值做差(左减右),如果所得的差值大于所设定的阀值,则判定其右的相素点为黑色指引线的左边缘,记录下该相素点的横坐标。
如果始终没有检测到大于阀值的情况,则该行的黑色指引的横坐标保持上一场时值。
虽然采用了边缘检测提取黑线,但由于赛道缝隙或其他黑色像点的干扰,会导致某些行的黑线位置发生跳变,为了解决这个问题,增强提取黑线的可靠性,采用了中值滤波对前面获取的黑线位置进行处理。
中值滤波的思想是:
对于某行的黑线位置,如果它的位置正好在前后两行的中间,则保留原有位置;
否则,以这三行中黑线位置居中的代替该行黑线位置。
5.2速度控制
5.2.1速度传感器模块
速度检测我们采用了光电编码器,通过检测一段时间内采集的脉冲数,来达到检测速度的变化。
将光电编码器的脉冲输出引脚接到ECT通道2。
5.2.2速度检测的初始化及速度获取
通过一段时间内对脉冲数的检测,采用模数计数器向下溢出中断,每20ms采样一次光电编码器输出的脉冲数并同时产生一次中断。
因为电编码器是200个脉冲每转,采用了16位计数器,才能达到不会产生计数器益处的情况。
其初使化如下:
MCFLG_MCZF=1;
MCCTL_MODMC=1;
//循环计数方式
MCCTL_MCZI=1;
MCCTL_MCEN=1;
//模数计数器使能
MCCTL_MCPR=3;
//设置16分频
MCCNT=40000;
//设置中断时间20ms
MCCTL_FLMC=1;
TIOS_IOS0=0;
//设置PT0输入捕捉
TCTL4=0x12;
PBCTL_PBEN=1;
每次通过对PACN10值的读取,就可以知道速度的变化情况。
5.2.3速度的控制
对速度控制我们采用了bang-bang,让电机稳定在一定的速度下,实际调试时速度的控制效果不错,电机的响应速度很快。
为可提高整体的速度,在直道尽力的加快速度,但会带来入弯的时候会冲出的情况,为此我们采用了反向制动,把速度瞬速降低在一个很低的速度,能够顺利的入弯。
具体的算法流程图如下:
图5.3算法流程图
5.3舵机转向控制
根据实际测试,确定了舵机的摆到中心位置时所对应的PWM值steer_center,及左右转向极限所对应的PWM值steer_left和steer_right。
舵机转向采用了P控制,根据跑道的曲率变化情况,分别设置不同的P值。
首先确定舵机摆到中心位置steer_center时,黑线的的位置car_center。
然后根据不同的跑道情况采用PWMDTY01=steer_center+w2*P这个公式进行控制,其w2是所采样到的黑线位置和car_center的差值,P值则根据黑线的曲率变化而设定。
对于S道的处理有两种方法:
一是把S道和别的跑道区别开来,然后一遇到S道就直接过去,或是尽量在很小摆动的情况下通过S道。
第一种方法,我们发现S道不能完全的和别的跑道区别开来,所以就放弃这种方法而选择第二种,通过减小P值来尽量减小在S倒的摆幅,效果比较不错。
5.4起始线的识别
根据今年的比赛规则,在跑完两圈后赛车需要自动停止在起始线之后三米的赛道内。
因此,我们针对起始线提出了识别和处理的方法。
要在三米内自动停止,首先要正确的识别起始线。
起始线的识别有两中方法:
一是在车体前增加红外管;
二是直接用摄像头识别。
第一种方法要增加较多的红外进行识别,而且实际调试的时候发现其错误识别的概率较高。
第二种方法通过对黑线边缘(上升沿和下降沿的)的统计,来判断是否拍到起始线。
通过不断的调试,起始线的识别正确率很高。
当小车在靠近起始线的过程中,由于起始线的采样频率比较高,会连续几场都看到起始线,这样会使得小车一看到起始线就停止。
为了防止这种情况的发生我们采用了积分滤波的方法,通过和原始数据比较达到正确识别起始线,具体算法实现如下:
图5.4起始线算法流程图
第六章赛车调试
6.1软件调试平台CodeWarrior
CodeWarrior是由Metrowerks公司提供的专门面向Freescale所有MCU与DSP嵌入式应用开发的软件工具。
其中包括集成开发环境IDE、处理器专家、全芯片仿真、可视化参数显示工具、项目工程管理、C交叉编译器、汇编器、链接器以及调试器。
CodeWarrior不仅支持汇编语言,而且支持C、C++和Java高级语言。
CodeWarriorIDE支持深入的C语言和汇编语言调试:
启动/停止、单步、设置跟踪触发器、校验/修改存储器和C变量、结构与阵列,以及执行其他仿真功能。
其中在本设计方案中最为重要的部分就是集成开发环境IDE以及调试器。
仿真调试窗口如图6.1所示。
CodeWarrior4.6可以很好方便的完成MCS12DG128B单击的新工程的建立,程序的编写、下载和调试。
通过BDM头不仅可以烧写程序,还可以在程序运行时实时查看各参数的值。
图6.1仿真调试窗口
6.2CodeWarriorIDE基本使用方法
Ⅰ运行“开始菜单—>
所有程序—>
MetrowerksCodeWarrior—>
CW12V3.1—>
CodeWarriorIDE”,选择“File—>
New”。
此后选择MC9S12DG128B,按照提示选取期望的选项。
直至建立工程文件。
如下:
图6.2建立软件环境过程
Ⅱ打开Start12.c文件,找到代码
#ifdef_HCS12_SERIALMON
#define___INITRM(*(volatileunsignedchar*)0x0010)
#define___INITRG(*(volatileunsignedchar*)0x0011)
#define___INITEE(*(volatileunsignedchar*)0x0012)
#endif
修改成:
//#ifdef_HCS12_SERIALMON
//#endif
之所以要进行这个步骤是因为,初始化代码是认为程序中有监控程序的,但是因为我们是使用的bdm调试工具,所以就不需要监控程序了。
如果不注释掉这两条语句,一旦将程序烧写到片内的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 三江 学院 摄像头 智能 汽车 邀请赛 技术 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)