1、学生毕业设计(论文)课题名称基于GT2440的智能循迹小车的研究与设计姓名学号100640256学院信息科学与工程学院专业计算机科学与技术指导教师讲师2014年5月28日2014届学生毕业设计论文材料(四)湖南城市学院本科毕业设计(论文)诚信声明本人郑重声明所呈交的本科毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。本科毕业设计(论文)作者签名二一四年
2、三月十五日I目录摘要1关键词1ABSTRACT2KEYWORDS21绪论311循迹控制发展现状和趋势312课题研究的意义32智能循迹的技术背景521图像预处理算法522设备驱动523ARM简介63嵌入式LINUX开发平台的搭建731OPENCV在GT2440上的移植7311、GT2440开发平台搭建7312、移植OPENCV所需的资源包汇总8313、安装交叉编译器9314、交叉编译OPENCV所需库94智能循迹实现1341二值化1342边缘检测1443路径提取165电机控制设计1851电机驱动18II511电机驱动电路18512驱动的编译加载18513直流电机驱动196模块联合测试与总结21参
3、考文献22致谢231基于GT2440的智能循迹小车的研究与设计摘要本文是基于GT2440的智能寻迹小车,通过摄像头采集视频数据,OPENCV算法处理,将视频帧里的轨迹路径提取出来,实时的传入相关控制程序,控制电机的转向来寻迹,从而达到智能控制小车的目的。随着时代的进步,科技的发展,工业生产正在向着自动化,智能化的阶段进步以及对人性化的要求,对各种智能机器人的要求也越来越高。智能循迹小车技术可以应用于无人驾驶机动车,无人工厂、仓库、服务机器人、未知路线探测和人类不能存在或长期存在等环境中;通过功能扩展,小车具有在复杂地形条件下矿藏探测的功能。循迹小车的研究重点是对轨迹的自动识别与自动校正,并在行
4、进稳定的情况下进行其他拓展功能,这对整个小车系统有很高的要求。关键词智能循迹;OPENCV;电机2BASEDONTHERESEARCHOFINTELLIGENTTRACKINGGT2440CARANDDESIGNABSTRACTTHISTHESISISBASEDONGT2440DEVELOPMENTBOARDWHICHISTHEMOTHERBOARDOFTHEINTELLIGENTTRACINGCAR,ANDTHEVIDEODATAISGATHEREDTHROUGHTHECAMERA,OPENCVALGORITHMPROCESSING,PICKINGUPTHETRAJECTORYPATHINT
5、HEVIDEOFRAMES,THEINTRODUCTIONOFREALTIMERELEVANTCONTROLPROGRAM,TURNTOTRACINGCONTROLMOTOR,SOASTOACHIEVETHEAIMOFTHEINTELLIGENTCONTROLOFTHECARWITHTHEDEVELOPMENTOFSCIENCEANDTECHNOLOGY,INDUSTRIALPRODUCTIONBECOMESAUTOMATION,INTELLIGENTSTAGEANDTHEREQUIREMENTOFHUMANPROGRESS,ITISCRUCIALTOTHEREQUIREMENTOFALLKI
6、NDSOFINTELLIGENTROBOTSINTELLIGENTTRACKINGCARTECHNOLOGYCANBEAPPLIEDTOTHEUNMANNEDVEHICLE,UNMANNEDFACTORY,WAREHOUSE,SERVICEROBOT,HUMANBEINGSCANNOTEXISTORUNKNOWNLINEDETECTIONANDLONGSTANDINGENVIRONMENTTHROUGHFUNCTIONEXPANSION,THECARHASTHEFUNCTIONOFMINEDETECTIONINCOMPLEXTERRAINTHEPOINTONTRACKINGTHECARISAU
7、TOMATICIDENTIFICATIONANDAUTOMATICCORRECTIONOFTRAJECTORY,ANDOTHERDEVELOPMENTSUNDERTHECONDITIONOFTHESTEADYMARCHINGFUNCTION,WHICHHASAHIGHREQUIREMENTONTHEWHOLESYSTEMOFTHECARKEYWORDSINTELLIGENTTRACKING;OPENCV;ELECTRICALMACHINE31绪论11循迹控制发展现状和趋势目前,在企业生产技术不断提高、对自动化技术要求不断加深的环境下,智能车辆以及在智能车辆基础上开发出来的产品已成为自动化物流运
8、输、柔性生产组织等系统的关键设备。世界上许多国家都在积极进行智能车辆的研究和开发设计。移动机器人是机器人学中的一个重要分支,出现于20世纪06年代。当时斯坦福研究院SRI的NILSNILSSEN和CHARLESROSEN等人,在1966年至1972年中研制出了取名SHAKEY的自主式移动机器人,目的是将人工智能技术应用在复杂环境下,完成机器人系统的自主推理、规划和控制。从此,移动机器人从无到有,数量不断增多,智能车辆作为移动机器人的一个重要分支也得到越来越多的关注智能小车,是一个集环境感知、规划决策,自动行驶等功能于一体的综合系统,它集中地运用了计算机、传感、信息、通信、导航及白动控制等技术,
9、是典型的高新技术综合体。随着时代的进步,科技的发展,工业生产正在向着自动化,智能化的阶段进步以及对人性化的要求,对各种智能机器人的要求也越来越高智能循迹小车技术可以应用于无人驾驶机动车,无人工厂、仓库、服务机器人、未知路线探测和人类不能存在或长期存在等环境中通过功能扩展,小车具有在复杂地形条件下矿藏探测的功能。12课题研究的意义本课题研究的是基于GT2440的智能循迹小车的研究,本课题的意义在于智能化的阶段进步以及对人性化的要求,对各种智能机器人的要求也越来越高。智能循迹小车技术可以应用于考古、机器人、医疗器械等许多方面。尤其是在足球机器人研究方面具有很好的发展前景。无人驾驶机动车,无人工厂、
10、仓库、服务机器人、未知路线探测和人类不能存在或长期存在等环境中;通过功能扩展,小车具有在复杂地形条件下矿藏探测的功能。413课题研究的主要工作本课题的主要工作如下(1)OPENCV在GT2440上的移植;(2)进行路径识别;(3)通过GPIO口驱动编程控制小车电机转动。52智能循迹的技术背景OPENCV于1999年由INTEL建立,如今由WILLOWGARAGE提供支持。OPENCV是一个基于1(开源)发行的跨平台计算机视觉库,可以运行在LINUX、WINDOWS和MACOS操作系统上。它轻量级而且高效由一系列C函数和少量C类构成,同时提供了PYTHON、RUBY、MATLAB等语言的接口,实
11、现了图像处理和计算机视觉方面的很多通用算法。2最新版本是247。OPENCV拥有包括500多个C函数的跨平台的中、高层API。它不依赖于其它的外部库尽管也可以使用某些外部库。OPENCV为INTELINTEGRATEDPERFORMANCEPRIMITIVESIPP提供了透明接口。这意味着如果有为特定处理器优化的的IPP库,OPENCV将在运行时自动加载这些库。21图像预处理算法(1)膨胀腐蚀算法腐蚀和膨胀是最基本的形态学运算。腐蚀是消除物体图像无用点的一种过程,其结果是使剩下的物体沿周边比处理前小几个像素的面积,能有效地去除二值图像中小且无意义的图像元素集合,可应用于二值图的去噪处理;膨胀是
12、将与物体接触的所有点合并到该物体的过程,其结果是使物体的面积增大了相应数量的像素点,能有效地填补分割后物体中的空洞及合并相隔较少像素的两个区域。本文中先后多次应用腐蚀、膨胀算法对待测图像进行预处理并取得了较好的效果。(2)边缘检测算法函数CVCANNY采用CANNY算法发现输入图像的边缘而且在输出图像中标识这些边缘。THRESHOLD1和THRESHOLD2当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。22设备驱动设备驱动程序是介于硬件和LINUX内核之间的软件接口,是一种低级的、专6用于某一硬件的软件组件。LINUX有两种方式使用设备驱动程序直接编泽到内核中在运行时加载也就
13、是内核模块。LINUX下的设备驱动程序7是一些用于完成不同任务的函数的集合,通过这些函数使得LINUX下的设备犹如普通文件一般。因此对于应用程序来说设备只是一个普通的文件,应用程序可以像操作普通文件一样对硬件设备进行打开、关闭、读、写、IO控制等操作。23ARM简介ARMADVANCEDRISCMACHINES,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权P核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线
14、系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。73嵌入式LINUX开发平台的搭建本章详述了嵌入式LINUX开发平台的搭建,包括内核移植,根文件系统制作等。主要是为本系统开发搭建软件平台,对于嵌入式项目开发这是尤为关键的一步,需要充分考虑到后续应用程序设计开发中需要使用的资源。例如,本设计在内核版本的选择上,即充分考虑到对USB摄像头的驱动支持。31OPENCV在GT2440上的移植311GT2440开发平台搭建XSHELL软件在WINDOWS系统下安装后,新建会话是将设置如下A会话基本属性设置B串口
15、设置8图31XSHELL会话设置会话设置成功后,链接串口线,并将串口设置为与目标板相同的波特率115200。开启目标板电源就可以对GT2440目标板进行操作,如下图所示图32XSHELL连接GT2440312移植OPENCV所需的资源包汇总JPEGSRCV6BTARGZ(JPEG函数库)LIBPNG1218TARGZ(PNG函数库)ZLIB123TARGZ(Z函数库)X264SNAPSHOT201004102245TARBZ2(X264函数库)YASM072TARGZ(汇编编译器,编译X264时需要用到)XVIDCORE132TARGZ(XVID函数库)FFMPEG053TARBZ2(FFMP
16、EG源码包)OPENCV200TARBZ2(OPENCV源码包)ARMLINUXGCC432TGZ(交叉编译工具链)9说明1以上资源包中FFMPEG是为了OPENCV能够处理视频,而FFMPEG依赖于X264和XVID两个库,而交叉编译LIBX264时需要用到汇编编译器YASM。313安装交叉编译器TARZVXFARMLINUXGCC432TGZC/ROOT/添加环境变量VIM/ETC/ENVIRONMENT在路径中添加/ROOT/ARM/432/BIN刷新环境变量SOURCE/ETC/ENVIROMENT314交叉编译OPENCV所需库TARZVXFZLIB123TARGZCDZLIB123
17、CCARMLINUXGCC/CONFIGUREPREFIX/ROOT/ARM/432/ARMNONELINUXGNUEABISHAREDMAKEMAKEINSTALL交叉编译LIBJPEGTARZVXFJPEGSRCV6BTARGZCDJPEG6B/CONFIGUREPREFIX/ROOT/ARM/432/ARMNONELINUXGNUEABIENABLESHAREDENABLESTATIC修改生成的MAKEFILE文件CCGCC改为CCARMLINUXGCCARARRC改为ARARMLINUXARRCAR2RANLIB改为AR2ARMLINUXRANLIBMAKE10需在/ROOT/ARM/
18、432/ARMNONELINUXGNUEABI目录下创建/MAN/MAN1目录,才能执行安装命令。CD/ROOT/ARM/432/ARMNONELINUXGNUEABIMKDIRMANMKDIRMAN/MAN1CD/ROOT/NEED_TO_CROSS_COMPILE_VERSION2/LIBJPEG6BMAKEINSTALL交叉编译LIBPNGTARZVXFLIBPNG1218TARGZCDLIBPNG1218/CONFIGUREPREFIX/ROOT/ARM/432/ARMNONELINUXGNUEABIENABLESHAREDENABLESTATICHOSTARMLINUXMAKEMAK
19、EINSTALL交叉编译YASMTARZVXFYASM072TARGZCDYASM072/CONFIGUREPREFIX/ROOT/ARM/432/ARMNONELINUXGNUEABIENABLESHAREDENABLESTATICHOSTARMLINUXMAKEMAKEINSTALL交叉编译LIBX264TARJVXFX264SNAPSHOT201004102245TARBZ2CDX264SNAPSHOT201004102245CCARMLINUXGCC/CONFIGUREENABLESHAREDHOSTARMLINUXDISABLEASMPREFIX/ROOT/ARM/432/ARMNO
20、NELINUXGNUEABIMAKEMAKEINSTALL11交叉编译LIBXVIDTARZVXFXVIDCORE132TARGZCDXVIDCORE132/CONFIGUREHOSTARMLINUXDISABLEASSEMBLYPREFIX/ROOT/ARM/432/ARMNONELINUXGNUEABIMAKEMAKEINSTALL交叉编译FFMPEGTARJXVFFFMPEG053TARBZ2CDFFMPEG053/CONFIGUREPREFIX/ROOT/ARM/432/ARMNONELINUXGNUEABIENABLESHAREDDISABLESTATICENABLEGPLENABL
21、ECROSSCOMPILEARCHARMDISABLESTRIPPINGTARGETOSLINUXDISABLEFFSERVERENABLELIBX264ENABLELIBXVIDCCARMLINUXGCCENABLESWSCALE此处将会检测LIBX264LIBXVID安装是否正确,以及版本是否是FFMPEG支持的,配置无误则编译MAKEMAKEINSTALL交叉编译OPENCVTARJXVFOPENCV200TARBZ2CDOPENCV200VIMCONFIGURE定位到大概18182行的位置,在“FFMPEGLIBS“LAVCODECLAVFORMAT”后添加“LSWSCALE”,修改之
22、后变为“FFMPEGLIBS“LAVCODECLAVFORMATLSWSCALEFFMPEG_SWSCALE_LIBS“”,然后保存退出。若不修改此信息,OPENCV将不支持LIBSWSCALE,即无法进行图像格式转换。/CONFIGUREHOSTARMNONELINUXGNUEABIWITHOUTGTKWITHOUTCARBONWITHOUTQUICKTIMEWITHOUT1394LIBSWITHFFMPEGWITHOUTPYTHON12WITHOUTSWIGENABLESTATICENABLESHAREDDISABLEAPPSCXXARMLINUXGCPPFLAGSI/ROOT/ARM/4
23、32/ARMNONELINUXGNUEABI/INCLUDE/LDFLAGSL/ROOT/ARM/432/ARMNONELINUXGNUEABI/LIBWITHV4LPREFIX/ROOT/ARM/432/ARMNONELINUXGNUEABICXXFLAGSO2确认所需库都支持,则进行编译,安装MAKEMAKEINSTALL将交叉编译好的库文件拷贝到开发板通过XSHELL将/ROOT/ARM/432/ARMNONELINUXGNUEABI/LIB目录下生成的所有库文件拷贝到开发板的/LIB目录下,若拷贝至其他目录则需指定LDLIBRARYPATH,/LIB目录则可避免此问题。具体操作如下CP
24、/ROOT/ARM/432/ARMNONELINUXGNUEABI/LIB/LIB/ROOT/WORKNFS/ARMOPENCV20执行如下操作CP/MNT/ARMOPENCV20/LIB/LIB至此OPENCV20及其依赖库已成功移植到GT2440开发板。134智能循迹实现通过对图像进行处理,找到图像中的障碍物,并把其边缘坐标提取出来,根据坐标确定障碍物位置与所占最大矩形面积,并根据上述信息规划路线,图像处理流程如图41图4141二值化一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,最常用的方法就是设定一个全局的阈值T,用T将图像的数据分成两部分大于T的像素群和
25、小于T的像素群。将大于T的像素群的像素值设定为白色(或者黑色),小于T的像素群的像素值设定为黑色(或者白色)。下面为二值化的实现代码VOIDGRAY2BINARYIPLIMAGEIN_IMG,UNSIGNEDCHARTHRESHOLDCVSCALARSINTX,Y14UNSIGNEDCHARBINARYFORY0YHEIGHTYFORX0XWIDTHXSCVGET2DIN_IMG,Y,XIFSVAL0THRESHOLDBINARY0ELSEBINARY255SVAL0DOUBLEBINARYCVSET2DIN_IMG,Y,X,S42边缘检测边缘EDGE是指图像局部强度变化最显著的部分。主要存在
26、于目标与目标、目标与背景、区域与区域包括不同色彩之间,是图像分割、纹理特征和形状特征等图像分析的重要基础。图像强度的显著变化可分为阶跃变化函数,即图像强度在不连续处的两边的像素灰度值有着显著的差异;线条变化函数,即图像强度突然从一个值变化到另一个值,保持一较小行程后又回到原来的值。图像的边缘有方向和幅度两个属性,沿边缘方向像素变化平缓,垂直于边缘方向像素变化剧烈边缘上的这种变化可以用微分算子检测出来,通常用一阶或二阶导数来检测边缘。本程序通过边缘检测,从而找到图像中的有具体轮廓的物体,根据存有边缘信息的数组,我们可以得到边缘的长度,边缘所包括的面积,边缘线上各点的坐标,我们就可根据这些信息得到
27、将阻碍小车运行的障碍物的具体位置和所在矩形的最大面积。15CHARFILENAMEARGC2ARGV1CHAR“FRUITSJPG“IFIMAGECVLOADIMAGEFILENAME,10RETURN1CEDGECVCREATEIMAGECVSIZEIMAGEWIDTH,IMAGEHEIGHT,IPL_DEPTH_8U,3GRAYCVCREATEIMAGECVSIZEIMAGEWIDTH,IMAGEHEIGHT,IPL_DEPTH_8U,1EDGECVCREATEIMAGECVSIZEIMAGEWIDTH,IMAGEHEIGHT,IPL_DEPTH_8U,1CVCVTCOLORIMAGE,G
28、RAY,CV_BGR2GRAYCVNAMEDWINDOWWNDNAME,1CVCREATETRACKBARTBARNAME,WNDNAME,A源图像16B二值化图像C边缘检测效果图图4243路径提取通过对视频帧的处理,将每帧图像进行二值化、膨胀腐蚀等操作将障碍物的轮廓提取出来,并获得轮廓的最大和最小的X坐标和Y坐标,将障碍物设定为一个矩形,并通过坐标值来确定小车行进路径。流程图如图43所示(TNUM为障碍物个数、FX和FY为车头中心位置的X和Y坐标、CSIZE为小车宽度、KEEP、LEFT、RIGHT分别为控制小车的3个状态)17图43185电机控制设计51电机驱动设备驱动程序是介于硬件和LI
29、NUX内核之间的软件接口,是一种低级的、专用于某一硬件的软件组件。LINUX有两种方式使用设备驱动程序直接编泽到内核中在运行时加载也就是内核模块。LINUX下的设备驱动程序7是一些用于完成不同任务的函数的集合,通过这些函数使得LINUX下的设备犹如普通文件一般。因此对于应用程序来说设备只是一个普通的文件,应用程序可以像操作普通文件一样对硬件设备进行打开、关闭、读、写、IO控制等操作。511电机驱动电路L298N是SGS公司的产品,其内部包含4通道逻辑驱动电路,即内含两个H的高电压大电流双全桥式驱动器,接受标准TTL逻辑电平信号,可驱动46V、2A以下的电机。由L298N构成的PWM功率放大器的
30、工作形式为单级可逆变模式、2个H桥的下侧桥晶体管发射极在一起,其芯片引脚排列如图31所示,1脚和15脚客单独引出连接电流采样电阻器,形成电流传感信号。L298N可驱动两个直流电机,OUT1、OUT2和OUT3、OUT4之间分别接2个直流电机。5、7、10、12脚接入控制电平,可控制电机的正反转,ENA、ENB接控制使能端,控制电机的停转。512驱动的编译加载LINUX下的驱动主要分为字符设备驱动、块设备驱动和流设备驱动三类。字符设备是指设备发送和接收数据以字符的形式进行;块设备以整个数据缓冲区为发送和接收的对象;流设备主要应用于网络通信方面。LINUX设备驱动属于内核的一部分,我们可以通过两种
31、方式对其进行编译和加载1与内核一同编译,使其随LINUX的启动而自动加载。2编译成一个可加载和删除的模块,在LINUX运行过程中使用命令对其进行动态的加载和卸载。LINUX驱动编写的最小框架如下所示19MODULE_LICENSE“GPL”STATICINT_INITNAME_INITVOID模块加载时执行的相关操作RETURN0STATICVOID_EXITNAME_EXITVOID模块卸载时执行的相关操作从上面可以看出,一个LINUX最小驱动模块所必需的组成部分为模块初始化函数和模块卸载函数,其中MODULE_LICENSE“GPL”用来声明一个模块的许可证。当内核模块驱动程序编译成功后,
32、可使用命令“INSMOD模块文件名称”加载驱动程序。当内核模块不再需要时,可使用“RMMOD模块名称”卸载驱动程序。注意这两条命令参数是不同的。“模块文件名称”是可修改的,而“模块名称”是编译时由源代码确定的。用户还可使用命令“LSRMOD”查看当前加载了哪些驱动程序。513直流电机驱动小车驱动部分采用直流电机作为动力驱动,通过扩展ARM开发板GPIO口实现对小车的运动控制,采用PWM波实现小车的速度控制,扩展电路图如图5120图51GT2440扩展电路接口本程序对电机控制只有3个状态(KEEP保持当前方向前进、LEFT左转90、RIGHT右转90)216模块联合测试与总结本课题主要有路径识别
33、模块、电机控制模块。路径识别定位在经过前期的OPENCV的图像处理过程,通过对摄像头摄入图像的处理,根据所获得的障碍物的位置规划小车行驶路径,最终实现智能循迹。由于车载摄像头无法拍摄俯视图,若非俯拍则循迹时的路径规划就必须考虑拍摄角度问题,根据现实应用考虑,若在小范围的循迹,可采取摄像头与小车分离,摄像头端固定在高处俯拍地面情况,图片通过ARM板传至小车,再通过小车使用OPENCV处理规划路径循迹。22参考文献1陈赜,秦贵中,徐华中,王磊ARM9嵌入式技术及LINUX高级试验教程M北京北京航空航天大学出版社,20051211662徐虹,何嘉操作系统试验指导基于LINUX内核M北京清华大学出版社
34、,20041221353谭浩强C程序设计M北京清华大学出版社,20052122354华清远见嵌入式培训中心嵌入式LINUXC语言应用程序设计北京人民邮电出版社,20071231455冼进,许振山,刘峥嵘嵌入式LINUX应用开发详解M北京电子工业出版社,2007561156GARYBRADSIKADRAINKAEHERL著,于仕琪刘瑞铮译学习OPENCVM北京清华大学出版社,2007921357叶学义,庄镇泉,张云超等一种新颖快速的虹膜定位算法J计算机工程与应用,2003,,39(30)54568孙纪坤嵌入式LINUX系统开发技术详解基于ARMM北京人民邮电出版社,20068915623致谢本课
35、题之所以能够顺利完成,首先我要感谢我的指导老师老师。何老师他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,何老师都始终给予我细心的指导和不懈的支持。四年的大学时光稍纵即逝,最终将以毕业设计这最后一次考核而结束。此次毕业设计课题的研究以及论文的撰写是在我的指导老师老师的悉心耐心的指导下得以完成的。所以要深深感谢老师在毕业设计期间对我无微不至的指导关怀和帮助。何老师严谨的治学态度、渊博的知识、对工作孜孜不倦的敬业精神,都让我非常的崇。他是一个严格要求学生的老师,又似一个关爱学生的兄长。他在我感到迷茫的时候给我指明了方向,在我畏惧难题不敢向前时给了我动力,使我在这段时间里获益匪浅,老师您辛苦了。在此特向老师表示诚挚的敬意,忠诚的感谢。在此,我还要感谢在一起愉快的度过大学生活的402班同学们,还有我们一直坚持走下来的项目小组成员,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。最后当然要感谢在大学四年学习和生活中关心帮助我的所有老师和同学,感谢学校给了我快乐的时光和美好的回忆。