dsp课程设计无人驾驶车用激光标定螳螂防撞算法的仿真.docx
《dsp课程设计无人驾驶车用激光标定螳螂防撞算法的仿真.docx》由会员分享,可在线阅读,更多相关《dsp课程设计无人驾驶车用激光标定螳螂防撞算法的仿真.docx(26页珍藏版)》请在冰豆网上搜索。
dsp课程设计无人驾驶车用激光标定螳螂防撞算法的仿真
课程设计报告
课程设计名称:
DSP原理及应用
系别:
三系
学生姓名:
班级:
学号:
成绩:
指导教师:
开课时间:
2014-2015学年2学期
一、课程设计目的
本课程是为通信工程专业本科生开设的必修课,结合学生的专业方向的理论课程,充分发挥学生的主动性,使学生掌握应用MATLAB等仿真软件建立基于激光与可见光的无人驾驶车防撞系统,巩固理论课程内容,规范文档的建立,培养学生的创新能力,并能够运用其所学知识进行综合的设计,鼓励2人一组。
DSP的课程设计是对自适应DSP控制原理与应用等系统仿真软件、课程学习的综合检验,配合理论课的教学,让学生亲自参加设计、仿真、验证DSP系统的高级处理与控制原理、Applications等方面的关键知识点。
二、设计任务书
无人驾驶车用激光标定螳螂防撞算法的仿真
三、进度安排
Day1:
图书馆查阅资料,思考总体设计方案,熟悉软件的编程环境,推荐的参考资料有:
《MATLAB工程仿真》
《MATLAB/SIMULINK系统建模与仿真实例分析》
《TMS320C55xDSPLibraryProgrammer’sReference》
Day2:
总体设计方案的确定与设计
Day3:
各部分的具体实现
Day4:
程序调试并程序注释
Day5:
整理完成设计报告
四、具体要求及分工情况
要求:
a.熟悉Matlab的GUIDesign。
b.熟悉Matlab的Image边框Process
c.用手机与激光笔采集样板图序列
d.Simulate电子PTZ功能
e.用两点定位计算报告第三点的距离
f.如果时间多余再做如下试验箱互动
g.ConnectwiththeTIboardtomakewarningsound
h.UsermustbeabletocontrolthePTZ.
五、课程设计内容
在WINDOWS环境下,用MATLAB搭建图像处理软件,一位同学负责GUI的建设,一位同学负责后台算法的建立,用手机预先拍好的激光标定图片序列构建虚拟前进过程,并播报与障碍物的距离,类似螳螂三单眼三维超高速“DMA”算法。
1、引言
近年来,互联网技术的迅速发展给汽车工业带来了革命性变化的机会。
与此同时,汽车智能化技术正逐步得到广泛应用,这项技术使汽车的操作更简单,行驶安全性也更好,而其中最典型也是最热门的未来应用就是无人驾驶汽车。
也许这一趋势能使无人汽车比新能源汽车更早走入大众的生活。
公共领域示范运营的大环境下,首先选择微型电动车作为推广突破口,市场前景广阔,环保、节能效果快速、明显;在使用过程中,通过合理策略可进一步减低电动汽车的购置和使用成本,提高电动汽车竞争力;最后指出纯电动汽车的有效推广需要构建纯电动汽车友好性社会。
纯电动汽车的市场化势必为汽车行业的发展注入新的活力,为国家在低碳经济和后危机时代的经济战略布局取得先机。
无人驾驶,是指通过给车辆装备智能软件和多种感应设备,包括车载传感器、雷达、GPS以及摄像头等,实现车辆的自主安全驾驶,安全高效地到达目的地并达到完全消除交通事故的目标。
美国NHTSA(美国国家公路交通安全管理局)分5级定义汽车的自动化等级。
0级:
由驾驶员驾驶;1级:
具备1种以上自动化控制功能(如自适应巡航和车道保持系统ACC等);2级:
以汽车为主体执行多种操作功能;3级:
当以汽车为主体的驾驶行不通时可指示驾驶员切换为手动驾驶;4级:
完全可以无人驾驶。
如今,越来越多的企业开始涉足这块领域,将尖端的IT技术运用到汽车领域中,希望为消费者驾车出行带来更多美好体验。
麦肯锡预测,到2025年无人驾驶汽车可以产生2000亿~1.9万亿美元的产值;市场研究公司IHS预测,2035年4级完全无人驾驶车每年销量可达480万辆。
对任何一个行业而言,这都具有足够的市场诱惑。
2、基本原理
Matlab介绍
MATLAB是美国公司出品的商业,用于算法开发、数据可视化、数据分析以及的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。
是由美国公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将、、科学数据可视化以及非动态系统的和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、与通讯、、、设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的。
在新的版本中也加入了对C,FORTRAN,,JAVA的支持。
螳螂算法及单目测距原理
螳螂算法
在所有的动物当中,螳螂躲避攻击对象的反应速度最快,主要是因为螳螂不但有复眼还有单眼,当攻击对象的影像从复眼进入单眼时,单眼负责观察目标变大的速度,随时通知中枢神经逃避目标。
根据以上原理,我们选择了含有96个CPU与ARM处理器的芯片,96个CPU完成复眼的功能,ARM处理器完成单眼的功能。
视觉几何计算规避原理图如图1:
图1
复眼CPU提供径向畸变校正后的图像image(t)和image(t-1),单眼提供features(t-1),同时负责提取features(t),如果feature没有变化,则表示几何视觉距离不变,如果feature有变化,进行motion检测,进行三角几何计算,同时标定聚合最终位置。
计算机视觉的基本任务可以归结到测量、识别和重建。
为进行视觉计算,必须首先获得空间坐标系与图象坐标系之间的变换关系,即为摄象机建立适当的模型并求解其参数。
模型和参数的准确程度直接影响视觉计算的精度。
而视觉计算的鲁棒性和可靠性、对源数据及计算条件的误差的容忍度、计算的代价等,都对算法是否能在实际中应用有深刻的影响。
三维视觉三角几何计算原理图如图2
图2
阴影部分为电子眼的光学轴长(A),B表示障碍的大小与位置,A、B的大小可以根据需要用软件在飞行现场进行长、宽、高的幂比例关系校准与自标定。
当单眼在5帧图像里看到变化超过δ=10个像素,断定目标有变化,复眼的速度是每秒30帧,变化是用最小均方差的方法计算的。
计算公式如下:
常用的自动规避方法有雷达,超声波,红外线或激光。
每种方法都有他各自的优缺点。
雷达缺点是由于主动发射电磁波,容易暴露自身,成为对方反辐射导弹的目标,另外也容易被干扰,只要对方采取电子对抗措施,如使用电子干扰或发射干扰弹,就无法正常工作。
超声波测距的优点是比较耐脏污,即使传感器上有尘土,只要没有堵死就可以测量,可以在较差的环境中使用,所以倒车雷达多半使用超声波,缺点是精度较低,且成本较高。
红外测距的优点是便宜,易制,安全,缺点是精度低,距离近,方向性差。
激光测距的优点是精确,缺点是需要注意人体安全,且制做的难度较大,成本较高,而且光学系统需要保持干净,否则将影响测量。
所以我们决定选择普通可见光低照度感光传感器作为我们的测距方法。
不但可以测量距离还可以识别跟踪目标。
单目测距
车辆的安全系统是智能交通系统的重要组成部分,在危险预警系统、防撞系统等方面发挥着重要的作用,测距技术则是实现这一系统的关键部分。
目前,可用于汽车测距主要有超声波测距、毫米波雷达测距、激光测距和视觉测距这四类方式,除去只适合短距离测距的超声波方式,与少则几千,动辄上万的雷达或激光测距仪器相比,视觉测距在成本设备方面有很大的价格优势。
目前应用于智能车辆的视觉系统根据摄像机的多少一般分为两种:
采用多个摄像机的立体视觉系统及采用单个摄像机的单目视觉系统。
立体视觉虽然对于恢复深度信息及确定景物距离比较容易,测量精度高,但是计算速度较慢,成本较大,同时图像配准这一难题的存在缺大大限制了它的应用。
单目视觉系统的方法简洁快速,具有更快的图像处理速度和更好的控制实时性,也具有很好的研究和应用前景。
(1)反转透视测距模型
摄像机采集图像的过程是从三维欧拉空间到二维欧拉空间的几何变换过程。
考虑单目摄像机测距的几何变换过程,如果用I表示三维的现实空间而用W表示图像空间,则图像采集过程是从I到W的过程。
测距过程可以被视为这一过程的逆过程,如图1所示,车距测量可以认为是利用图像空间W={u,v}中的数据,在一定的先验条件下计算现实空间I={x,y,z}中的一个平面S={(x,y,o)∈W}上的数据过程。
获得了目标车辆底端在图像空间中的纵坐标u,还需要获得采集图像的条件和对于图像场景描述的假设。
如果包括试点及摄像机的位置,由摄像机在现实空间中的位置l,d,h表示;视图方向由摄像机中心轴与标准轴的夹角
和
来表示;摄像机的孔径张角2α;摄像机清晰度m×n。
以上参数值可通过测量或间接计算获得图3。
图3
m×n射线从摄像机到外界空间,获得图像空间中(u,v)点的射线在实际间中的角度由θ(u)和
(v)来确定。
其中u、v是I空间中的坐标,u=0,1,2,ΚΚ,m−1;v=0,1,2,ΚΚ,n−1。
另外,地面上一点P在S平面内到摄像机的地面距离
可以通过下一距离公式计算:
综合上述因素,得到前车距离的计算公式:
该模型利用射线角度的关系建立离图像空间I中的坐标值u,v与现实空间平面S={(x,y,o)∈W}的数据之间的关系。
因此,获得图像中车辆的像素坐标就可以计算出车辆在S平面中的实际位置图4。
图4
如果摄像机摄像中心轴与世界坐标系中的x轴平行,则
和
值均为0,计算过称亦可简化为:
(2)基于几何关系的投影模型和摄像机标定的测距算法
图像采集是将客观世界的三维场景投影到CCD摄像机(采集器)的二维像平面(CCD光敏矩阵表面)上,这个投影一般采用几何透视变换来描述,其依据小孔成像模型来描述此透视变换,如图5所示。
图5(a)CCD布置示意图(b)距离测量几何模型
其中,f为CCD摄像机的有效焦距;
α为CCD摄像机的俯仰角度;
h为CCD摄像机的安装高度(镜头中ixndao地面的高度);
(
)为光轴与像平面的焦点,作为像平面坐标系的原点,一般取为(0,0);
(x,y)为路面上一点P在像平面上的投影坐标(图3)。
在这里,点P就是检测出的前方车辆底部阴影的一点。
则根据几何关系得到点P与镜头中心的水平距离d的计算公式如下:
(3)基于逆投影变换的测距算法
约束条件:
(1)因高速公路坡度较小,故可假设高速公路坡度相同。
车道没有太大的弯道,在图像检测范围内,基本呈直道;
(2)拍摄位置固定,摄像头垂直于地面,拍摄角度不变。
在本模型中,车间距离需要通过摄像图像来得到,即从图像信息出发,解求三维环境汇总物体的空间位置、形状、面积、长度等几何信息,这就要建立物体点和像点之间的关系,需要建立适当的坐标系。
由这3个坐标系之间的三角形相似关系可以导出:
当焦距f一定时,实际空间中两车间距与图像前方车辆处的车道宽度的乘积为一常数。
距离远近的不同,前车在图中的成像大小也不一样,距离越远,成像越小,距离越近,成像越大,任意两次测量的距离值与成像大小成反比关系,即:
其中:
d'和d''分别为两次测量的距离(单位:
米),w'和w''为两
次测量图像中的车宽(单位:
像素)。
若已知像大小为W,则可根据D=d'×w'/W或D=d''×w''/W,求得此时的距离D。
从式中可知,d'×w'=d''×w''是个常量,记为测量系数q,这里,可以通过多次测量时记录的
和
和,求出
因此,距离公式可定义为:
D=qW。
式中:
D为所求距离(单位:
米);
W为图中车的宽度(单位:
像素);
q为测量系数。
3、GUIDesign
1、OpenaNewGUIintheGUIDELayoutEditor
1.StartGUIDEbytypingguideattheMATLABprompt
2.IntheGUIDEQuickStartdialogbox,selecttheBlankGUI(Default)template,andthenclickOK
3.DisplaythenamesoftheGUIcomponentsinthecomponentpalette:
a.SelectFile>Preferences>GUIDE.
b.SelectShownamesincomponentpalette.
c.ClickOK.
3、LayouttheSimpleGUIDEGUI
Add,align,andlabelthecomponentsintheGUI.
1.AddthethreepushbuttonstotheGUI.SelectthepushbuttontoolfromthecomponentpaletteattheleftsideoftheLayoutEditoranddragitintothelayoutarea.Createthreebuttons,positioningthemapproximatelyasshowninthefollowingfigure.
5、LabelthePushButtons
Eachofthethreepushbuttonsspecifiesaplottype:
surf,mesh,andcontour.Thistopicshowsyouhowtolabelthebuttons
withthoseoptions.
1.SelectView>PropertyInspector.
2.Inthelayoutarea,clickthetoppushbutton.
3.InthePropertyInspector,selecttheStringproperty,andthenreplacetheexistingvaluewiththewordStart.
4.ClickoutsidetheStringfield.ThepushbuttonlabelchangestoStart.
5.Clickeachoftheremainingpushbuttonsinturnandrepeatsteps3and4.Labelthemiddlepushbutton3M,theneatbutton2M,andthebottombutton1M.
6、SavetheGUILayout
WhenyousaveaGUI,GUIDEcreatestwofiles,aFIG-fileandacodefile.TheFIG-file,withextension.fig,isabinaryfilethatcontainsadescriptionofthelayout.Thecodefile,withextension.m,containsMATLABfunctionsthatcontroltheGUI
behavior.
1.SaveandactivateyourGUIbyselectingTools>Run.
2.GUIDEdisplaysadialogboxdisplaying:
"ActivatingwillsavechangestoyourfigurefileandMATLABcode.Doyouwishtocontinue?
ClickYes.
3.GUIDEopensaSaveAsdialogboxinyourcurrentfolderandpromptsyouforaFIG-filename.
4.Browsetoanyfolderforwhichyouhavewriteprivileges,andthenenterthefilenamesimple_guifortheFIG-file.GUIDEsavesboththeFIG-fileandthecodefileusingthisname.
5.IfthefolderinwhichyousavetheGUIisnotontheMATLABpath,GUIDEopensadialogbox,givingyoutheoptionofchangingthecurrentfoldertothefoldercontainingtheGUIfiles,oraddingthatfoldertothetoporbottomoftheMATLABpath.
4、实验代码
functionvarargout=untitled(varargin)
%UNTITLEDM-filefor
%UNTITLED,byitself,createsanewUNTITLEDorraisestheexisting
%singleton*.
%
%H=UNTITLEDreturnsthehandletoanewUNTITLEDorthehandleto
%theexistingsingleton*.
%
%UNTITLED('CALLBACK',hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinwiththegiveninputarguments.
%
%UNTITLED('Property','Value',...)createsanewUNTITLEDorraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforeuntitled_OpeningFunctiongetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtountitled_OpeningFcnviavarargin.
%
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone
%instancetorun(singleton)".
%
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Copyright2002-2003TheMathWorks,Inc.
%Edittheabovetexttomodifytheresponsetohelpuntitled
%LastModifiedbyGUIDE08-Jan-200215:
01:
51
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@untitled_OpeningFcn,...
'gui_OutputFcn',@untitled_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
%Endinitializationcode-DONOTEDIT
%---Executesjustbeforeuntitledismadevisible.
functionuntitled_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%varargincommandlineargumentstountitled(seeVARARGIN)
%Choosedefaultcommandlineoutputforuntitled
=hObject;
%Updatehandlesstructure
guidata(hObject,handles);
%UIWAITmakesuntitledwaitforuserresponse(seeUIRESUME)
%uiwait;
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=untitled_OutputFcn(hObject,event