• 9.29 MB
  • 2022-04-22 13:42:38 发布

基于ARM的智能探测小车的设计与实现.doc

  • 79页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'基于ARM的智能探测小车的设计与实现中文摘要基于ARM的智能探测小车的设计与实现中文摘要随着国人在嫦娥工程的初步成功和逐步深入,月球探测器的设计一直吸引着众多科学工作者的关注。智能探测小车属于机器人的范畴,它融合了先进的嵌入式技术、传感器技术、电子电气、路径规划、人工智能和自动控制等技术。机器人车应用领域广泛,包括自动驾驶、反恐、核电站维护、未知区域探测、无人工程产品运输等等,机器人控制技术的发展必将对人们的生产和生活产生深远影响。课题旨在设计一款具有良好可扩展性,模块化的教育型智能探测小车控制平台,使其既能够满足大专院校学生开展机器人比赛的要求,同时又能成为嵌入式课程开发和项目研究的平台。本文以ARM9处理器和Linux操作系统为基础构建了智能探测小车控制平台的软硬件系统。本文通过分析国内外机器人的研究现状,设计实现了一种低功耗、高性能嵌入式微处理器和嵌入式操作系统相结合的智能探测小车控制系统。智能探测小车包括视嵌入式核心模块、主控模块、电机驱动模块、红外寻迹模块、测温模块、摄像头模块、无线通信模块等。具体内容如下:阐述了智能探测小车的应用价值和研究意义,并详细的描述了智能探测小车的体系结构。概述了基于ARM的智能探测小车控制系统结构。设计了基于ARM的智能探测小车控制系统的硬件平台。对核心板、主控板、稳压电源、电机驱动、红外寻迹、温度测量、串口通讯、LED和蜂鸣器以及其他扩展接口等硬件电路分别给出了详尽的设计方案。依据PCB设计的原则、抗干扰措施,自行设计了印刷电路板(PCB)。设计了基于ARM的机器人小车控制系统的软件平台。先将Linux操作系统的启动代码、内核和文件系统移植到S3C2440A 基于ARM的智能探测小车的设计与实现中文摘要上。在Linux系统中编写相应的设备和接口驱动程序,编写了控制系统主程序群、图像采集程序群和温度测试程序等应用程序。设计了上位机监控软件、相关通信协议和数据传送格式。论述了红外寻迹处理中的PD变尺度增量控制算法,图像处理中的灰度二值化算法以及温度测试中的环境温度补偿等问题的解决策略。测试结果表明,在该控制系统下,智能探测小车具有良好的位置跟踪和图像采集处理性能。关键词:ARM、智能探测、Linux、寻迹、图像处理、温度补偿、位置跟踪作者:王栋指导教师:陈蕾 ARM-basedintelligentdetectionofcardesignandimplementationAbstractARM-basedintelligentdetectionofcardesignandimplementationAbstractWithourinitialsuccessinthegoddessoftheprojectandgradually,thedesignofthelunarprobeshasbeendrawinglargenumberofscientificworkers.Intelligentdetectionofthecarbelongstothecategoryoftherobot,theembeddedspacetechnologyandadvancedtechnology,electricalsensor,thepathplanning,Artificialintelligenceandautomaticcontrolandtechnology.Carintheareaofroboticsapplications,includingautopilotandnuclearterrorism,maintenance,theareaisdetected,thetransportandcontrolproducts,robotdevelopmentofthepeoplewillintheproductionandlifehasprofoundimplications.Projectaimstodesignagoodscalable,modularintelligentexplorationofeducationcarcontrolplatform.itisabletomeetthetertiarystudentstocarryoutarobotthegamedemands,andbecameembeddedcurriculumdevelopmentandresearchontheplatform.Inthispaper,ARM9processorandtheLinuxoperatingsystemforthecarwasconstructedbyintelligentcontrolsoftwareandhardwaredetectionsystem.Thispaperanalyzesthestatusofdomesticandinternationalresearchrobotdesignedandimplementedalow-power,high-performanceembeddedmicroprocessorsandembeddedoperatingsystemcombinesintelligentdetectionofcarcontrolsystem.VisitIntelligentdetectionofthecarincludinglookingattheembeddedkeymodule,topmanagementmodule,electricalmachineryurgemodule,infraredtoseekmarkmodule,examinewarmmodule,lensmodule,wirelesscommunicationmodule,etc..Theconcretecontentisasfollows:Describestheapplicationofintelligentdetectionofcarvalueandsignificance,andadetaileddescriptionofthearchitectureofintelligentdetectionofcar.OverviewofARM-basedintelligentdetectionofcarcontrolsystemstructure.ARM-baseddesignofprobecarcontrolsystemofintelligenthardwareplatform.To ARM-basedintelligentdetectionofcardesignandimplementationAbstractthekeyboard,topmanagementboard,steadyvoltageplug,electricalmachineryurge,notinfraredtoseekmark,temperaturesurvey,bunchesofmouthfulsofcommunication,LEDandbuzzerandotherexpansioninterface,etc.circuitofhardwareprovidetheexhaustivedesignplanrespectively.TheprincipledesignedaccordingtoPCB,anti-interferencemeasure,havedesignedtheprintedcircuitboard(PCB)byoneself.ARM-basedrobotdesignedcarcontrolsystemsoftwareplatform.StartLinuxoperatingsystemcode,kernel,filesystemtransplantS3C2440Atofirst.WritethecorrespondingapparatusandinterfacedriverinLinuxsystem,gatherproceduregroupandtemperatureandtestapplicationprogramsuchastheprocedureafterwritingmainprogramgroupofcontrolsystem,picture.Design,golocationplanecontrolsoftware,relevantcommunicationprotocolanddatatransmissionform.ExpoundthefactinfraredtoseekmarkPDdealwith,turnintoyardstickincrementcontrolalgorithms,settlementtacticsinproblemssuchastheenvironmentaltemperaturecompensationintwovaluealgorithmsandtemperatureofgreylevelinpatternprocessaretested,etc..Testresultindicate,undercontrolsystemthis,Intelligentdetectionofthecarhavegoodpositionfollowwiththepicturegatheringtheperformanceofpunishing.Keywords:ARM,Intelligentdetection,Linux,Seekingthemark,Patternprocess,TemperatureCompensation,PositiontofollowWrittenbyWANGDongSupervisedbyCHENLei 基于ARM的智能探测小车的设计与实现第一章绪论第一章绪论1.1引言嫦娥奔月是几千年前中国人给月亮编织的一个美丽的故事。古往今来,我国对探索月球有着矢志不渝的追求。2004年,中国正式开展月球探测工程,并命名为“嫦娥工程”,直到“嫦娥一号”的奔月成功,国人的梦正一步一步地走向实现。今年的国庆,中国让世界再次瞩目——这一天,“嫦娥二号”卫星从“月亮城”西昌腾空而起,准确进入预定轨道。美国媒体在嫦娥二号发射当天即用大量文字和图片报道中国月球探索历程;新加坡《联合早报》将中国的嫦娥二号和西方发射的探月卫星进行了比较,认为嫦娥二号只用112小时便能进入月球轨道,比欧洲和日本探月卫星的速度都要快。更让人振奋的是“嫦娥二号”在飞行180余小时后,在10月9日上午11时32分正式进入轨道高度为100公里、周期为118分钟的圆形环月“使命轨道”。这代表着,“嫦娥二号”任务已基本取得成功。如图1.1所示本次嫦娥二号卫星发射的主要任务。图1.1嫦娥二号探月任务“嫦娥二号”的成功发射标志着开展月球探测工作是我国迈出航天深空探测第一步的重大举措。实现月球探测将是我国航天深3 基于ARM的智能探测小车的设计与实现第一章绪论空探测零的突破。月球已成为未来航天大国争夺战略资源的焦点。月球具有可供人类开发和利用的各种独特资源,月球上特有的矿产和能源,是对地球资源的重要补充和储备,将对人类社会的可持续发展产生深远影响。1.2选题依据及研究意义“嫦娥工程”是分阶段实施的“三步走”,三阶段都采用无人自动探测,可用“绕、落、回”来简单概括:第一期工程叫“绕”即发射一个月球探测器,围绕月球轨道靠近月面进行探测,包括对月球影像的拍摄,对近月表面情况(成分、月壤厚度等)的探测,以及对月地之间环境的探测等。这个探测器2007年就已经发射。第二期工程叫“落”即发射一个月球探测器,着陆在月球表面上,再从这个月球着陆探测器上释放出一个探月车,在月球表面上行走探测。如果申报获批,该工程预计在2012年前后进行(本文所研究设计的智能探测小车即为了模拟第二期工程中降落在月球表面的探测器)。第三期工程叫“回”即发射一个月球着陆器着陆在月球表面,但这个着陆器与上一期“落”阶段的月球着陆器不一样,它还带有返回的功能。这个月球着陆器落在月球表面就位探测后,再将从月球上所取的样品放回到返回器上,返回器最终把样品带回地球。“回”的技术水平更高、更复杂,预计在2017年左右进行。等到这“三步走”走下来,我国接着就将开始中华民族千年梦想的载人登月计划,并有可能与有关国家共建月球基地。甚至还有航天专家预想,我国将在2014年——2033年间实现无人火星探测,2040年——2060年实现载人火星探测[1]。3 基于ARM的智能探测小车的设计与实现第一章绪论在航天深空探索上,美国人有着全世界最好的技术和经验。2003年,美国宇航局发射“勇气”号和“机遇”号火星车执行火星探索任务。2004年1月,两辆火星车在火星的不同区域着陆。迄今为止,它们已在火星表面跋涉了5年多时间,以寻找这颗星球过去是否有水的线索。根据最初的设计,“勇气”号和“机遇”号用来执行为期90天的火星探索任务,但这两个机器人最终上演了超龄服役的壮举。“勇气”号是迄今美国发射的最尖端的火星探测装置,其顶部的桅杆式结构上装有全景照相机及具有红外探测能力的微型热辐射分光计。“勇气”号成功实现了集通信、拍摄和计算等功能于一身。火星车能够在火星上自主行驶:当火星车发现值得探测的目标,它会驱动六个轮子向目标行驶,在检测到前进方向上的障碍后,火星车会去寻找可能的最佳路径。本文所述的智能探测小车,是类似火星车,以轮子作为移动机构、能够实现自主行驶的一种机器人,它具有机器人的基本特征——易于再编程。目前各国关于机器人的定义都各不相同,在美国标准中,只有易于再编程的装置才认为是机器人。智能探测小车不同遥控小车,后者需要操作员来控制其转向、启停和进退,比较先进的遥控车还能控制其速度。常见的模型小车,都属于这类遥控车。而智能探测小车,则可以通过计算机编程来实现其对行驶方向、启停以及速度的控制,无需人工干预。操作员可以通过修改小车的计算机程序来改变它的行驶方式。这种智能探测小车的另一基本特征是,依靠自动导航软件实现在一定道路条件下的自动行驶,这是车辆的另一个基本特征。自寻迹的智能探测小车,是一个集环境感知、规划决策,自动行驶等功能于一体的综合系统,它集中地运用了计算机、传感、信息、通信、导航、人工及自动控制等技术,是典型的高新技术综合体。智能探测小车最适合在那些人类无法工作的环境中工作,因此这类机器人小车的研究和开发对未来的工业和社会具有十分重要的意义。另外,智能探测小车的自动控制、传感、通信等的研究将有助于车辆的研究,车辆驾驶任务的自动完成将给人类社会的进步带来巨大的影响[2-5]。1.3本课题的主要目的与工作作者在研究生期间一直从事嵌入式专业的研究和教学工作,嵌入式行业的蓬勃发展以及先进控制的理论成果使得对机器人的研究更具有挑战性。作者在从事嵌入式机器人的研究期间,曾带领学生参加过IEEE标准电脑鼠走迷宫、全国高职高专技能大赛——嵌入式产品开发等比赛。在对智能探测小车的研究中面临的最大难题在于小车本身是一个独立的系统,即机器人小车的“智能”在于它有自己的大脑,有自己的躯干,它不仅会思考而且要有效的管理自己躯干的各个部件。而要进行思考和管理就必须要有可靠的控制算法,但是常规的单一控制算法都不具备充当机器人小车更“智能”的条件。另外智能探测小车3 基于ARM的智能探测小车的设计与实现第一章绪论是一个独立的控制系统,对硬件的要求随着系统功能的增加而增高,嵌入式控制系统电路的设计势必要满足简介、可靠、低功耗等要求。目前基于单片机的控制系统外围电路、可靠性、可扩展性普遍较差,如何设计一套电路简单、性能可靠、功能齐全的嵌入式机器人小车硬件控制系统是另一个难题。由于智能探测小车对控制以及精度的要求,控制系统的软件部分亦将变的庞大而复杂。嵌入真正开放、资源丰富、扩展性强、能实时多任务管理的Linux操作系统成为首选办法。本文以ARM920T核控制芯片为控制器,用红外传感器识别路径,使用直流电机进行转向控制和速度控制,使用CMOS摄像头来拍摄识别对象,使用无线网卡来传输数据,使用协Linux操作系统来管理应用程序,使用上位机软件来控制小车启停并接收反馈信号。研究红外寻迹的PD变尺度增量控制算法和图像处理的灰度二值化算法。最终实现一个能够自动识别路径,自动控制稳定性,自动拍摄识别沿途障碍标志物并自动传送图像参数的快速、安全、稳定的智能探测小车。为达到上述目的,本课题主要对以下方面进行了工作:1.结合当前机器人发展状况、体系结构以及面临的主要技术问题,阐述了基于ARM嵌入式智能探测小车控制系统的结构,设计出了基于ARM920T的最小系统。在大量的实验基础上设计了智能探测小车温度探测模块,电源模块,通信模块,控制和执行模块等硬件电路。2.移植Linux、内核、系统文件,编写智能探测小车底层物理驱动并在Linux操作系统的平台基础上编写调试智能探测小车的应用程序。3.控制算法的研究与实现:结合红外传感器硬件排布的结构特点,本文设计了自适应的扫描方法。对于红外寻迹本文实现PD变尺度增量控制算法并分析了的其优劣。结合CMOS摄像模块的性能,采用了二值化算法对拍摄图像进行二值化,并对数据结果分析后得到颜色和图像形状。4.通过对智能探测小车做的大量实验的前提下,本文给出了实验结果的数据比较和分析,并对机器人小车的研究做了展望。3 基于ARM的智能探测小车的设计与实现第二章嵌入式系统与智能探测小车的总体概述第二章嵌入式系统与智能探测小车的总体概述2.1ARM硬件开发平台什么是嵌入式系统(EmbeddedSystem)广义地讲,凡是不用于通用目的的可编程计算机设备,就可以算是嵌入式计算机系统。举例来说,个人计算机(PC)不是一种嵌入式系统,因为它是用于通用目的的系统。而一些电话系统就是采用个人计算机技术建立的嵌入式计算机系统,最典型的嵌入式系统如手机、可视电话等;另外还有一些嵌入式系统采用特殊的微处理器,如传真机、打印机等。狭义上而言,嵌入式系统是指以应用为核心,计算机技术为基础,软硬件可裁减,对功能、可靠性、成本、体积和功耗严格要求的专用计算机系统。一般的嵌入式系统的设计过程是:从产品定义开始,接着进行硬件设计,然后将软件或操作系统移植到硬件上,并且进行应用程序的开发,最后经过测试与调试后即开始销售或使用。根据IEEE(国际电气和电子工程师协会)的定义:嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(原文为devicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants)。可以看出此定义从应用上考虑,嵌入式系统是软件和硬件的综合体。ARM技术是嵌入式系统的一种,是全球微处理器行业中一家知名的企业,该公司于1990年在剑桥大学成立,它是由苹果电脑、AcornComputerGroup和VLSITechnology联合成立的一家设计32位嵌入式RISC芯片内核的公司。如今,“ARM嵌入式内核”已经被全球各大芯片厂商采用,基于ARM的开发技术也席卷了全球嵌入式产品的市场,并成为嵌入式系统的主流技术之一[6]。2.1.1ARM处理器的体系和结构ARM构架诞生至今已经有过多次变革,每一次都在性能上得到了很大的提高,目前ARM的架构有:(1)V1构架(ARM1):具有基本的数据处理指令(无乘法);字节、半字节、字的Load/Store指令;转移指令;软件中断指令;64MB的寻址空间。(2)73 基于ARM的智能探测小车的设计与实现第二章嵌入式系统与智能探测小车的总体概述V2构架(ARM2、ARM3):增加乘法指令;增加支持协处理器的操作;增加快速中断模式;增加SWP/SWPB的存储器和寄存器交换指令。(3)V3构架(ARM6):增加MRS/MSR指令,可以访问新增加的CPSR/SPSR寄存器。增加了异常处理返回;寻址空间扩展到4GB。(4)V4构架(ARM7、ARM9):低功耗的32位RISC处理器,包括32位地址线和数据线,具有ICE逻辑,调试开发方便;具有16位的Thumb指令集;主频高达130MIPS;完善了软件中断SWI指令。(5)V5构架(ARM10):具有带链接和交换的转移BLX指令;计数前导零CLZ指令;BRK中断指令;增加了一些信号处理指令。(6)V6构架(ARM11):增加了SIMD功能,为多媒体处理的应用系统提供优化功能。其中,ARM7、ARM9、ARM10,Intel的StrongARM系列、Xscale系列等属于通用处理器系列,已经在很多领域大量应用。ARM是基于RISC(ReducedInstructionSetComputer精简指令集计算机)[7]而设计的,它与CISC(ComplexInstructionSetComputer复杂指令集计算机)在一些地方有着很大的区别。传统的CISC计算机随着计算机技术的发展不断地引入新的复杂指令集,为了支持这些新增的指令,计算机的体系结构会越来越复杂,但在这些指令中,只有约20%的指令会被反复调用,占程序代码的80%;余下的80%指令不经常使用,在程序代码中占20%,这就造成了浪费,显得设计不合理,而RISC则可以避免这些问题。RISC指令系统相对简单,能够满足大部分的功能需求,只要求硬件执行有限的最常用的那部分指令,大部分复杂的操作使用成熟的编译技术由简单指令合成,这使得计算机的执行效率得到提高。目前中高端的服务器普遍使用RISC指令集,把重点放在了如何使计算机的结构更加简单合理地提高运算速度。CISC和RISC架构各有其侧重点,现在出现了超长指令集计算机,融合了两只指令集的优势,成为未来CPU发展的趋势之一。73 基于ARM的智能探测小车的设计与实现第二章嵌入式系统与智能探测小车的总体概述2.2ARM操作系统2.2.1常见的ARM操作系统在嵌入式应用中嵌入式操作系统已经大量存在,尤其在功能复杂、系统庞大、要求较高的方案中显得越来越重要,可以说没有操作系统的计算机是没有用的,这点在普通的台式电脑上大家都有深刻体会。操作系统管理整个硬件系统的运行,负责各种资源的调配,充分发挥了32位CPU的多任务能力,是整个嵌入式系统的灵魂。目前有多种嵌入式操作系统,它们使得开发实时应用程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能,把应用程序分割为若干独立运行的模块,使得程序的设计变得简化许多;对于实时性要求高的应用做到了快速响应和可靠处理;使得整个系统的资源得到很好的管理和应用。常见的嵌入式操作系统有:(1)VxworksVxworks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),具有良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域牢牢占据着一席之地。Vxworks所具有的显著特点是:可靠性、实时性和可裁减性,而且它支持多种处理器,如x86、i960、SunSparc、MotorolaMC68xxx、MIPS、POWERPC等等。大多数的VxworksAPI是专有的,火星机器人使用的就是Vxworks操作系统。(2)WindowsCEWindowsCE3.0是一种针对小容量、移动式、智能化、32位、连接设备的模块化实时嵌入式操作系统。针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰富的操作系统平台,WindowsCE嵌入式不够实时,属于软实时操作系统。由于其Windows背景,界面比较统一认可。操作系统的基本内核需要至少200K的ROM空间。(3)PalmOSPalmOS是著名的网络设备制造商3COM旗下的PalmComputing掌上电脑公司的产品。PalmOS在PDA市场上占有很大的市场份额,目前主要与WINCE进行激烈竞争。(4)QNXQNX是加拿大QNX公司的产品。它是在x86体系上面开发出来的,别的好多RTOS都是从68K的CPU上面开发成熟,然后再移植到x73 基于ARM的智能探测小车的设计与实现第二章嵌入式系统与智能探测小车的总体概述86体系上面来的。QNX是一个实时的、可扩充的操作系统,它部分遵循POSIX相关标准,由于QNX具有强大的图形界面功能,因此很适合作为机顶盒、手持设备(手掌电脑、手机)、GPS设备的实时操作系统使用。(5)µC/OSMicroControlleroperatingsystem,微控制器操作系统,它是由美国人JeanLabrosse1992年完成的。应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等。1998年升级到µC/OS-II,2000年,得到美国航空管理局(FAA)的认证,可以用于飞行器上。(6)嵌入式LinuxLinux的核心是由LinusTorvalds在1991年开发出来,并放到网络上供大家下载学习使用。开放源代码,内核小、功能强大、系统健壮、效率高、易于裁减。可以支持数十种CPU芯片。嵌入式Linux就是指对Linux经过小型化裁减后,能够固化在容量只有几百K字节或几兆字节的储存器芯片中,用于特定嵌入式场合的专用Linux操作系统[8][9][10]。2.2.2选择Linux操作系统的原因以上常见的嵌入式操作系统,虽然提供了很多高级的功能,如图形用户界面和网络支持,但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且源码封闭性也大大限制了开发者的积极性。另外,结合我国国情,当前国家对自主操作系统的大力支持,也为源代码开放的Linux的推广提供了广阔的发展前景。选择Linux有以下几个原因:(1)可应用于多种硬件平台。Linux己经被移植到多种硬件平台,这对受开销、时间限制的研究与开发项目是很有吸引力的。可以在标准平台上开发然后移植到具体的硬件上,加快了软件与硬件的开发过程。(2)Linux可以随意的配置,不需要任何的许可证或商家的合作关系。唯一的限制是开发者必须做出对Linux社区有益的改动。(3)它是免费的,源代码可以得到,这是最吸引人的。毫无疑问,这会节省大量的开发费用。Linux世界就是一个自由、开放的王国。(4)73 基于ARM的智能探测小车的设计与实现第二章嵌入式系统与智能探测小车的总体概述优秀的网络支持,微内核直接提供网络支持,而不必像其他操作系统要外挂TCP/IP协议包。(5)Linux高度模块化使添加部件非常容易。(6)Linux在台式机上的成功,也保证了Linux在嵌入式系统中的辉煌前景。基于Linux的嵌入式操作系统常见的有ARMLinux、RTLinux和µCLinux等。本设计中选择ARMLinux作为操作系统[11][12]。2.3基于ARM的嵌入式系统设计方法如图2.1所示,嵌入式系统设计一般由5个阶段构成:需求分析、体系结构设计、硬件/软件设计、系统集成和系统测试[13]。各个阶段之间往往要求不断的反复和修改,直至完成最终设计目标。图2.1嵌入式系统设计流程(1)系统需求分析/体系结构设计系统的需求一般分功能需求和非功能性需求两方面。功能性需求是系统的基本功能,如输入输出信号、操作方式等;非功能需求包括系统性能、成本、功耗、体积、重量等因素。体系结构设计描述系统如何实现所述的功能和非功能需求,包括对硬件、软件和执行装置的功能划分以及系统的软件、硬件选型等。(2)硬件/软件设计73 基于ARM的智能探测小车的设计与实现第二章嵌入式系统与智能探测小车的总体概述基于体系结构,对系统的软件、硬件进行详细设计。软硬件设计往往是并行的,并且嵌入式系统设计的工作大部分都集中在软件设计上,采用面向对象技术、软件组件技术、模块化设计是现代软件工程经常采用的方法。(3)系统集成/测试把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。2.4基于ARM的智能探测小车2.4.1智能探测小车系统层次结构图2.2系统结构层次图图2.2为基于ARM的智能探测小车控制系统结构层次图,系统主要由5层组成:上位机监控层,策略应用层,控制器层,传感和执行层以及机械层。上位机监控层由PC机和其上由C++开发的应用软件组成,上位机通过其上的无线网卡,由无线路由器桥接与智能探测小车上的无线网卡建立连接,数据通过无线接口模块来传输,上位机主要实现探月过程中沿路重要信息的监控与收集,如沿途被测对象的颜色、形状、距离、温度以及图像等信息;策略应用层主要包括操作系统、应用软件和控制算法,也是本课题的重点部分。小车控制器层主要由ARM973 基于ARM的智能探测小车的设计与实现第二章嵌入式系统与智能探测小车的总体概述内核控制器及其外围电路组成,是课题设计实现最为关键的层次。传感执行层可以看作是小车的各种器官,传感器用来实现信息采集,执行器用来执行上层发来的动作命令。机械层是被控制对象,是最底层的部件。2.4.2系统软硬件组成图2.3系统软硬件组成智能探测小车控制系统软硬件组成如图2.3所示,系统由三部分组成,操作系统部分、中间部分和硬件部分。硬件部分由ARM9处理器S3C2440A,存储器,红外光电寻迹模块、电机模块、任务探测模块等电路组成。其中存储器包含了SDRAM、NorFlash和NandFlash;电机模块通过串口与处理器进行数据交换;红外光电寻迹模块则通过红外传感器来对地面路况进行识别,处理后的数据通过SPI总线来传输给处理器;探测模块是73 基于ARM的智能探测小车的设计与实现第二章嵌入式系统与智能探测小车的总体概述智能探测小车的眼睛、鼻子和耳朵,它将月球表面的讯息采集处理和通过IIC总线传输给处理器。中间部分由驱动程序层和硬件抽象层组成。驱动程序层是可以使计算机和设备通信的特殊程序层,可以说相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作。硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。从软硬件测试的角度来看,软硬件的测试工作都可分别基于硬件抽象层来完成,使得软硬件测试工作的并行进行成为可能。操作系统部分由系统内核、应用程序及算法程序等软件组成。在智能探测小车的核心板上移植ARMLinux操作系统,根据小车的功能编写应用程序。应用程序和算法包含:系统启动程序、呼叫上位机程序、路况采集程序、路信息过滤程序、电机控制程序、图像识别程序、图像处理程序、探测信息分析程序、无线通信程序等。2.4.3智能探测小车的整体介绍如图2.4所示小车共有6块电路板,分别是核心板、主控板、电机驱动板、红外寻迹板、摄像头和探测板组成。小车共有四个驱动电机,左右各两个,并且同一边的两个电机是共用一个PWM信号的,所以小车驱动起来只需要2路PWM信号。主板供电为+5V直流电源,通过跟驱动板的连接端口获取电源,也可以在主板的辅助电源插座上接上+5V的直流电源,主板上配有一个纽扣电池为2440的实时时钟供电;驱动板上有两组电源,分别以+12V直流电源供电;核心板为3.3V直流电源,取自主板。73 基于ARM的智能探测小车的设计与实现第二章嵌入式系统与智能探测小车的总体概述图2.4小车实物图2.5本章小结本章首先介绍了嵌入式技术的发展现状、体系结构和应用,接着分析了基于ARM的嵌入式系统,包括ARM微处理器和嵌入式系统设计方法的介绍,其次给出了本文设计的基于ARM的智能探测小车控制系统的结构,以及软硬件组成。最后介绍了智能探测小车的整体结构。73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构第三章智能探测小车控制系统硬件平台架构3.1总体设计智能探测小车的硬件是整个控制系统能否顺利运行的基础。硬件以ARM9核控制芯片S3C2440A为控制器,用红外光电传感器识别路径,使用驱动电路、编码器和直流电机进行转向控制和速度控制。整个控制系统的硬件采用模块化设计,这样做既能方便硬件的调试和升级,又能方便控制系统硬件在智能探测小车上的安装,系统硬件可分为电源模块,S3C2440A核心板模块,主板模块,直流电机驱动功放模块,红外传感器寻迹模块,探测板模块,无线通信模块。智能探测小车控制系统硬件平台架构如图3.1所示。图3.1系统的整体结构3.2智能探测小车控制系统硬件电路设计3.2.1智能探测小车核心板设计(1)微处理器的选型智能探测小车的微处理器是整个控制系统的核心部件,它完成从73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构红外光电寻迹模块单元中获取路径信息,从摄像头模块采集标志物和障碍物信息,进行数据处理,控制算法运算,输出控制量和上位机通讯等功能,系统采用嵌入式微处理器来建立控制平台。由于嵌入式系统应用需求的多样性,市场上基于RISC结构的嵌入式处理器供应商也日渐增多,为了保证系统的实用性和易扩展性,同时系统需要植入高性能的操作系统,以完成复杂的多任务协同运行,此控制系统需要选用高性能的微控制器,考虑到系统升级以及高档微控制器的价格不断下降等因素,因此设计时选用32位微控制器作为整个系统的核心。对于微控制器的选择,遵守了以下原则:1)系统时钟的速度——芯片的运行速度由系统时钟来决定,在对芯片的速度考察的时候,考虑到总线速度的影响,根据实际需要一般要选用实际所需速度的三倍时钟。2)GPIO的数量——在芯片说明书中标出的是最多的I/O口的数量,其中有些是地址、数据、I/O复用的接口,因此选择芯片时一定要考虑其实际可用的I/O接口数量。3)中断控制器——外部中断控制器是选择芯片必须考虑的因素,合理的外部中断设计可以在很大程度上减轻任务调度的工作量,同时还要考虑中断的触发方式。4)外部扩展总线——大部分的32位芯片支持外部扩展SDRAM,但是提供的片选信号的数量不同,即支持的外部扩展芯片的数量不同。同时,数据总线的宽度有8位、16位、32位三类,方便选择总线宽度类型。5)UART数量——几乎所有的32位芯片都支持1个或2个串口,用于同PC机通信调试。Samsung的ARM芯片是国内目前使用最多的ARM芯片,其中最常用的是S3C4510、S3C44B0、S3C2410和S3C2440。考虑到要求控制系统具有高性能的原因,另外结合实验室的设备情况,决定选择以Samsung公司32位处理器芯片——S3C2440A(ARM9内核)为控制器,S3C2440A主频高达533MHz,并提供丰富的输入输出端口、时钟源、PWM、外部中断接口。S3C2440A采用ARM920T内核[14],集成如下片上功能:l.2V内核,l.2V/2.5V/3.3V储存器,3.3V扩展I/O,16KB指令Cache/16KB数据Cache,外部储存控制器(SDRAM控制盒片选逻辑),集成LCD专用DMA的LCD控制器,4路拥有外部请求引脚的DMA控制器,3路URAT,2路SPI,73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构IIC总线接口,IIS音频编解码器接口,AC97编解码器接口,1.0版SD主接口,兼容2.11版MMC接口,2路USB主机/l路USB设备,4路PWM定时器/l路内部定时器/看门狗定时器,8路10位ADC和触摸屏接口,具有日历功能的RTC,摄像头接口,130个通用I/O,24个外部中断源,电源控制:正常,慢速,空闲,睡眠模式,带PLL的片上时钟发生器。(2)ARM最小系统设计最小系统是处理器能够运行的基本系统。在嵌入式控制系统的开发中,最小系统起着至关重要的作用。因此构建一个嵌入式控制系统,第一步,必须是要让系统核心部分——嵌入式处理器,可以运行起来,这样才可以逐步增加系统的功能,如外围扩展、软件及程序设计、操作系统移植、增加各种接口等,最终形成符合需求的完整系统。嵌入式系统的最小系统是指基于以某处理器为核心,可以运转起来的最简单的硬件设计[15]。本文设计的智能探测小车嵌入式控制系统的最小系统组成如图3.2所示。图3.2最小系统组成S3C2440A嵌入式控制器——对于任何一个计算机系统,处理器都是整个系统的核心,整个系统是靠处理器的指令工作起来的。存储器——一个嵌入式系统的运行,其指令必须放入一定的存储器空间内,运行的时候也需要空间存储临时数据,一般的内存包括可以固化代码的FLASH和可以随机读写的RAM。本系统扩展了64MB的SDRAM、64MB的NandFlash和2MB的NorFlash。时钟——73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构处理器的运行需要时钟周期,一般来说处理器在一个或者几个周期内执行一条指令。时钟单元的核心是晶振,它可以提供一个频率,处理器使用该频率的时候可能还需要倍频处理。电源和复位——电源是为处理器提供能源的部件,一般使用直流电源。复位电路连接处理器的引脚,实现通过外部电平让处理器复位的目的。JTAG调试接口——在高级的嵌入式处理器里内置JTAG接口,即联合测试行动小组接口将主机中的程序载入到嵌入式系统的内存中,并对处理器电路进行边界扫描和故障检测。正由于S3C2440A的强大功能,在它上面开发新功能是很有意义的一件事。为了更好的使用S3C2440A,将最小系统的核心部件封装为一块尺寸较小、通用性较强的部件,称之为核心板。它更好的提高了其与CPU的通信效率。更好的发挥S3C2440A芯片的潜能。其实物图如图3.4所示:3.2.2主控板电路模块设计图3.4核心板和主板实物图73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构图3.4是主板的实物简介图,主板的功能主要是根据小车的功能需求把S3C2440A核心板的各种有用的接口引出来,并提供电源和一些辅助接口,具体说明如表3.1所示:表3.1主板各事项说明事项详细说明电源开关根据丝印层提示,开关拨到右边开启电源,拨到左边关闭电源;复位按钮用于手动对S3C2440A强制复位;辅助电源插座用于在主板没有与驱动板连接的情况下直接对主板供电,一般是为了对主板进行独立调试,此时注意电源应该具备持续提供1A的负载能力;JP1与驱动板连接到端口其中,RESET是预留给S3C2440A对驱动板上AVR单片机的复位信号X_mode扩展板接口扩展板接口主要用于连接测温以及设计的传感器电路板,分别预留出开关量输入输出、模拟量输入、I2C、UART、SPI的相关信号引脚Sensor红外传感器接口73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构CON_CAM摄像头接口J8、J9USB主从口选择S3C2440A有两个USB主口Host0、Host1,其中Host0已经由USB-HOST1引出,而Host1与USB从口(称为USBDevice)的引脚是复用的,所以需要对Host1/Device进行选择,这里用两个短路帽把J8、J9左边两个插针同时连接起来就是选择Host功能,把J8、J9右边两个插针同时连起来就是选择Device功能。模式选择开关开关拨到左边则选择从NORFLASH启动,拨到右边则选择从NANDFLASH启动JTAG手动启动按钮预留出来的方便小车在没有无线网控制下直接通过人工手动启动小车完成所需要的功能。电路如下:指示灯用于指示当前系统的运行状态,共有四个可编程的LED,它们直接与S3C2440A的GPIO相连,低电平时点亮。在NORFLASH中正常启动则LED3常亮,LED1闪烁,LED2、LED4常灭;在NANDFLASH中正常启动则一开始LED1、LED3常亮,LED2、LED4常灭,启动完成后4个LED以类似走马灯的方式点亮73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构J1上面的信号引脚并不是都用到,下面仅列出较重要的信号引脚:RESET:给AVR单片机的复位信号;OM0:模式控制信号,0为从NANDFLASH启动,1为从NORFLASH启动;73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构J2上面的信号引脚并不是都用到,下面仅列出较重要的信号引脚:RST_KEY:S3C2440A的复位信号,低电平复位;BEEP:蜂鸣器控制引脚。3.2.3稳压电源电路模块设计电源是整个系统稳定运行的基础,稳压电源电路为整个智能探测小车提供电源,主要为控制器和外围电路提供能源,同时驱动直流电机控制速度和方向。S3C2440A的供电电压为3.3V,内核1.8V。其他处理器外围电路需要5.0V电源,为了使得四个直流电机稳定正常持续的高性能工作,提供给电机驱动板12V。系统使用了电源1和电源2两路锂电池进行供电。电源1供给STM32和驱动电机的电源,标配的是8C2200mAh的航模锂电池;电源2供给主板电源,标配的是20C2200mAh的航模锂电池,与电源1通过光耦完全隔离,主板与驱动板的通信都要经过光耦连接。73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构对航模锂电池进行放电试验,在3A大电流放电的情况下得到的曲线,可以看出随着电量的释放,电压也在不断地减低,范围为11.8——3.2V。对于系统来说,稳定运行的电压要在10.2V以上。首先,如图3.5、3.6中将两组12V电池电压分别通过芯片LM2576S-5[16]将电压稳定在5.0V,分别为电机和主板驱动板提供5.0V电源。该款芯片特点是输出电流大、输出电压精度高、稳定好。为了降低噪声和出错机率,在设计PCB时设计了合理的走线以及大面积敷铜处理。5.0V电路加了工作指示灯。SW1是系统电源开关1,用于给驱动板和电机供电;SW2是系统电源开关2,用于给主板供电。图3.55.0V电源1电路图3.65.0V电源2电路然后,如图,再对5.0V电源经过低压差、低噪声线性稳压源LM1117-33和LM1117-18[17]稳压源芯片稳压,提供给处理器所需要的3.3V电源和内核所需的1.8电压,3.3V电源电路加了工作指示灯。电路如图3.7、3.8所示。73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构图3.73.3V电源电路图3.81.8V电源电路3.2.4寻迹电路模块设计寻迹电路模块是智能探测小车控制系统的关键模块之一,路径识别方案的好坏,直接关系到最终任务的成功与否。要使机器人小车能够识别出白底路面上的黑色轨迹或者是更为复杂的黑白组合,常用的方案有两种,一种是采用CCD摄像头寻黑色轨迹,另一种是采用反射式红外光电管寻黑色轨迹。(1)使用CCD摄像头采集路面图像,然后采用图像处理与分析的方法判断路径,是路径识别中常用的方法之一。这种方法的优点是:能够感知前方较远距离处的道路状况;受外界干扰小。采用CCD最大的优势是通过对智能探测小车前方图像的处理,能够准确的判断出智能探测小车前方较长一段距离跑道的走向,从而为智能探测小车的控制提供更多的信息。根据摄像头拍摄到的画面,通过边缘检测等算法判断出许多关键信息,如中心位置,方向,曲率等等。缺点是:图像处理计算量大,处理速度慢。如果要获得较远的视野,将会在小车最近的前方产生一个盲区,在急转弯处黑线容易丢失。(2)73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构采用反射式红外光电管,是路径检测常用的方法。这种方法利用了路面不同的材料和颜色对光线的吸收和反射量不同,检测反射回来的光线就可以得到当前位置的材料或者颜色。这种方法的优点是:电路简单,信号处理速度快。缺点是:感知前方赛道距离有限,受外界红外频段光线干扰,精度低。光电管相对的感知距离较近并且只能提供非常少的前方车道的走势信息。根据两种方案的优缺点,权衡稳定性、精度和速度后,最终选择采用反射式红外光电管。寻迹电路模块的工作原理描述如下:经过对多种红外对管实验室性能测试,最后选择24对红外收发对管RPR-220[18]作为路面探测传感器,24对红外传感器“一”字排开,间距22mm,作为智能探测小车“眼睛”,探测模块安装在车体的前端。控制器通过合适的采样频率的对24个通道定时发送通断信号,驱动RPR-220传感器的发射管,这样做即能节能,又能提高抗干扰能力。RPR-220接收管接收到的是模拟信号,控制器有两种方式接收信息,一种方式是将模拟信号先经过放大电路,然后送给比较器变成“0”、“1”信号送给控制器,但是这样增加了硬件电路的成本。另一种方式是将模拟信号直接传送给控制器的AD接口,编写合适的算法,直接交由处理器去完成,这样做简化了外围电路,由于在AD转化需要花费一定时间,降低了小车对路面信息采集的实时性。本文选择了后者,为了增强小车寻迹的效能,采用ARM7内核的STM32[19]处理器芯片进行辅助运算,引入归一化算法使得寻迹过程更为可靠和稳定(算法将在具体阐述)。图3.9为寻迹模块中红外传感器数据流向框图。图3.9红外传感器探测数据流向框图73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构由于在红外传感器模块组上还预留了其他传感器和功能模块,例如陀螺仪和加速度仪,以便增强智能探测小车的性能。同时考虑到寻迹模块的24组红外传感器数据采集和分析的算法需要较好的运算处理能力,因此在寻迹模块中增加了辅助处理器STM32来帮助核心板预处理红外传感器等的信号,从而通过SPI总线将处理好的数据传送给S3C2440A控制器。图3.10、图3.11分别为红外传感器组成的寻迹模块电路图和寻迹模块实物图。STM32处理器通过SPI来传送控制命令,通过三个595来对每组红外关电对管控制器通断,打开的发射管发射光线,返回的光线由其相应的接收管接受,并通过4051来按照一定频率选择性的接收各路信号,通过其后的放大电路放大后传回STM32处理器进行处理。因此STM32将产生一个固定的频率用于交替执行打开寻迹传感器通道和寻迹传感器的ADC采样。73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构图3.10红外传感器寻迹电路图3.11实物图3.2.5电机驱动电路模块设计73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构大多数直流电机驱动是采用开关型驱动方式,其中以脉宽调制(PWM)最为常见。其优越性在于驱动电子设备的简单性和计算机接口的容易性。由于PWM调制方式使晶体管工作在开关状态,这种调速方式不仅功率损耗低、效率高,还具有调速范围广,线性度好,响应速度快等特点[20]。当输入信号为零时,伺服电机处于微振状态,克服了静摩擦力的影响,有利于改善伺服系统低速运行时的平稳性。电机驱动电路实现对小车车轮电机的驱动主要由总线驱动电路和电机PWM驱动保护电路两部分组成,其电路原理图如图3.12、3.13所示,总线驱动芯片采用SN74HC245N,电机驱动芯片采用L298N,其最大驱动流为单组2A;电机采用12V电源供电,保护用二极管采用1N5822。图3.12AVR单片机电路原理图73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构图3.13电机驱动电路原理图另外,在小车控制板上还设有单片机串口与ARM串口光电隔离电路、电机接口电路。光电隔离电路实现将单片机的串口与ARM的串口信号隔离,电机接口电路将电机电源信号接入电机并将电机速度信号接入单片机。3.2.6温度探测电路模块设计真实的月球车可探测的模拟量较多,本项目仅对目标物的温度进行探测。对温度的测量可采用多种方法,此处采用热释电红外传感器TS118-3进行非接触式测温。测温电路的原理图如图3.14所示,调理放大用运放选用OP07,电路输出两路模拟量给ARM,AIN3为被测目标物温度所对应的模拟量,AIN2为环境温度所对应用的模拟量。当然也可扩展串行A/D转换器直接通过ARM的串行总线接口将模拟量检测数据送入ARM。73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构图3.14红外测温电路原理图3.2.7串口通讯电路设计串口通讯在智能探测小车控制系统的开发和调试的过程中起着重要作用。一方面,通过串口PC机端可以实时获取控制系统的各种信息以及工作参数,另一方面还可以通过PC机向小车控制器发送命令,实现对工作参数进行现场修改。实际证明使用串口通讯后,大大提高了调试过程的效率。许多程序中的小BUG,以及小车行驶过程中遇到突发情况都因为使用了串口通讯实时传送数据迎刃而解。对于小车的启动、停止、参数修改都可以通过PC机传送指令解决,大大减少了重复下载的麻烦。几乎所有的微控制器、PC都提供串行接口,使用电子工业协会(EIA)推荐的RS-232-C标准,这是一种很常用的串行数据传输总线标准。RS-232-CC标准采用的接口是9芯或25芯的D型插头,要完成最基本的串行通信功能,实际上只需要RXD,TXD和GND即可,但由于RS-232-C标准所定义的高、低电平信号与S3C2440A系统的LVTTL电路所定义的高、低电平信号完全不同,LVTTL的标准逻辑“1”对应2V——3.3V电平,标准逻辑“O”对应OV——0.4V电平,而RS-232-C标准采用负逻辑方式,标准逻辑“1”对应-5V——15V电平,标准逻辑“0”对应+5V——+15V电平,显然,两者间要进行通信必须经过信号电平的转换。73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构目前常使用的电平转换芯片为MAX232和SP3232,根据实验室现有的硬件资源。作者选用了MAX232芯片,图3.15为MAX232实现电平转换的电路。图3.15MAX232电平转换电路预使得智能探测小车实际行进的过程中和PC机通讯,显然有线通讯是行不通的,这就需要小车控制系统端和PC端装置无线通讯设备,因此选择在智能探测小车上添设USB主从单元电路,通过USB无线网卡来实现小车与PC机的无线通信,当然这里只是模拟了月球表面,实际的智能探测小车在无线通信上需要下更大的功夫。3.2.8LED、蜂鸣器电路设计LED指示灯、蜂鸣器电路的设计是控制系统人机交互不可缺少的部分LED指示灯和蜂鸣器作为控制系统必要的输出端,用来指示控制系统各种运行参数。LED指示灯、蜂鸣器电路图如图3.16所示。图3.16LED、蜂鸣器电路3.3印制电路板的设计73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构3.3.1印制电路板的设计原则印制电路板(PCB)是电子产品中电路元件和器件的支撑件。它提供电路元件和器件之间的电气连接。随着电子技术的飞速发展,PCB的密度越来越高。PCB设计的好坏对抗干扰能力影响很大。因此,在进行PCB设计时.必须遵守PCB设计的一般原则,并应符合抗干扰设计的要求。要使电子电路获得最佳性能,元器件的布局及导线的布设是很重要的。为了设计质量好、造价低的PCB,应遵循以下一般原则[21][22]:(1)布局,PCB尺寸不可过大,否则造成印制线条长,阻抗增加,抗噪声能力下降,过小,则散热不好且邻近线条易受干扰。以每个功能电路的核心元件为中心,围绕它来进行布局。元器件应均匀、整齐、紧凑地排列在PCB上。尽量减少和缩短各元器件之间的引线和连接。在高频下工作的电路,要考虑元器件之间的分布参数。一般电路应尽可能使元器件平行排列。(2)尽可能缩短高频元器件之间的连线,设法减少它们相互间的电磁干扰。易受干扰的元器件不能相互挨得太近,输入和输出元件应尽量远离。(3)可能有较高的电位差的元器件或者导线间,应加大它们之间的距离,以免放电引出意外短路。(4)应考虑散热问题,热敏元件应远离发热元件。(5)对于电位器、可调电感线圈、可变电容器、微动开关等可调元件的布局应考虑整机的结构要求。若是机内调节,应放在印制板上方便于调节的地方;若是机外调节,其位置要与调节旋钮在机箱面板上的位置相适应。(6)应留出印制板定位孔及固定支架所占用的位置。(7)布线,输入输出端用的导线应尽量避免相邻平行。最好加线间地线,以免发生反馈耦合。在各种微处理器的输入输出信号中,总有相当一部分是相同类型的,例如数据线、地址线。对这些相同类型的信号线应该成组、平行分布,同时注意它们之间的长短差异不要太大,以便减少干扰,增加系统的稳定性。3.3.2PCB及电路抗干扰措施PCB板的抗干扰设计与具体电路有着密切的关系,本文就PCB抗干扰设计[23][24][25]的几项常用措施和系统中采用的措施做一些说明。(1)电源和地线设计73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构根据印制线路板电流的大小加宽电源线宽度,减少环路电阻。同时使电源线、地线的走向和数据传递的方向一致,这样有助于增强抗噪声能力。地线设计的原则是:数字地与模拟地尽量分开。若PCB板上同时有逻辑电路和线性电路,应使它们尽量分开。低频电路的地应尽量采用单点并联接地。高频电路宜采用多点串联接地,地线应短而粗,高频元件周围尽量用栅格扩大面积地箔。应将接地线加粗,使它能通过三倍于印制板上的允许电流。(2)去耦电容配置瓷片电容或者多层陶瓷电容是高频特性较好的去耦电容,它们两个作用,一方面是本集成电路的储能电容,提供和吸收该集成电路开门和关门瞬间的冲放电电能,另一方面,旁路该器件产生的高频噪声。常规做法之一是在各个关键部位配置适当的去耦电容。为提高系统的电源质量,消除低频噪声对系统的影响,一般应在电源进入印制电路板的位置和靠近各器件的电源引脚处加上滤波器,以消除电源的噪声,常用的方法是在这些位置加上几十到几百µF的电容。消除系统中元器件工作时产生的高频噪声的一般的方法是,在器件的电源和地之间加上0.lµF左右接地电容。原则上每个集成电路芯片都应布置一个0.01pF的瓷片电容,板上工作的元器件产生的噪声通常在100MHz或者更高的频率范围内产生谐振,所以放置在每一个元器件的电源脚和地线脚之间的旁路电容一般比较小(约0.lµF)。3.3.3PCB设计版图硬件PCB的制作采用模块化设计,最后生成的PCB板为:主控板模块PCB板、寻迹模板PCB板、电机驱动板模块PCB板、测温模块PCB板。各个模块的PCB图如图3.17、3.18、3.19、3.20所示。73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构图3.17主控板模块PCB板图3.18寻迹模块PCB板73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构图3.19电机驱动板模块PCB板图3.20测温模块PCB板73 基于ARM的智能探测小车的设计与实现第三章智能探测小车控制系统硬件平台架构3.4硬件调试印制电路板制作完成后,要对电路进行分块焊接,分别调试。核心板为6层板,处理器S3C2440A芯片为BGA封装,且尺寸小,可找焊接工厂代工,即便宜又保证焊接成功率。主控板和其他功能模块调试方法如下:(1)首先完成电源模块的焊接,使用万用表和示波器等工具检查输出电压是否符合要求;(2)将核心板连接至主控板,上电后检查晶振起振是否正常;(3)焊接JTAG接口电路,连接主控板与PC之间的JTAG线与并口线,用H-JTAG调试软件调试JTAG接口是否正常;(4)给电路板上电,检测CPU电源引脚电压是否正常,利用H-JTAG调试代理软件检测能否检测到ARM920T核心;(5)焊接串口,检查串口的电平转换电路是否正常,编写简单调试信息,使用PC机端超级终端软件检查是否正常显示串口调试信息;(6)编写简单调试信息,输出PWM信号,用示波器查看信号是否正常。(7)完成硬件的其他部分焊接和调试。3.5本章小结本章设计了智能探测小车控制系统的硬件平台。先给出了控制系统的整体框架,然后对处理器核心板模块、主控板模块、稳压电源模块、电机驱动模块、测温模块、串口通信模块、及其他辅助电路分别做了较详尽的分析和说明。其次,简述了硬件印刷电路板设计的原则及抗干扰措施,并给出PCB板图。最后,给出了硬件调试的步骤。73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构第四章智能探测小车控制系统软件平台架构智能探测小车控制系统的软件平台设计分为三个层次:物理层、操作系统层和任务层。物理层包括存储器分配、启动代码Bootloader编写、硬件驱动等底层软件设计;操作系统层包括Bootloader移植、操作系统ArmLinux内核移植和文件系统移植。任务层主要包括寻迹识别策略、图像识别处理策略、电机控制策略和温度检测策略等应用程序的设计。需要说明的是,由于作者能力有限,智能探测小车的物理层底层软件的编写(包括Bootloader、部分硬件驱动、内核和文件系统)得到浙江求是有限公司的支持。这里仅是介绍其研发的构架和描述一个烧录的过程,着重介绍任务层应用程序的开发。4.1嵌入式开发环境的构建在嵌入式硬件制板、焊接完成之后,就会进入嵌入式软件开发阶段。嵌入式软件的开发与通常软件的开发不同,其使用的编译方法为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码[26]。一般把进行交叉编译的主机称为宿全机,把程序的实际运行环境成为目标机,也就是嵌入式系统环境。之所以要使用交叉编译主要是由于目标机平台的资源有限,无法自己运行编译器编译目标代码,所以需要在系统资源比较丰富的另一个平台上(宿主机平台)为目标机编译可执行代码。而宿主机和目标机的体系结构不同,具有不同的指令系统,因而需要相应的编译器(交叉编译器)将宿主机开发的软件翻译成目标机能够识别的机器代码。所以在开发软件之前首先要构建嵌入式软件的交叉编译环境。宿主机一般是PC机。本文在PC机的Fedora12操作系统里建立了一个能编译嵌入式Linux内核、驱动程序、应用程序的开发环境,其中主要工作有配置交叉编译工具链、配置NFS、配置tftp、配置minicom等。建立交叉开发环境是个比较复杂的过程,阳初公司为用户提供了编译好的交叉编译工具链,我们只需对其解压安装即可。具体步骤不再赘述。其中主要包含有三个版本的交叉编译器:arm-Linux-gcc-2.95.3、arm-Linux-gcc-3.3.2、arm-Linux-gcc-3.4.1。版本2.95主要用来编译bootloader和应用程序,版本3.3.2主要用来编译Qtopi留Embedde73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构d,版本3.4.1主要用来编译内核和应用程序。接下来在目标机中建立了嵌入式Linux操作系统,主要包括bootloader、内核映像、文件系统。本系统中bootloader:使用VIVI,Linux内核版本为2.6.32.2,文件系统为Yaffs系统。对于构建嵌入式Linux操作系统的步骤,不是本文的重点,这里不再赘述。在宿主机和目标机上构建好软件开发环境之后,就可以进行智能探测小车控制软件的开发。4.2智能探测小车系统启动代码、内核和文件系统的烧写(1)系统启动代码(Bootloader)烧写[27][28][29]进入烧写界面,在开机前开关拨到NORFLASH一侧,开机加电。打开SecureCRT通过串口连接ARM主机,可以看到烧写菜单。如图4.1所示图4.1软件SecureCRT的ARM烧写菜单按键V,选择[v],出现如下菜单,等待USB主从口的数据(必须把跳线联到下面右图箭头所指位置)联好USB主从线后再运行DNW软件,显示OK才可以传输数据。选择左图箭头所指的USBPort/Transmit选项。如图4.2所示73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构图4.2使用DNW软件下载选择Bootloader文件vboot.Bin进行烧写,如图4.3所示。烧写完成后出现如图的串口界面信息。图4.3选择Bootloader文件(2)LINUX内核(Kernel)烧写烧写第一步完成,显示如图4.4所示的完成信息。再按键k,选择[k]选项,进行LINUX内核烧写。73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构图4.4Bootloader代码烧写完成返回DNW,选择内核文件Zimage.Bin,电机确定进行USB传输。出现如图4.5所示信息,则完成第二部内核的烧写,如图4.6所示。图4.5选择内核文件73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构图4.6内核代码烧写完成(3)文件系统(Yaffs)烧写最后选择[y],选择并烧写系统文件rootfs.Bin,完成第三步,并在软件上显示完成信息。前两步烧写比较快,第三步烧写文件系统比较慢。烧写完成,如图4.7所示图4.7系统文件代码烧写完成73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构4.3控制系统应用程序设计4.3.1控制系统主程序设计主控程序流程图如图4.8所示,主控程序通过调用其它功能模块完成智能探测小车所有预设的功能。首先连接驱动函数将各功能块开启:调用驱动函数Open_camera()和Malloc_image_memory()开启摄像头并为摄像头分配内存;调用函数init_ttyS()对串口进行初始化,调用函数init_motor()对电机进行,建立线程互斥pthread_mutex_init();发送并等待“启动月球车请求”,调用子函数Startmooncar();等上位机软件发出启动月球车命令后,小车将同时完成寻迹任务、电机控制任务、图像处理任务、温度测量任务以及无线通信处理任务。(1)与服务器握手的通信协议设计,具体的通信协议说明在4.5中阐述。1)请求启动小车的命令协议unsignedcharrcvStartReqCmd[MSG_LEN]={0x55,0x00,0x25,0x01};unsignedcharsndStartAckCmd[MSG_LEN]={0xaa,0x00,0x25,0xFE};2)传送温度数据的命令协议unsignedcharrcvDataReqCmd[MSG_LEN]={0x55,0x00,0x25,0x04,0x01,0x02,0x55,0xaa};//requesttouploaddataunsignedcharsndDataAckCmd[MSG_LEN]={0xaa,0x00,0x25,0xFB};3)传送图像数据的命令协议unsignedcharrcvImageReqCmd[MSG_LEN]={0x55,0x00,0x25,0x02};//requesttouploadimageunsignedcharsndImageAckCmd[MSG_LEN]={0xaa,0x00,0x25,0xFD};unsignedcharrcvImageDataReqCmd[MSG_CMD_LEN]={0x55,0x00,0x25,0x03};//requesttouploadimagedataunsignedcharsndImageDataAckCmd[MSG_LEN]={0xaa,0x00,0x25,0xFC};73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构图4.7主控程序流程图73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构(2)串口初始化init_ttyS(),电机模块的控制与数据处理是通过串口1与ARM进行传输的,其LINUX下初始化子程序init_ttyS()的程序流程图如图4.8所示。图4.8串口初始化子程序init_ttyS()流程图(3)初始化电机,为电机的斜率赋值,并设定电机正常下的速度值,其初始化子程序流程图如图4.9所示。图4.9子程序init_motor()流程图73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构(4)根据电机控制模型计算出电机各自的调整量calc_motor(),子程序流程图4.10如图所示图4.10子程序calc_motor()流程图(5)向单片机串口发送电机运行数据send_motor_handler(),子程序流程图如图4.11所示。图4.11子程序send_motor_handler()流程图73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构4.3.2图像采集处理程序设计智能探测小车图像采集直接采用飞凌CMOSOV9650摄像头模块,其分辨率达到130万像素,可以进行图像采集和处理,是智能探测小车的眼睛,图像采集和处理部分的程序设计如下:(1)打开摄像头,设置摄像头采集的决议,并建立结构体成员。子程序Open_camera()流程图如图4.12所示:图4.12子程序Open_camera()(2)获取当前时刻的一帧图像fetch_picture()。子程序流程图如图4.13所示图4.13子程序fetch_picture()流程图73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构(3)图像处理子程序image_recognize()流程图如图4.14所示,图像处理分为颜色识别和形状识别两部分,均需根据二值化后的图形数据进行处理。73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构图4.14子程序image_recognize()流程图图4.15子程序adc_get()流程图73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构4.3.3温度测试程序设计获取测温传感器的值,分别需要获取两个通道,子程序adc_get()流程图如图4.15所示。4.4服务通信协议与数据格式4.4.1服务通信协议(1)通信结构图4.16通信系统结构图无线采集通信系统拓扑结构如图4.16所示,由探月车、采集系统和无线接入点组成。无线网络采用标准的802.11g标准。假定设置无线网络名称为:CHANGE,无密码认证,月球基地IP:192.168.1.100,小车IP:192.168.1.101,路由器IP:192.168.1.1,网关:192.168.1.1,子网掩码:255.255.255.0。(2)底层协议本系统采用标准的TCP/IP协议完成地球基地和探月车通信,其中地球基地作为TCP的服务器端,探月车作为TCP的客户端。每次通信由探月车发出连接请求,服务器响应后建立连接,探月车和地球基地之间进行数据传输,数据传输完成后断开该次连接。在通信中,套接字(socket)网络地址类型选取在Internet上通信的网络地址类型(AF_INET),套接字类型采用流连接方式(SOCK_STREAM)和默认的网络协议。连接端口:7001。73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构(3)应用层通信协议在应用层增加ACK确认机制的通信模式来增加通信的可靠性。首先探月车向采集系统发送数据报文,地球基地收到数据报文后根据数据的内容向探月车发送一个确认数据报文供探月车处理。除传输图片数据外,应用层数据采用固定长度为40个字节的数据进行每次传输数据,数据不够的用0x00补满。图像采用两次通信过程来完成,第一次探月车发出上传图像请求报文,采集系统接受请求后返回接收请求数据报,探月车收到评分系统的接收请求数据报文后发送图像数据,图像大小为宽160像素、高128像素。(4)通信流程探月车和采集系统的通信流程如图4.17所示。主要有启动请求图4.17探月车和采集系统通信流程73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构4.4.2命令与数据格式(1)命令格式1)探月车请求格式:(同步头1)(探月车编号)(备用)(请求命令)(数据);2)采集系统反馈格式:(同步头2)(探月车编号)(备用)(反馈命令)(状态);同步头为一字节数据,同步头1=0x55,同步头2=0xAA;探月车编号为一个字节,用十六进制数表示,如35号车,用0x23,默认值为0x00;备用为一个字节,默认值为0x25;请求命令为一个字节,反馈命令为一个字节,详见表4.1所示。数据根据命令不同分为三类:测量数据、图像上传请求数据、图像数据。3)测量数据格式:(数据长度)(数据物理类型)(任务号)(测量值)数据长度指明后面的数据字节数,用16进制表示;数据物理类型指明数据是采集何种物理量,具体如表4.2所示;任务号是过程中完成的测量数据任务顺序,第一个任务的测量数据为1,第二个任务的测量数据为2,以此类推,用一个字节的16进制数表示;测量值则统一采用ASCII码表示。例如采集的温度为109.4度,完整的数据格式为:0x070x010x030x310x300x390x2E0x34,其中0x07表示后面数据长度为7,0x01表示测量的是温度,0x03表示任务号,剩下的是温度值的ASCII码;命令中没有数据上传的数据长度为0x00。4)图像上传请求数据格式:(任务号)(图像特征)(图像点阵大小)(图像列数)(图像行数)任务号是过程中完成的图像数据上传任务顺序,第一幅图像上传请求为1,第二幅图像上传请求为2,以此类推,用一个字节的16进制数表示;图像特征是上传图像的颜色和形状,用一个字节的无符号16进制数表示,如表4.3所示;图像点阵大小是上传图像的总的像素值,用无符号的整数表示;图像列数是上传图像的列值,用无符号的短整数表示;图像行数是上传图像的行值,用无符号的短整数表示。5)图像数据格式:(图像数据)图像数据采用行列扫描方法,每一个像素用16bit表示,采用RGB565格式。状态为一个字节,表明地球基地接收数据正确与否,正确时状态为1,错误时状态为0,供探月车应用程序处理。例如:探月车19号,请求启动:0x550x130x250x01,地球基地反馈为:0xaa0x139x2573 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构0xfe0x01。表4.1请求命令和反馈命令表请求命令反馈命令描述0x010xFE探月车启动出发命令0x020xFD探月车请求发送图像命令0x030xFC探月车发送图像数据0x040xFB探月车发送测量数据表4.2数据物理类型表物理类型值物理意义单位0x01温度摄氏度0x02湿度百分比0x03矿物含量百分比0x04高度或者长度米0x05其他无表4.3图像特征数据表图像特征值图像形状图像颜色0x01三角形红色0x02三角形绿色0x03三角形蓝色0x04矩形红色0x05矩形绿色0x06矩形蓝色0x07圆形红色0x08圆形绿色0x09圆形蓝色(2)探月车启动出发命令1)请求命令:0x55DDMM0x01。其中0x55是开始命令的同步头;DD是探月车的编号;MM是备用位,默认值是0x25;0x01是探月车请求启动命令。2)反馈命令:0xaaDDMM0xFECC。其中0xaa是反馈开始命令的同步头;DD是探月车的编号;MM是备用位,默认值是0x25;0xFE是反馈的启动命令,表明请求接收正确;CC是命令参数,0x00表示启动,其他值表示等待。(3)探月车请求发送图像命令1)请求发送图像命令:0x55DDMM0x02SS TTZZCCRR。其中0x55是开始命令的同步头;DD是探月车的编号;MM73 基于ARM的智能探测小车的设计与实现第四章智能探测小车控制系统软件平台架构是备用位,默认值是0x25;0x02是探月车请求发送图像命令;SS是图像顺序号;TT表示图像特征;ZZ是图像大小;CC是图像列值;RR是图像行值。2)反馈命令:0xaaDDMM0xFD。其中0xaa是反馈开始命令的同步头;DD是探月车的编号;MM是备用位,默认值是0x25;0xFD是反馈的接收发送图像命令,表明请求接收正确。3)发送图像数据:0x55DDMM0x03PPPPPP……。其中0x55是开始命令的同步头;DD是探月车的编号;MM是备用位,默认值是0x25;0x03是探月车发送图像数据;PP是探月车发送的BMP图像数据,图像的宽度为160,高为128。4)反馈命令:0xaaDDMM0xFCRR。其中0xaa是反馈开始命令的同步头;DD是探月车的编号;MM是备用位,默认值是0x25;0xFC是反馈的接收发送图像数据,表明请求接收正确;RR是反馈参数,0x01表示接收正确,0x00表示接收错误。(4)探月车发送测量数据1)发送测量数据:0x55DDMM0x04NNNN。其中0x55是开始命令的同步头;DD是探月车的编号;MM是备用位,默认值是0x25;0x04是探月车发送测量数据;NNNN是探月车发送的测量数据,数值统一采用ASCII码表示,例如采集的高度为639.46度,完整的数据格式为:0x080x040x010x360x330x390x2E0x340x36,其中0x08表示后面数据长度为8,0x04表示测量的是高度,0x01表示任务1,剩下的是高度值的ASCII码。2)反馈命令:0xaaDDMM0xFBRR。其中0xaa是反馈开始命令的同步头;DD是探月车的编号;MM是备用位,默认值是0x25;0xFB是反馈的接收发送测量数据,表明请求接收正确;RR是反馈参数,0x01表示接收正确,0x00表示接收错误。4.5本章小结本章重点介绍智能探测小车的软件系统,首先阐述智能探测小车的开发环境ARMLinux的搭建、介绍了启动代码Bootloader、内核(Kernel)以及文件系统(Yaffs)的烧录方法。然后介绍了控制系统的主程序设计流程和各模块的子程序设计流程。最后介绍了小车与地球基地之间数据传送的服务通信协议和数据格式。73 基于ARM的智能探测小车的设计与实现第五章智能探测小车控制策略研究与实验第五章智能探测小车控制策略研究与实验5.1网络配置与上位机监控软件上位机监控软件是在VisualC++6.0环境下开发实现的。上位机监控软件运行在PC机上,主要对下位机(智能探测小车控制器)实现一些监控、数据采集和配置工作。如图5.1所示。PC机(地球基地)和智能探测小车控制系统硬件通过无线传输协议建立通讯,在启动上位机软件之前,分别对无线路由器端、地球基地端、智能探测小车端进行网络配置,并成功连接。(1)无线路由器端设置注意事项:在PC机的WINXP操作系统下登录无线路由器IP:192.168.1.1。进入路由器设置界面进行设置。1)频段:1~11内任选一个,但不要选自动跳频。2)SSID号和密码要与智能探测小车的S3C2440A芯片里面的设置一致。3)注意最好不要设置密码。(2)智能探测小车端网络配置注意事项:通过PC机上的LINUX虚拟机和串口访问到智能探测小车端的操作系统,登录并且进入其LINUX命令终端。1)网络类型配置:#vi/etc/nettype.conf,进去后有两个选项:CDMADUSE=0默认;NETTYPE=?:1为有线,2为无线。此处应将NETTYPE改为22)网络地址参数配置:#vi/etc/net.conf。3)无线网络配置:#vi/etc/wifi.conf。4)#net_set:使最新的网络配置生效5)用ifconfig查看一下当前的网络配置,看看刚刚设置无线网络是否已经生效,如果没有则回查,如果生效了就与电脑相互ping一下。这里设置月球基地IP:192.168.1.102,小车IP:192.168.1.101,路由器IP:73 基于ARM的智能探测小车的设计与实现第五章智能探测小车控制策略研究与实验192.168.1.1,网关:192.168.1.1,子网掩码:255.255.255.0。端口为7001,月球车编号为0。连接好PC机端和下位机端的无线网路通讯后,启动上位机程序,上位机监控界面如图所示。首先启动预备,等待将小车放入正常的月球模拟轨道以后,点击上位机软件上的启动月球车,此时智能探测小车就会正常的开始工作,一边寻迹一边将任务点的探测任务逐一完成,并探测数据反馈回监控软件,将图像数据按任务顺序分别显示,同时将图像处理数据以及其他传感器采集的测量值通过无线网络传输到上位机软件上。所有任务结束后,可以点击停止月球车按键,使月球车停止任务。图5.1月球车上位机监控软件5.2智能探测小车红外寻迹策略研究5.2.1误差检测方法路径识别模块是智能探测小车73 基于ARM的智能探测小车的设计与实现第五章智能探测小车控制策略研究与实验系统的关键模块之,通常采用的方法是用数字反射式红外传感器,但精度一直是该方案需要解决的问题,由于光电传感器本身存在着检测距离近,不能对远方的路径进行识别,降低了对环境的适应能力,影响智能小车的速度和稳定性.而反射式红外传感器的模拟光电传感器阵列的路径检测方法,具有较高的可靠性与稳定性。红外光电传感器根据不同应用场合,有效作用距离从几公分到几十米,由于空间限制,选择可安装在电路板上的漫反射式光电传感器RPR-20。RPR-220是一种反射型光电探测器,传感器最佳作用距离在6~8mm,且具有较好的滤光性能,其内置的可见光过滤器可减小离散光、可见光对传感器的影响,实际应用中为了增加探测距离,并进一步减小日光中红外线的影响,设计用S3C2440A的PWM模块产生脉冲调制信号与红外发射接收电路,共同构成路径识别模块。通过软件处理,利用24点传感器的漫反射效应,形成线传感器阵列并使其值连续,点传感器数据处理方法如下:(5-1)其中,sen(n)为第n个电传感器连续采样5次,使sen[i]max=0、sen[i]min=0,并做中位值滤波。传感器阵列及相对误差e(n)的处理:(5-2)其中:sen(n)第n个点传感器通过A/D转换采集的轨迹信息;var(n)、var0(n)第n个点传感器相对于环境光线变化的最大与最小值,在起动前扫描获得;cent(0)是智能探测小车中轴线所处的绝对位置,取100;e(n)为传感器阵列中心点与探月车轴线的相对误差。当e(n)>0时,表示探月车中轴线偏离路径轨迹左侧,e(n)<0时,表示探月车中轴线偏离轨迹右侧。以上用A/D采样方式检测非线性模拟量的方法,能提高探月车控制的前瞻性和测量的准确性,为探月车提高运行速度,预测电机方向打下良好的基础。5.2.2PD变尺度增量控制算法智能车运行的轨迹是未知路径,但基本信息是直线、弧线的组合。控制算法实现的目标是通过改变电机的方向,在高速运行下,将路径信息平稳地保持在智能车中轴线上,此时的水平偏移量为零。对未来的路径,行进的智能车并不清楚,面对没有固定路径模型系统的控制,最好的方法是增量智能控制,通过对路径不同位置的误差评价,达到最佳控制状态,满足系统控制要求,图5.2是智能车轨迹分析示意图。73 基于ARM的智能探测小车的设计与实现第五章智能探测小车控制策略研究与实验图5.2轨迹分析图中O点为智能车在轨道上行驶时分析曲线的基点。其中:为O点线速度;为调节周期,一般控制程序设计好以后不再变化;为时间内,行进的路程;为时间内偏离路径产生的误差。根据要求,智能探测小车运行误差应最小、运行速度应尽量快.误差项是速度和探月车行进方向与路径的夹角的函数,同时与调节幅度参数后的大小有关,其关系如下:(5-3)若使变小,改变线速度显然不符合系统高要求。调节可以减小误差,但是线速度太快,电机反应不灵活,调节不及时,又会使系统冲出轨道,或产生振荡。通过分析,最佳办法是根据不同轨迹模型,选用不同运行速度,以缩短运行时间;根据不同误差大小选择不同的调节参数,改善电机的调节角度.为此,引入非线性、可变参数的调节手段,对智能车进行控制。采用鲁棒性强的PID算法进行位置闭环控制,对控制参数采用实时非线性整定,有效地克服了探月车行驶中易产生振荡、转弯时反应迟钝、机动性差的缺点。73 基于ARM的智能探测小车的设计与实现第五章智能探测小车控制策略研究与实验根据规则要求,最终衡量系统优劣的是运行时间,显然速度是重要的控制参数.实际运行过程中,只要不出赛道小车并不需要严格按轨道中轴线运行,可以去掉PID算法中容易产生积分饱和的积分环节,由PD构成主调节器.为克服小车高速走直道容易产生振荡或走弯道放映迟钝的矛盾,引入了非线性控制设计方案,使之对小偏差不敏感,大偏差控制灵活。图5.3是比例项非线性环节输出示意图。图5.3比例项非线性环节输出示意图根据检测路况信息,把外部轨迹的动力学模型,通过分析简化作为内建模型,植入控制器来构成高精度反馈控制系统.当系统中存在模型摄动或随机干扰等不确定性因素时能保持其满意功能品质,并通过非线性控制器进行舵机方向、速度调节,以缩短小车的控制响应时间。增量式PD的计算公式:(5-4)其中:为第n次输出增量;为第n次与中心位置的偏差程度;、分别为n-1、n-2次误差项[30]。利用非线性PD算法(比例项),用C语言描述:typedefstructmotorModel{intKp;//斜率值,也即比例因子intKd;//微分因子floatlastbias;floatprevbias;intspeedNormal;;//正常情况下的速度intspeed;//要发送的速度}MOTORMODEL;//初始化电机voidinit_motor(structmotorModel*motor,intKp,intKd,intspeedNormal)73 基于ARM的智能探测小车的设计与实现第五章智能探测小车控制策略研究与实验{motor->Kp=Kp;motor->Kd=Kd;motor->speedNormal=speedNormal;motor->lastbias=0;motor->prevbias=0;motor->speed=0;}//根据电机控制模型计算出电机各自的调整量voidcalc_motor(structmotorModel*motor,floatbias){motor->speed=(int)(motor->Kp*bias)+motor->Kd*(motor->lastbias-motor->prevbias)+motor->speedNormal;motor->prevbias=motor->lastbias;motor->lastbias=bias;if(motor->speed>255)motor->speed=255;if(motor->speed<-255)motor->speed=-255;}……init_motor(pMotor_L,-30,-15,150);init_motor(pMotor_R,30,15,150);……微分部分的非线性同上。Kp、Kd为可调节参数,可以根据轨迹难度、速度、光线,通过设置不同的Kp和Kd值,来改变小车寻迹的灵敏度和稳定性。对于位置误差,对不同路径模型,采用非线性、变尺度角度增量控制,对速度误差,根据内建模型和位置误差,可用PD调节器控制,此处的C语言程序中可以看到设定左右电机的Kp=30,Kd=15。73 基于ARM的智能探测小车的设计与实现第五章智能探测小车控制策略研究与实验5.3智能探测小车图像采集处理策略研究5.3.1灰度图像二值化算法(1)阈值及二值化图像二值化是图像处理的基本技术,而选取合适的分割阈值可以说是图像二值化的重要步骤。对于灰度图像,选择合适的一个或几个灰度值t(0≤t≤255),将目标和背景分开,这个灰度值t称为阈值。如果只选择一个阈值,就称为图像的二值化。二值化又称为灰度分划,凡是需要做文字识别或条纹辨认的图像,皆可利用此方式。二值化的基本过程如下:①对原始图像作中低通滤波,进行图像的预处理,降低或去除噪声;②用算法确定最佳阈值③凡是像素的灰值大于这个阈值的设成255,小于这个阈值的设成0。这样处理后的图像就只有黑白两色,从而将灰度范围划分成目标和背景两类,实现了图像的二值化。(2)阈值选取算法的分类一般地,针对图像像素的阈值选取方法可分为全局阈值算法和局部阈值算法类。全局阈值算法是根据整幅图像选取一个固定的阈值将图像二值化。常用的全局阈值算法有大律法(最大类间方差法或Otsu法)等。全局阈值算法比较简单,实现比较容易,适用于图像的灰度直方图有明显的双峰,此时可选灰度直方图的谷底对应的灰度值作为最佳阈值。但当图像有噪声或光照不均匀时,图像的灰度直方图往往没有明显的双峰或有多个峰,此时该方法受到极大的限制,可采用局部阈值算法。局部阈值算法是将图像划分为若干子图像,结合当前考察的像素点和其邻域像素点的灰度值,确定考察点的阈值。常用的局部阈值法有Bernsen算法等。使用局部算法可以图像的二值化效果更好,抗噪声能力更强。(3)Otsu算法(最大类间方差法)由于在试验时的环境为背景纯白色,而拍照物为规则高亮单色,因此我们采用Otsu法进行二值化。最大类间方差法是由Otsu于1979年提出的,是基于整幅图像的统计特性,实现阈值的自动选取的,是全局二值化最杰出的代表。Otsu算法的基本思想是用某一假定的灰度值将图像的灰度分成两组(或者叫两类),当两组的类间方差最大时,此灰度值就是图像二值化的最佳阈值。设图像有M个灰度值,取值范围在0~M-73 基于ARM的智能探测小车的设计与实现第五章智能探测小车控制策略研究与实验1,在此范围内选取灰度值t,将图像分成两组G0和G1,G0包含的像素的灰度值在0~t,G1的灰度值在t+l~M-1,用N表示图像像素总数,n表示灰度值为i的像素的个数,则:每一个灰度值i出现的概率为:Pi=ni/N(5-5)G0和G1类出现的概率及均值为:概率:,(5-6)均值:,(5-7)类间方差:(5-8)最佳阈值T就是使类间方差最大的t的取值,即Otsu算法可这样理解:阈值T将整幅图像分成前景和背景两部分,当两类的类问方差最大时,此时前景和背景的差别最大,二值化效果最好。Otsu算法可以得到比较理想的分割效果,分割效率也比较高,此法选出来的阈值比较稳定,分割质量有一定的保证,因而得到广泛的应用,是较为实用的全局二值化算法。但当背景本身的灰度反差极大时,例如由于光照引起的背景具有明显亮点的情况,Otsu算法容易把背景本身当作两类来处理,此时用这种算法不能正确地分出前景和背景。Bersen算法是典型的局部二值化算法,分割效果比较清晰,可以把图像正确地二值化[31]。5.4智能探测小车温度采集策略研究5.4.1环境温度测量环境温度的测量是通过红外温度传感器TS118-3内部的热敏电阻Ni1000来实现的,环境温度的测温原理图如图3.15所示,其通过外加电压将与环境温度相关的电阻信号转换为的电压信号经S3C2440内部的A/D转换器转换为数字信号,然后通过测温程序可得到环境温度值。程序流程如图5.4所示。73 基于ARM的智能探测小车的设计与实现第五章智能探测小车控制策略研究与实验图5.4环境温度测量流程图Ni1000具有良好的线性测温效果,其电阻值在0℃~100℃之间可用公式(5-9)来表示:(Ω)(5-9)式(5-8)中,T为环境温度,单位为℃。经测温电路处理后,环境温度与A/D输入电压之间的关系如式(5-10):(V)(5-10)在环境温度测量程序中通过平均值滤波提高转换精度,根据A/D转换结果经可得出Vin进而可得出环境温度。5.4.2目标温度测量目标温度的测量也是通过热释电红外传感器TS118-3实现的,传感器TS118-3的输出电压与被测目标温度和环境温度的温差成一定关系,基本上当环境温度不变时,目标温度每上升1℃,其输出电压上升30~60μV。目标温度的测温原理图如图3.15所示,通过两级放大将传感器的输出电压放大到一定值后输入进S3C2440内部的A/D转换器。程序中通过A/D转换结果经测温算法后可得到目标温度。程序流程如图5.5所示。图5.5目标温度测量流程图73 基于ARM的智能探测小车的设计与实现第五章智能探测小车控制策略研究与实验TS118-3与被测目标温度的关系曲线如图5.6所示。图5.6TS118-3测温曲线从图5.6中可以看出,TS118-3输出电压与被测温度之间成非线性关系,通过调整电路可使用A/D转换器输入电压与被测温差电势之间成式(5-11)的关系:(V)(5-11)式(5-11)中为温差电势,为输入A/D的电压。从公式(5-10)可看出输入A/D的电压与温差电势成正比,而温差电势与被测目标温度成非线性关系,因此与目标温度成非线性关系。为得到目标温度在测温程序中对目标温度进行三次按拟合,经过温度补偿后可以得到较为准确的目标温度,其中当环境温度为25℃时,目标温度与温差电势的三次拟合曲线如图5.7所示。图5.7环境温度为25℃时,被测温度与温差电势的三次拟合曲线73 基于ARM的智能探测小车的设计与实现第五章智能探测小车控制策略研究与实验物体温度的测试受测试电路板放大电路的控制,为了实现温度的准确性,放大电路中有三个可调电阻,来调节电路。为了实现温度的准确,首先采集温度数据10次,求平均值,程序如下:adc_get(fd_adc,2,&ain_2,10,30000);adc_get(fd_adc,3,&ain_3,10,30000);对采集回的数据按照计算温度的公式计算的同时,进行校正,经过测试,设定了以下的计算公式计算环境温度 t_amb=((3.3/1023*ain_2)/((base_v-3.3/1023*ain_2)/R4)-1000)/6.17;计算目标温度 t_obj=(((3.3/1023*ain_3)/G2-base_v-0.000022)/G1-0.000022)/0.00004+t_amb;其中G1为第一级放大倍数,G2为第二级放大倍数,R4为电阻值,base_v为基准电压。如表5.1所示表5.1测温电路调试调试内容调试对象调试结果第一级放大倍数红外测温电路板360第二级放大倍数红外测温电路板1.178基准电压红外测温电路板1.35.5智能探测小车测试实验如图5.8所示,实验道路路面模拟月球表面,用灯箱布制作而成,跑道路径为白色,中心有连续黑线作为引导线,黑线宽30mm。跑道全长20m,跑道上采用不同组合的黑白元素做路障,例如路障1是黑白相间的斑马线,路障2是圆圈和交叉线路障3则是黑白相间的箭头,无论多么复杂的路况,智能探测小车均要克服重重险阻,找到正确的轨道,才能完成记下来的任务。途中A、B、C、D四处将放四个任务标志物代表月球上的任务拍照点,黑色宽条加上中间的白色缺口元素表明到了拍照点。小车在拍照点要完成相应的图像采集任务,并将图像完成的传回地球基地,同时对图像进行颜色和形状的分析,数据也将传回上位机软件。另外在开普勒死火山处需要通过温度测试模块将具体的温度值探测到并传回。最后任务将在D处结束。73 基于ARM的智能探测小车的设计与实现第五章智能探测小车控制策略研究与实验图5.8模拟月球表面轨道如图5.9所示,智能探测小车顺利完成任务并与地球基地(PC机和上位机软件)进行通信,成功将数据返回至上位机监控软件,得到四个任务的图形、判别图形颜色形状并获得探测点温度值。图5.9上位机上的数据监控结果73 基于ARM的智能探测小车的设计与实现第五章智能探测小车控制策略研究与实验5.6本章小结本章包括探月上位机监控软件介绍、智能探测小车控制策略的研究以及智能探测小车测试实验结果三部分内容,是对第四部分软件设计的补充和延伸。本章先简述了智能探测小车、无线路由服务站和地球基地三者的网络配置方法,并介绍了上位机监控软件的友好界面。其次分别对智能探测小车红外寻迹算法——PD变尺度增量控制算法、智能探测小车图像采集处理算法——灰度图像二值化算法以及智能探测小车温度采集策略。最后给出了智能探测小车的模拟地图和全任务检测数据结果。73 基于ARM的智能探测小车的设计与实现第六章结束语与展望第六章结束语与展望6.1结束语基于ARM的智能探测小车的设计与研发从2009年10月开始,到今天结束历时一年,从最初的方案制定、开题报告的撰写,到传感器的选择、电路设计、元器件的购买、焊接、硬件调试、软件编写、操作系统移植、控制策略的确定、算法的实现和调试,作者付出了自己最大的努力,完成了整个自寻迹机器人小车的系统研发。最终设计实现了一种低功耗、高性能嵌入式ARM微处理器和嵌入式实时操作系统LINUX相结合的智能探测小车主板系统,设计了性能优越的智能探测小车控制系统,并最终通过了无线传输、红外寻迹、图像采集处理以及温度控制等功能。实验结果表明,在该控制系统下,智能探测小车具有良好探测性能,丰富的扩展功能,为机器人车的进一步研究提供了更高的平台。尽管作者研究设计了小车软硬件平台,但还不是十分完善。如寻迹部分可加入CMOS摄像头,他将给系统提供更多的路径信息。另外,可以加入加速度传感器来控制和提高小车的性能,在图像采集和处理中的算法还不是很完善,对于光线较差环境的滤波性能还有待提高。模拟的智能探测小车距离真实的探月车还有很远的距离,在传感器、无线通信、乃至整个机械部分都有很大的提升空间。6.2展望智能探测小车的发展折射出我国的机器人产业的长足发展,但是与世界发达国家相比,还有一定的差距,如可靠性低于国外产品。机器人应用工程起步较晚,应用领域窄,生产线系统技术与国外比有差距。我国机器人产业要快速发展,研制单位必须和需求紧密结合,让机器人走进工厂和家庭,实现真正的产业化。把发展中国机器人产业纳入政府重要产业政策中,引导和扶持企业进行产业和产品结构调整,加机器人产业化进程。作者研发的智能探测小车73 基于ARM的智能探测小车的设计与实现第六章结束语与展望是轮式机器人中的一种,而整个机器人行业的发展还需要更多的科研工作者付出努力。但随着通信电子、计算机、人工智能和控制理论的发展,作者相信,在不久的将来,越来越高级的机器人必将给人类社会带来更大的便利,相信在未来的世界里机器人将无处不在。相信未来中国人的探测器必将成功登上月球、火星乃至更遥远的星球。73 基于ARM的智能探测小车的设计与实现参考文献参考文献[1]邹永廖.嫦娥奔月——中国的探月方略及其实施[M].上海:上海科技教育出版社,2007[2]蔡鹤皋.机器人将是21世纪技术发展的热点[J].湖北:中国机械工程,2000(2):58-61[3]蔡自兴.21世纪机器人技术的发展趋势[J].南京:南京化工大学学报,2000(4):73-79[4]蒋新松.未来机器人技术的发展方向[J].北京:机器人技术与应用,1997(02):2-5.[5]朱毅麟.太空机器人浅说[J].北京:国际太空,2002(l):25-28[6]范圣一.ARM原理与嵌入式系统实战[M].北京:机械工业出版社,2007[7]许信顺,贾智平.嵌入式Linux应用编程[M].北京:机械工业出版社,2007[8]田泽编著.《嵌入式系统开发与应用教程》[M].北京:北京航空航天大学出版社,2005[9]周广荣.基于ARM视频采集系统的设计与实现:[D].大连:大连海事大学,2007[10]马忠梅,李善平,慷慨,叶楠著.ARM&Linux嵌入式教程[M].北京:北京航空航天大学出版社,2004[11]金西,黄汪.嵌入式Linux技术的现状与发展动向.http://www.ahete.gov.cn[12]于明,范书瑞,曾祥烨编著.《ARM9嵌入式系统设计与开发教程》[M].北京:电子工业出版社,2006[13]王田苗,魏洪兴.嵌入式系统设计与实例开发[M].北京:清华大学出版社,2008[14]SamsungElectronicsCo.,Ltd.S3C2440AA32-BitCMOSMicrocontrollerUser"sManual,Revision1[J/OL].Korea:SamsungElectronicsCo.,Ltd,200773 基于ARM的智能探测小车的设计与实现参考文献[15]陈渝.嵌入式系统原理及应用开发[M].北京:机械工业出版社,2008[16]NationalSemiconductor.LM2576User’smanual[J/OL].USA:NationalSemiconductor,1999[17]NationalSemiconductor.LM1117User’smanual[J/OL].USA:NationalSemiconductor,2004[18]Rohm.Reflectivephotosensor(photoreflector)RPR220[J/OL].JAPAN:Rohm,2005[19]STMicroelectronics.STM32F10xStandardPeripheralsFirmwareLibrary[J/OL].Europe:STMicroelectronics,2009[20]邹小兵.移动机器人原型的控制系统设计与环境建模研究[D].湖南:中南大学,2005[21]刘瑞新.ProtelDXP实用教程[M].北京:机械工业出版社,2003[22]谷树忠,闰胜利.ProtelDXP实用教程原理图与PCB设计[M].北京:电子工业出版社,2003[23]姚志成.单片机系统实用抗干扰技术[M].北京:人民邮电出版社,2003[24]诸邦田.电子电路实用抗干扰技术[M].北京:人民邮电出版社,1994[25]王增强.基于ARM的自主移动的嵌入式系统研究开发[D].广东:广东工业大学,2005[26]孙琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社,2006[27]詹荣开.嵌入式系统BootLoader技术内幕http://www.128.ibm.com/developeworks/cn/[28]倪继利.CPU源代码分析与芯片设计及Linux移植[M].北京:电子工业出版社,200773 基于ARM的智能探测小车的设计与实现参考文献[29](美)拉芙著,陈莉君等译.Linux内核设计与实现(第二版).北京:机械工业出版社,2006[30]王玲,孙波.红外光电传感器自动寻迹智能车的设计与实现[J].沈阳:沈阳理工大学学报.2010(2):58-59[31]孙少林,马志强.灰度图像二值化算法研究[J].河北:价值工程,2010(5):142-14373 基于ARM的智能探测小车的设计与实现攻读硕士学位期间公开发表的学术论文攻读硕士学位期间公开发表的学术论文1.王栋.“基于Multisim10的单片机仿真设计研究”.《科技与生活》2009年11月2.王栋.“浅谈低噪声射频放大器的设计”.《装备制造技术》,2009年12月73 基于ARM的智能探测小车的设计与实现致谢致谢经过几个月的查找资料、整理材料、写作论文,终于完成了论文。看着厚厚的札记和研究期间的纪录,求学期间的点点滴滴历历涌上心头,时光匆匆飞逝,三年的努力与付出,随着论文的完成,工程硕士的学习生活将划上句号。看着心血凝聚而成这么薄薄的一本,欣慰和高兴之余,感慨颇多。首先衷心感谢尊敬的导师陈蕾老师,因为论文是在陈老师的悉心指导下完成的。陈老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇尚风范,朴实无华、平易近人的人格魅力对我影响深远。本论文从选题,开题到完成定稿,每一步都是在陈老师的指导下完成的,倾注了陈老师的大量心血。感谢苏州大学多位老师的教导与帮助,是他们的辛勤付出给了我宝贵的新知识,他们渊博的知识让我受益匪浅。同时感谢我的同事兼同学们,在论文完成过程中给予我很多的帮助;感谢我的家人在我最忙碌的时候给予我理解、支持和鼓励,这些都成为我向前迈进的动力。三年的时光如白驹过隙,我身边所有的老师、同学、朋友和亲人,谢谢三年来对我的关照与宽容,一起走过的缤纷时代,将会是我一生最珍贵的回忆。最后,要感谢在百忙中抽出时间对本文进行评审并提出宝贵意见的各位专家。谢谢大家!73 基于ARM的智能探测小车的设计与实现致谢73'