基于CCD智能车入库与出库系统的软件设计毕业论文.doc_第1页
基于CCD智能车入库与出库系统的软件设计毕业论文.doc_第2页
基于CCD智能车入库与出库系统的软件设计毕业论文.doc_第3页
基于CCD智能车入库与出库系统的软件设计毕业论文.doc_第4页
基于CCD智能车入库与出库系统的软件设计毕业论文.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于CCD智能车入库与出库系统的软件设计Hardware Design of Incoming and Outgoing Control System Based on CCD Intelligent Car总 计: 41 页表 格: 1 个插 图 : 38 幅基于CCD智能车入库与出库系统的软件设计 摘 要本设计在全国大学生飞思卡尔摄像头组比赛的基础上新增加了智能车入库与出库的功能,采用MC9S12XS128单片机作为智能小车的检测和控制核心;以CodeWarrior V5.0软件为开发平台,采用CCD摄像头检测路上的黑线,将视频信号送单片机,编写图像处理算法提取出黑线中心位置,并计算出车身的当前位置;光电编码器检测智能车的速度,制定控制策略及控制算法对舵机及电机的进行控制,控制小车沿着黑线按预定的速度完成出入库动作。关键词 MC9S12XS128单片机; CCD摄像头 ;入库出库 ;黑线Software design of incoming and outgoing control system based on CCD intelligent carElectrical engineering and automation Wang Bing-haoAbstract: This design in the national college students freescale camera based on the match in group new added intelligence incoming and outgoing car function, the MC9S12XS128 single chip microcomputer as intelligent car detection and control core; To CodeWarrior V5.0 software for the development platform, the CCD camera detection on the road in the black line, will video signal to send a single-chip microcomputer, write image processing algorithm to extract the center of the black line, and calculates the body of the current position; Photoelectric encoder intelligent detection the speed of the car, formulate control strategy and control algorithm and the steering gear motor to control, the control car along the black line in a predetermined speed for the complete action.Key Words: MC9S12XS128MCU CCD camera; Outgoing Treasury; The black line目 录1引言11.1 设计意义11.2 设计研究内容及主要工作22 皮带机监控系统整体设计方案32.1 皮带输送机32.2 监控系统总体设计32.2.1 监控系统的组成结构32.2.2 上位机监控系统42.2.3 下位机控制系统42.3 监控界面设计43 欧姆龙PLC简介53.1 PLC一般结构53.2 内部寄存器及I/O配置54 上位机与PLC通讯及监控程序的设计方案及功能64.1 系统的设计方案64.1.1 PLC的选择64.1.2 编程软件的选择64.1.3 设计方案64.2 通讯与监控系统的功能74.3 欧姆龙CPM2AH系列PLC的通讯协议85 PLC程序设计85.1 多级皮带机双向控制PLC设计方案85.2 PLC程序设计105.2.1 主程序105.2.2 逆流启动程序段105.2.3 顺流启动程序段116 现场触摸屏监控系统设计126.1触摸屏136.1.1 触摸屏技术136.1.2 触摸屏的分类13 6.1.3 触摸屏的应用136.2 MT500触摸屏简介146.3 EB500 组态编程软件156.4 触摸屏画面的设计156.4.1 EB500触摸屏画面的设计流程156.4.2 画面组态17结束语25参考文献26附录27致谢351 引言 随着机器人技术的日新月异,机器人应用领域也已从工业走向普通生活。机器人技术已经在人们的生活中越来越发挥着重要的作用。作为机器人中的智能小车,有着其特殊的运动功能,即可以自动地识别路线,巡线运动。同时也可以向某个特定位置运动,并调整自身的位置达到最佳运动效果。智能小车动机器人其高灵活度,势必会在机器人领域发挥不可代替的作用1。 智能小车是移动机器人中的一部分,其高灵活性和准确性越来越突出其优越性。现在在智能小车方面使用较多的是RoboCup游中国机器人和飞思卡尔大赛。通过增加道路传感器,设计电机驱动电路,编写相应软件以及装配模型车,制造一个能够自主识别道路的模型汽车。该项目涵盖了控制,模式识别,传感技术,电子,电气,计算机,机械等多个学科交叉的大学生课外科技创新性比赛。 RoboCup以机器人足球(如图1所示)作为中心研究课题,通过举办机器人足球比赛,旨在促进人工智能、机器人技术及其相关学科的发展。RoboCup的最终目标是在2050年成立一支完全自主的拟人机器人足球队,能够与人类进行一场真正意义上的足球赛。 RoboCup的最终目标是:到21世纪中叶,一支完全自治的人形机器人足球队应该能在遵循国际足联正式规则的比赛中,战胜最近的人类世界杯冠军队。 在机器人高速发展的今天,机器人的使用越来越广泛,如用于军事、勘探、工业和家居等等。中国要想变成世界强国,也必须重视起机器人技术。同时机器人技术不能只靠少量研究人员,必须从学生时代培养机器人技术。只有这样中国的机器人事业才会涌现大批的人才,能够加速机器人技术的发展1。现代机器人如图1所示:图1现代机器人1.1 设计意义 随着机器人技术的发展,机器人从工业走进生活中。国外很多国家已经研制出很多全方位机器人,应用领域不断扩大,如导游机器人、导购机器人、电动轮椅、平稳的测量装置、医院巡视病房机器人和仓库作业机器人等。这些机器人很大程度上代替了人大劳动,提高了人的生活质量。 越来越多的交通问题专家认为,交通系统的诸多问题的根源就出在驾驶员身上。驾驶员的技术水准、法制观念、身体状况和对交通环境的适应能力等因素都直接影响行车的效果,进而影响交通系统的运行状况。解决问题的出路在于汽车驾驶的自动化,即用自动控制器取代驾驶员。由于交通环境信息的复杂化和多变性、交通任务的多样性等原因,汽车控制策略必须基于智能控制理论来设计。 21世纪的汽车概念将发生根本性的变化。现在的“汽车”是带有一些电子控制的机械装置,将来的“汽车”将转变为带有一些辅助机械的机电一体化装置,汽车的主要部分不再仅仅是个机械装置,它正向消费类电子产品转移。同时,智能汽车在传统汽车上配备了远程信息处理器、传感器和接收器,通过无线网络获取前方交通状况信息,引导汽车加速或减速。这样,汽车就能更为平稳地行驶,避免不断刹车、启动的动作,以降低油耗。随着汽车电子控制技术的发展,中国的汽车工业将面临着巨大的发展机遇和挑战,开展智能汽车技术的研究与开发工作具有重要意义2。1.2 设计研究的前景 汽车在行驶过程中,必须得到的信息包括车辆自身状况的信息、道路信息、近邻行驶汽车的信息及导航定位信息等。这些信息一般被外界噪声所干扰,如何精确、实时、有效地采集到这些信息,并进行处理,需要特别研究。 目前,在智能控制领域内,已经提出了模糊控制理论、神经控制理论、专家控制理论、分层递阶控制理论等智能控制方案。所有这些智能控制策略,其核心思想就是模仿人的思维和行动,去完成或部分完成只有人类专家才能完成的控制任务。设计一个“类人”的汽车控制器,是智能汽车控制策略研究中的终极方案。但由于汽车驾驶任务的复杂性,研究设计这种汽车智能控制器的任务是十分艰巨的。 智能汽车作为一种自动或半自动交通工具系统,如何选择交通路线、如何识别道路、如何精确实时地确定自己的地理位置、如何记录自己的行车路线等问题,是当前研究的技术热点,而数字导驶技术就是解决这些问题的综合方案。从硬件上讲,车载计算机、控制器、显示器、数字地图、定位系统是必不可少的。车辆数字导驶技术研究已经取得了一些结果,但是要完全彻底地解决问题,还需要做很多研究2。2 CCD智能车系统整体设计方案智能车整体方案如图2所示:图2 智能车整体方案图智能车出入库系统总体路线图如图3所示: 图3 智能车出入库系统总体路线图 本系统智能小车的运动路径为:小车由甲库出发向右转弯沿外围车道跑两圈,最后进入乙车库停下,整个系统的软件部分包括摄像头图像采集,图像处理,黑线提取,路径识别,方向控制,圈数计算,液晶显示等部分组成。小车通过计算摄像头采集到的十字线的次数来计算圈数。各部分功能的软件实现将在下边逐一介绍。 本系统的软件部分共分为两大类:智能车程序和上微机监控程序。由于摄像头组的数据量较大,因此在做上位机监控的时候,无法使用无线通信将赛道的图像信息传给上位机。最后的方案是:在调整摄像头采集的点数的多少的时候,实时性不强,可以直接通过串口将图像传给电脑,在电脑上用软件将图像还原。3 MC9S12XS128 16位单片微型处理器简介3.1单片机的性能和特点单片微型计算机就是将CPU、RAM、ROM、定时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机,因此,一块芯片就构成了一台计算机。单片机的性能: (1)总线速度高达40 MHz; (2)128 KB程序Flash和8 KB DataFlash,用于实现程序和数据存储,均带有错误校正码(ECC); (3)可配置8位、10位或12位ADC,3s的转换时间; (4)内嵌MSCAN模块用于CAN节点应用,内嵌支持LIN协议的增强型SCI模块及SPI模块; (5)4通道16位计数器; (6)出色的低功耗特性,带有中断唤醒功能的10,实现唤醒休眠系统的功能; (7)8通道PWM,易于实现电机控制3。单片机特点: (1)体积小、重量轻、功耗低、功能强、性价比高。可嵌入各种设备中组成以之为核心的嵌入式系统。 (2)数据大都在单片机内部传送,运行速度快,抗干扰能力强,可靠性高。 (3)结构灵活,易于组成各种微机应用系统。 (4)应用广泛,既可用于工业自动控制等场合,又可用于测量仪器、医疗仪器及家用电器等领域3。MC9S12XS128最小系统板外观图如图4所示 图4 MC9S12XS128最小系统板外观最小系统板引脚定义如表1所示P1P21VCC2VCC1GND2GND3RS-232R04RS-232T03NC4NC5PJ76PJ65VRL6VRH7SCK08MOSI07RXD18TXD19SS010MISO09AN0710AN0611PM112PM011AN0512AN0413PP714PP513AN0314AN0215PP416PP315AN0116AN0017PP218PP117PA718PA619PP020PT019PA520PA421PT122PT221PA322PA223PT324PT423PA124PA025PT526PT625PB626PB527PT728PB027PE428PB729PB130PB229PE330PE231PB332PB431XIRQ32IRQ表1 最小系统板引脚定义MC9S12XS128封装引脚图如图5所示:图5 MC9S12XS128封装引脚图3.2 MC9S12XS128单片机各模块功能3.2.1 PWM模块 PWM调制波有8个输出通道,每一个输出通道都可以独立的进行输出。每一个输出通道都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器和两个可供选择的时钟源。每一个PWM输出通道都能调制出占空比从0-100%变化的波形。PWM的主要特点有: (1)它有8个独立的输出通道,并且通过编程可控制其输出波形的周期。 (2)每一个输出通道都有一个精确的计数器。 (3)每一个通道的PWM输出使能都可以由编程来控制。 (4)PWM输出波形的翻转控制可以通过编程来实现。 (5)周期和脉宽可以被双缓冲,当通道关闭或PWM计数器为0时,改变周期和脉宽才起作用。 (6) 8字节或16字节的通道协议。 (7)有4个时钟源可供选择(A,SA,B,SB),他们提供了一个宽范围的时钟频率。 (8)通过编程可以实现希望的时钟周期。 (9)具有遇到紧急情况关闭程序的功能。 (10)每一个通道都可以通过编程实现左对齐输出还是居中对齐输出3。3.2.2 A/D转换模块 (1)A/D转换的过程是模拟信号依次通过取样,保持和量化,编码几个过程后转换为数字格式。 a)取样与保持:一般取样与保持过程是同时完成的,取样-保持电路的原理图如下图所示,由输入放大器A1,输出放大器A2,保持电容CH和电子开关S组成,要求;原理是:当开关闭合时,电路处于取样阶段,电容器充电,由于,所以输出等于输入;当开关断开时,由于输入阻抗较大而且开关理想,可以认为没有放电回路,输出电压保持不变。取样保持电路如图6所示:图6 取样保持电路取样保持以均匀间隔对模拟信号进行抽样,并且在每个抽样运算后在足够的时间内保持抽样值恒定,以保证输出值可以被转换器精确转换。)量化与编码:量化的方法,一般有舍尾取整法和四舍五入法,过程是先取项量化单位,量化单位取值越小,量化误差的绝对值就越小,将量化后的结果用二进制码表示叫做编码。 (2)转换器的技术指标)分辨率: 分辨率说明转换器对输入信号的分辨能力,理论上,位转换器能区分的输入电压的最小值为满量程的。也就是说,在参考电压一定时,输出位数越多,量化单位就越小,分辨率就越高。的模块中,若输出设置为位的话,那么转换器能区分的输入信号最小电压为.。)转换时间:转换器按其工作原理可以分为并联比较型(转换速度快级),逐次逼近型(转换速度适中级),双积分型(速度慢抗干扰能力强)。不同类型的转化的转换器转换时间不尽相同,的模块中,位数字量转换时间仅有,位数字量转换时间仅有。内置了两组位位的模块,和,共有个模拟量输入通道,属于逐次逼近型转换器3。3.2.3 模块增强型捕捉计时器模块(ECT)在标准定时器的基础上增加了一些特点,用以扩展它的应用范围,特别是在汽车方面。基准计时器的核心仍然是一个为的可编程计数器,其时钟源来自一个预分频器。该计时器可以被应用于多个方面,包括在对输入波形进行测量的同时产生一个输出波形。波形的脉宽可以在几微妙到数秒的范围变化。增强型定时器模块()的结构图如下,功能相当于高速的口,由一个位预分频器,一个位自由运行计数器,个位通道,2个16位脉冲累加器以及一个16位模数递减计数器组成。ECT模块结构框图如图7所示: 图7 ECT模块结构框图 ECT实际上是一个16位的可编程计数器,它的基本时钟频率可以通过预分频器设置,用于产生波形输出,测量输入波形,统计脉冲个数,可以作为定时中断功能和独立时钟基准。运行模式停止:由于时钟停止,计时器和计数器均关闭。冻结:计时器和计数器均保持运行,直到TSCR的TSFRZ位被置1.等待:计数器保持运行,直到TSCR的TSWAI位被置1.正常:计时器和计数器均保持运行直到TSCR的TEN位和MCCTL的MCEN位被分别清03。3.3 应用软件简介CodeWarrior软件开发环境介绍3.3.1 CodeWarrior软件开发环境 在整个开发调试过程中,使用Metrowerks公司为MC9S12 系列专门提供的全套开发工具(Freescale Codewarrior IDE 4.6)。这是一套用C语言进行编程的集成开发环境本文智能车定位系统的软件设计部分就是在此开发环境下完成的。 Codewarrior 是由Metrowerks 公司提供的专门面向Freescale 所有MCU 与DSP 嵌入式应用开发的软件工具。其中包括集成开发环境IDE、处理器专家、全芯片仿真、可视化参数显示工具、项目工程管理、C 交叉编译器、汇编器、链接器以及调试器。 CodeWarriorIDE 能够自动地检查代码中的明显错误,它通过一个集成的调试器和编辑器来扫描你的代码,以找到并减少明显的错误,然后编译并链接程序以便计算机能够理解并执行你的程序。每个应用程序都经过了使用象CodeWorrior 这样的开发工具进行编码、编译、编辑、链接和调试的过程。Metrowerks Codewarrior IDE 中的mc9s12dg128.h 文件对所有寄存器对应的存储映射地址都 进行了宏定义,开发者在软件开发时直接调用这些宏就可以了。CodeWarrior的主窗口如图8所示图8 CodeWarrior的主窗口3.3.2 USBDM介绍 新款BDM(Background Debug Mode)调试器是专门为Freescale 公司的基于HCS08,HCS12 和ColdFire V1 内核的处理器设计的,用USB 口接PC 机,命名为USBDM。程序下载器外观如图9所示图9 程序下载器外观 (1)USBDM 使用说明: USBDM 采用了Freescale 公司新一代的S08 内核的带USB 接口单片机:MC9S08JM60CLD(或者MC9S08JS16CWJ),比起上一代OSBDM 和TurboBDM 等,新款的USBDM 的USB 接口速度由以前的1.5Mbps 提高到了12Mbps,在下载S19代码,调试运行时速度明显提高,同时USBDM 吸取了上一代BDM 调试接口的经验,更加可靠,bug 更少。 如下图是USBDM 调试器内部的照片,右侧是USB 标准B 型接口,接用户的PC 端USB 主机接口。左侧是6 芯 BDM 调试接口,通过一个6 芯的扁平电缆连接用户目标板。USBDM内部示意图如图10所示图10 USBDM内部示意图 靠近左侧6 芯BDM 调试电缆插座下方,有一个J4 的3 针的跳线,用来选择BDM 调试接口中的BDM 信号是连接到6 芯BDM 调试头的信号线1,还是接信号线3。Freescale 定义使用信号线1,此时若用户误将6 芯的扁平电缆与用户目标板插反,会导致单片机调试信号线KBGD 与Vcc 短路,损毁单片机/BDM。建议用户将目标板上的BKGD 调整到3,以避免误操作引起的损坏。 (2)USBDM 驱动安装 新款的USBDM 能不修改任何硬件,也不需要更改固件就能支持HCS08,HCS12 和ColdFire V1 内核的任何Freescale 公司的单片机。当用户第一次使用USBDM 连接到PC 的USB 端口时,系统会提示由用户提供USBDM 的驱动。驱动随USBDM 的光盘提供,放在了/USBDMrelease 目录下面的Driver 目录下,用户需要指定该目录,让Windows 在该目录下寻找合适的驱动.安装驱动的过程见附录(附录D) 新款的USBDM 能够适应不同的内核的单片机,需要在不同版本的CodeWarrior 安装目录下安装不同的DLL 文件。使用的软件是CodeWarrior for HCS12 V4.7(或V5.0)时,要将文件tbdml.dll 复制在CodeWarrior for HCS12 V4.7(5.0)proggdi 目录下,在调试时选择TBDML 调试接口即可。下面是建立一个为MC9S08GT8A 单片机的工程,并且调试的过程的示意:点击“新建工程”弹出如下窗口新建工程窗口如图11所示:图11 新建工程窗口处理器类型选择窗口如图12所示图12 处理器类型选择窗口程序编辑器主窗口如图13所示:图13 程序编辑器主窗口调试程序时的过程示意如图14所示:图14 下载程序窗口程序在线调试窗口如图15所示图15 程序在线调试窗口3.4拍照软件拍照软件主窗口如图16所示图15 拍照软件主窗口 此软件在智能车制作的初期,调试摄像头用的。刚开始制作的时候,不知道摄像头的视野以及采集视频的效果,可以使用此软件进行测试,点击界面上的捕获,此程序开始采集图像,采集完成之后,通过USB串口将图像传给上位机,处理之后显示出来,在界面中点击“捕获图像”,可以将图像保存在硬盘上,文件的保存路径为d:My DocumentsCCD照片。使用拍照软件拍摄的赛道图像如图16所示: 图16使用拍照软件拍摄的赛道图像4智能车程序设计智能车程序的总体设计方案如图17所示:图17智能车程序总体设计方案图4.1图像的采集处理 为了提高程序的执行效率,节省程序的执行时间,图像的采集和处理是放在一块进行的。前面提到过摄像头旋转180度放置,即摄像头采集到的第一行图像是最靠近小车的图像,摄像头正常放置时所采的图像如图18所示:图18 摄像头正常放置时所采的图像摄像头旋转180度放置时所采的图像如图19所示图19 摄像头旋转180度放置时所采的图像 摄像头从左上方向右开始扫描,由于摄像头翻转了180度,实际上摄像头是从相对于小车来说的右下方开始向左上方扫描,这样采集到的图像就成了如图所示的状态,这样做有什么好处呢? 由于小车近处的图像比较清晰,并且干扰较少,近处的黑线比较好找,只要找到近处的黑线,再根据近处的黑线的位置来搜索远处的黑线,提取的黑线受到的干扰就少,算法简单且提取到的黑线的正确率非常高。 单片机的处理能力有限,所以,采集图像的时候每5行采集1行,这样就会有4行不采集,我们用这4行的时间来进行图像的处理,因此,我们需要先将最好处理的地方即离小车最近的地方先采集过来进行处理,这样干扰较少,以便对后面的图像进行搜索。将摄像头旋转180度之后正好满足这样的条件。 综上所述,摄像头旋转180度之后,能在采集图像的同时对图像进行处理,缩短了单片机的处理时间。4.1.1图像采集与处理的主程序流程图图像采集与处理的主程序流程图如图20所示开始 场信号控制策略行信号对上一行采集的图像进行处理,提取黑线中心其它的一些处理是是否否 图20 图像采集与处理的主程序流程图4.1.2场中断流程图: 在采集图像的过程中,上电之后的第一帧不采集,主要是因为刚上电时,电压不稳定,干扰较多。除第一帧之外,处理的时候分为奇场和偶场,奇场进行图像采集和处理,偶场将field置位,在主循环中进行舵机和电机的控制等一些列的运算。场中断流程图如图21所示: 单片机捕捉到场同步信号进入场中断第一帧奇偶场图像采集前的初始化准备进行图像采集相关变量的初始化将field置为true返回是否奇场偶场图21 场中断流程图 4.1.3行中断程序流程图 行中断程序流程图如下,图中的m和n为全局变量,用于控制采集的第几行和每隔几行采集一次。变量n每当程序进入行中断时自动加1,等于5时置0;变量m为当n为5时加1,在场中断中置0当n为5的时候开始采集图像,表示每隔5行采集一次,m-6表示的是采集的第几行。从图中可以看出来,当m=5的时候才进行采集,也就是说,经过了25个行中断才开始采集,这是因为图像的前二十多行为行消隐信号,并不是真正的视频信号,不能采集。行中断程序流程图如图22所示:单片机捕捉到行同步信号进入行中断n = = 5n = = 0&m5m = =60否是m=5延时,等待行消隐区完成开始采集图像数据返回否是是否否将line置位图22 行中断程序流程图 在程序中摄像头采集到的图像放在数组变量img4860中,采集到的点数为48*60,即48行,每行60个点。另外还有一个一维数组coord48用来存放每行黑线的位置。 图像采集的时候每采集一行就处理一行,图像处理的过程主要就是将黑线提取出来,黑线提取的方式有以下几种: 方案一:固定的阈值法,设定一个阈值当像素点的灰度值小于这个值时,就将其置0,否则,将其置1。这种方法是最简单的方法,当室内光线较好并且干扰较少时,使用这种方法也能很好的提取出黑线。但是室内的光线并不好,在一天的不同时间,光线不一样,设定的阈值也不一样,并且图像远处的阈值比近处的阈值大很多,阈值设的大了,近端会引入干扰,设的小了,远处的图像看不到。如图23所示:图23 原图 由图可以看出,当阈值较大时,近处有干扰,阈值较小时,远处的黑线丢失。于是,第二种方案出来了。 方案二:设定两个阈值,前25行(近处)使用较小的阈值,后面的行(远处)使用大阈值。使用这种方法之后图像的处理上没有问题了,近端的图像没有干扰了,远处的图像也能提取到黑线了。图24 但新的问题又来了,不同地方的环境是不同的,上午与下午就不一样,不同的教室的光照强度也不一样,这就需要经常设定阈值,在这样的条件下,反复修改阈值来应对环境的改变显然是太麻烦了。 方案三:让阈值根据采集到的图像进行变化。在小车行驶的过程中,假设小车的速度能达到3m/s,在这种速度下,小车采集到的前后两幅图像的位置相差才12cm,在赛道上,距离12cm的两点的环境相差很小,于是,我们可以利用上一次采集到的图像的黑线中心的灰度值再加上一个常量当做此次黑线的阈值。但是,这种提取黑线的方法一旦遇到下面的问题,就完了,如图:图25 如果按照这样的一幅图像来确定下一幅图像的阈值,那么阈值有可能会正好取到黑线中的白色反光点的位置,那么阈值将很大,在提取下一幅图像的黑线的时候将出现问题。对于这种问题,我们考虑过给阈值设定一个最大的上限,但设置后效果不好,特别是处理阳光直射时的图像的时候,由于阈值被限定在较小的范围内,很难提取到黑线,所以,我们最终没有使用这种方案。 方案四:此种方案是根据当前采集到的图像进行阈值的确定的,在黑线的搜索范围内,找到灰度值最小的点和灰度值最大的点,然后求两个点的差值,如果差值大于某一个较大的数,则说明在搜索范围内有黑线,此时,将阈值设定为最小的灰度值加上差值的百分之20。 这样设置的阈值对环境的适应性很强,由于是根据当前采集到的图像进行处理的,所以,不论小车是从较暗的地方进入光线较好的地方还是从亮的地方进入较暗的地方,或者是阳光直射,都可以很好的提取出黑线。 最终采用的自动阈值的方案是方案四,刚开始做的时候没有使用图像边缘检测,因为感觉图像边缘检测编程序很麻烦,但是,一次次测试,最终方案四实验成功的时候,才发现,这种方法很像是利用边缘检测确定出阈值,再根据阈值将图像进行二值化。但这种方法也有优点,就是编程较为简单。4.2图像滤波 滤波,滤掉无用的信号,留下有用的信号。在图像中,滤波完成的任务有去处噪点,判断提取的黑线是否是正确的黑线,判断黑线的类型是直道,弯道还是圆弧。4.2.1利用搜索的方法去处噪点 由于摄像头的制作工艺或者现场环境等的影响,摄像头采集到的图像会出现一些噪点,在摄像头的问题上,CCD摄像头基本上没有什么噪点,那么,要处理的就剩下赛道上的噪点了,我们在提取黑线的时候,并不是所有的点全部使用,而是使用黑线左边和黑线右边的点共10个点,这十个点就是用搜索的方法确定的。搜索算法流程图如图26所示:开始第一行图像所有的点全部处理第二行图像搜索的中心位置是第一行黑线的位置将上一行黑线中心位置加上上一行同上两行的差值当做当前行要搜索图像的中心位置搜索到黑线是否是否搜索到的黑线多于一个设置标志位,在程序中进行其它处理否是取离搜索位置最近的点当做黑线的中心位置是确定黑线位置否结束图26 搜索算法流程图 按照图中方式确定要进行搜索的区域,确定搜索区域之后首先按照上面阈值确定的方法确定出此行的阈值,然后用阈值对图像进行二值化,并求得黑线的中心位置。如果没有找到黑线,则设置标志位,在程序中进行分类特殊处理。使用搜索的方法确定黑线的位置可以滤掉场地上的大部分干扰,并且程序的处理量小。4.3十字线识别 本系统是通过计算采集到的十字线的次数来计算小车所跑的圈数,并对小车做精确出入库定位做依据。摄像头看到的十字线的情况如图27所示:图27 摄像头看到的十字线的情况对于十字线的检测,网上流传的方法主要有: (1)两个上升沿法,即从左到右进行检测,如果检测到有两次的灰度值增加较大,则认为是十字线。 (2)在一定的范围内求出二值化图像中黑点的总数,当总数在某个范围内的时候则认为是十字线。 以上两种方法都有道理,对于第一种方法,如果起跑线正好在图中的位置的时候,当然能检测到,但是,如果起跑线稍微斜一点,就不好检测了;对于第二种方法,将某一个区域内的所有的点统计一便,如果总数在某个范围内的时候则认为是十字线,这种方法比较简便,所以我们采用这种方法检测十字线。4.4舵机与电机的控制4.4.1舵机的控制(1)舵机的基本控制方式如图28所示:(x0,y0)(x2,y2)(x1,y1)图28 舵机的基本控制方式 取黑线上的第一行的中心点(x0,y0),最后一点(x2,y2),3/4位置处取一点(x1,y1),则舵机的控制量为在程序中kp1,kp2和kp3是这样定义的:#define kp1 17;#define kp2 150;#define kp3 290,给舵机赋的值时pwm的占空比,这个值的范围为从10101330。在程序中,计算出舵机的控制量之后,使用小车直线行驶时的舵机位置的占空比的值减去舵机的控制量当做赋给舵机的值。 上面的计算控制量的方法是一种最简单的方法,kp1的值越大,则小车对线的跟随性越好,但是如果太大了,会造车小车在直线上行驶的时候左右摆动。kp3的值越大,小车在进入弯道的时候会提前转弯,kp3的值越大,提前的越多,但是不能提前太多,容易从内道冲出。调节kp2的值可以使小车在走小S弯的时候基本上沿着直线行走。我们在这种方法的基础之上,做了一些改动。 (2)在我们使用上述方法调试的时候,发现直道入弯的时候,小车提前转,造成了从内道进入弯道,由于车模转向的问题,如果弯道的半径太小,小车转不过来,会从外道冲出赛道。如图29所示:图29 为了解决图中所示的问题,我们在小车从直道进入弯道的时候,让小车向反方向转一下,使小车在入弯的时候从外道或者沿线入弯,这样就保证了小车在出弯的时候能够在赛道上。如图30所示:图30 方法有了,但是怎样判断小车是从直道进入弯道呢?由于摄像头的前瞻不够高,在大S弯的时候,也会将赛道的某一部分当做直线,这样,如果还利用上面的策略,就会造成大S弯上来回摆动。为了区分大S和直道入弯,我们在程序中加了一个变量linecount,此变量记录一段时间内的直道连续出现的次数,一旦进入弯道,就将此变量清零。这样,我们就可以根据linecount的大小来判断是直线入弯还是大S弯。在程序中,当linecount5时,判断为直道入弯。 (3)舵机的基本控制算法是一种带有预测的算法,这也就造成了小车沿线的能力不好,如果赛道的圆弧的半径太大,小车就会一直走内道,有冲出赛道的危险,如图31所示:图31 为了防止这种情况发生,让小车沿线严格一些,我们使用了图像中的第28行对小车的转向进行了PD控制。 选取第28行的原因:这时从光电小车上找到的灵感,因为我们在调试的时候发现,摄像头的小车转弯的时候没有光电的灵活,因此,我们就测量了光电小车的前瞻距离,然后将其移植到摄像头的小车上,对应的是图像的第28行,所以,我们使用28行对舵机进行PD控制。4.4.2 电机的控制 (1)对电机的控制也就是对小车速度的控制,对小车速度的控制采用的是棒棒控制与PD控制相结合的方法:当偏差较大的时候,采用棒棒控制,偏差较小的时候采用增量式PD控制进行微调,在调节PD参数的时候,允许有一定的超调,小车会跑的更好。 (2)电机速度设定值的确定。 在程序初始化的时候,将设定速度的最大值与最小值,在程序中,根据道路的信息确定速度的控制量,然后用最大速度减去控制量当做速度的设定值。具体的思想是这样的:在直道上的时候,控制量较小;直道入弯的时候,由于直道上速度较高,所以要增大控制量,在入弯之前将速度降下来;在弯道中,舵机转到位之后,可以将速度稍微提高。4.5程序的调试 写程序不可能一次都写好,需要不断地调试,不断地完善,有一个好的程序的调试方法能够使调试的过程事半功倍。将程序中需要用到的并且可能需要修改的常量利用宏定义引出。 例如,在智能车程序的编写过程中,要用到摄像头的中心位置,并且这个中心位置在程序中的许多地方都用到,并且当硬件有偏差时,还需要修改这个常数。这种情况下,就可以使用宏定义#define Center 30定义完成后,在程序中要用到摄像头中心位置的时候,使用Center代替,而不是用30。这样当要修改程序的时候,只需要修改一个地方就行了,简单并且不会出错。如果没有宏定义,修改一个常量就要到程序的不同地方去找,很浪费时间且容易出错。结束语 该CCD智能车系统以MC9S12XS128单片机为主控制器,运用到了CCD摄像头的图像采集算法,高速AD转换,图像处理算法,舵机PD控制,LCD液晶显示等知识,通过本次设计,使我对16位单片机的认识和运用能力又提升了一个新台阶,由于知识和能力有限,在小车的制作和调试过程中也遇到了不少问题,最终通过从各方面查阅资料,解决一个又一个问题,这个过程使我感到无比的愉快和充实。 和往届飞思卡尔CCD智能车相比,我这次的设计在技术上还有明显的不如之处,例如在赛道类型的识别算法和闭环速度控制方面该系统都没实现,这也是我以后要努力学习的方向,通过这些我也认识到了,对于一个综合的控制系统,它的技术核心在于控制算法,硬件只是基础,系统性能的好坏,主要取决于它的控制算法是否优越,是否先进。 由于知识水平有限该系统的设计和说明方面难免有不足和缺陷,敬请各位高手前辈,批评指教。参考文献1 全国大学生飞思卡尔比赛论坛2 黄智伟 全国大学生电子设计大赛电路设计锦集【M】. 北京理工大学出版社 20093 林晓飞,刘彬,张辉基于Freescale 9s12十六位单片机应用开发与实例教程M北京理工大学出版社20074 高有堂 电子电路设计制板与仿真【M】.郑州大学出版社5 吴岳 C语言程序设计大全M北京:清华大学出版社 20096 窦振中基于单片机的嵌入式系统工程设计M北京:中国电力出版社 20087 Motorola,Inc.S12CPUV2 Refrence Manual,Rev.0.2003.8 Freescal Semiconductor,Inc.MC9S12DP512 Device Guide V01.25,2005.9 RaulRojas:Omnidirectional Control,FreieUniversityBerlin,Technical Report B-10-03, FU.Bedin.June 2003附录A 主要芯片模块及数量序号器件名称数量备注1CCD摄像头1图像采集2MC9S12XS128最小系统1主控制器3TLC55101高速AD转换4LM29401电源稳压芯片5转向舵机1方向控制6升压模块1DC7.6V升DC12V77.6V直流电池1小车电源8LCD液晶显示1黑白背光液晶(5510)9LM18811视频解码10LM10851舵机+6V稳压供电11BTS7960B2电机驱动1274LS2441信号隔离13飞思卡尔智能车模1骨架14直流电机1小车动力源B MC9S12XS128单片机接口分配表单片机引脚名称连接器件引脚名称备注VCC+5V电源GND+5V地线PP774LS244的15引脚智能车反向行走信号PP274LS244的19引脚智能车正向行走信号PP3TLC5510的CLOCK引脚AD时钟信号PP1舵机PWM控制输出控制转向PT2LM1881的场同步输出捕捉场中断信号PT6LM1881的行同步输出捕捉行中断信号PT7旋转编码器脉冲输出测速PA0-PA7TLC5510的并行信号输出转换完的数字信号输出PB0LCD液晶屏的复位信号PB1LCD液晶屏的片选信号PB2LCD液晶屏的数据/命令选择PB3LCD液晶屏的串行数据线PB4LCD液晶屏的时钟信号PE4按键1PE3按键2PE2按键3C 智能车整车电路原理图D USBDM 驱动安装示意图:插入USB接口弹出如下窗口:点“是,仅这一次(Y)”出现下面对话框:点“否,暂时不”出现下面对话框:选“从列表或指定位置安装(高级)”点“下一步”出现下边对话框:选择“C:USBDmreLeasc20091118Drlver”点下一步:点“完成”即完成驱动安装。E 智能车程序源代码:#include /* common defines and macros */#include derivative.h /* derivative-specific definitions */ /*使用模数转换进行图像采集*/*由PWM3提供时钟信号 PT2捕捉场中断 PT6捕捉行中断 PB0输出使能信号 PROTA接收数据*/#define lcd_rst PORTB_PB0 /复位信号线 #define lcd_ce PORTB_PB1 /片选信号线#define lcd_dc PORTB_PB2/数据/命令选择#define lcd_dat PORTB_PB3/串行数据线#define lcd_sck PORTB_PB4 /时钟信号线#define LED_1 PORTE_PE5#define LED_2 PORTE_PE6#define K1 PORTE_PE4 /按键1#define K2 PO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论