基于嵌入式Linux的自主寻迹机器人的研究.doc_第1页
基于嵌入式Linux的自主寻迹机器人的研究.doc_第2页
基于嵌入式Linux的自主寻迹机器人的研究.doc_第3页
基于嵌入式Linux的自主寻迹机器人的研究.doc_第4页
基于嵌入式Linux的自主寻迹机器人的研究.doc_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

中南大学硕士学位论文第二章自主寻迹机器人总体设计第二章自主式寻迹机器人总体设计2.1自主机器人主体设计本文所研究的自主式寻迹机器人主要应用在平整地面的室内环境中。机器人主体类似于小型的四轮车,采用车轮驱动方式,两后轮是驱动轮,由直流电机驱动,两前轮是转向轮,通过连杆连接到舵机。实验车道底色为白色,标有黑色中心线。以机器人寻迹行驶的速度和稳定性以及智能性作为评价的标准。2.2数据采集模块的设计与分析数据采集模块是整个系统的“眼睛”,为系统的“大脑”一核心控制模块提供前 方的路面信息。数据采集模块设计的目标是让整个系统能够看得更远更宽,通过 采集的数据,能让“大脑”迅速作出反应。机器人运行的环境是白色底板与黑色引导线,所以数据采集模块从颜色角度 來看,只需要能够区分黑白两种颜色即可。当然为了提高系统的可靠性、快速性, 视觉模块最好能够识别出引导线的一些参数,比如引导线的位置、方向、曲率等。 在引导线的设计上,会设置一些干扰和交叉。机器人要能找到准确的行驶路线, 必须能够自主排除干扰。机器人的线路识别有多种方式,常用的方法有两种,一 种是利用红外光电反射传感器的路径识别方案,还有一种是利用CCD摄像头采 集路面的信息。2.2.1红外反射光电传感器采集方案红外反射光电传感器使用一对红外发光管和接收管,红外发光管发出的红外 光经过地面反射后被接收管接收。图2.1展示了红外光电方案的工作原理。白色 可以反射绝大部分红外光,而黑色会吸收绝大部分红外光,因此通过检测接收管 的红外光的多少就可以判断传感器检测到的路面是黑色引导线还是白色底板31。当然通过一对红外反射光电传感器是远远不能检测到路面上的信息,一般都 是采用一排传感器来识别路径。传感器的设计也有很多讲究:如传感器之间的间 隔距离以及径向探出距离和安装高度设计等4。由于光电传感器检测到的都是离散点的信号,信号越多,所采集到的道路信 息也越精确,舵机的控制精度也越高。如果间距太大,可能在传感器之间出现空 白,导致检测精度不高,间距太小,会出现传感器之间的干涉,可能导致不能准 确的反映道路信息,引起机器人在运行过程中出现晃动。图2.1红外光电传感器方案径向探出距离是指光电传感器离机器人前方的径向距离。它主要影响机器人 的预测性能。由于舵机具有延时性,如果机器人前瞻性越好,系统就可以尽早做出调整,从而使得机器人以最优控制策略通过道路,来提高整个系统的性能。如 果探出距离过长会导致整个系统重心前移,使得驱动轮的附着力不够而出现打滑甚至行使不稳定现象。当然如果采用带倾角的传器安装方式就会比较理想。基于红外光电反射管阵列检测路径的方法主要具有如下的缺点:(1)识别道路信息少,一般只能检测路径的中心位置;(2)由于固定位置的限制,红外光电反射管只能安装在机器人前方不远的 位置,信息观测的前瞻性差;(3)容易受到环境光线的干扰;2.2.2 CCD摄像头数据采集方案CCD(Charge coupled Devices)电荷藕合器件,是一种集光电转换、电荷储存、 电荷转移为一体的传感器件。它的主要功能是把光学图像转换为电信号,即把入 射到传感器光敏面上按空间分布的光强信息,转换为按时序串行输出的电信号即 视频信号,视频信号能再现入射的光辐射图像。在1969年,美国贝尔实验室的W.S.波涅尔、CIE.史密斯等人在研究磁泡时, 发现了电荷通过半导体势阱发生转移的现象,提出了电荷藕合这一新概念,并且 构思出了一维线阵电荷藕合器件(CCD)的模型,同时预言了 CCD器件在信号处 理、信号储存及图像传感器中的应用前景。这个设想很快被实验所证实,并演示 了世界上第一个电荷转移器件模型。鉴于美国MOS器件工艺及硅材料研究的雄 厚基础,这个新型器件的设想很快得到了实现。不久,二维面阵CCD也研制成 功。1973年,第一次国际CCD应用研究学术会议在美国举行,标志着CCDS 用技术己成为电子及光电科学的一个重要分支。至1974年,美国RCA公司的 512X320像元面阵CCD摄像机首先问世,标志着CCD产业的蓬勃兴起。随着超大规模集成电路工艺的不断完善和推广,其他一些国家也相继赶上,纷纷研制成 功了各种CCD器件,各种卓有成效的CCD结构促进了 CCD应用领域的进一步 发展。CCD应用技术的研究在全世界范围内普遍开展。目前,CCD应用技术的研究方兴未艾,CCD产品更新很快,国际上竞争十 分的激烈。国内CCD应用技术也有很大的发展控件,它的研究受到普遍重视5。CCD的工作原理是:当光线经过镜头汇聚成像在摄像机上时,每个光敏单元 会因感受到的光强的不同而藕合出不同数量的电荷,通过译码电路可取到每一个 光敏单元上耦合出的电荷而形成电流信号,该电流信号即对应一个像素,上百万 个像素电流信号的集合,即构成了用电信号表示的图像7。CCD摄像头有如下诸多特点:(1)体积比较小、重量比较轻、电压及功耗低、可靠性很高,这些特点可 以减轻机器人的供电负担;(2)具有理想的“扫描”线性,可进行像素寻址,可变换扫描的速度,尺寸 重现性也比较好:该特点为图像识别提供了可能;(3)有很高的空间分辨率.这样可减少图像处理难度;(4)有数字扫描能力,像元的位置可由数字代码确定;(5)具有很高的光电灵敏度和比较大的动态范围;(6)数据可调,可适用于动态、静态各种条件下的测量;(7)可任选模拟、数字这两种不同的输出形式,可与同步信号、I/O接口同 时与微机兼容,可组成高性能系统;(8)前瞻性好,还可以获得道路的方向、曲率等诸多信息。由此可见,CCD是一种非常有效的非接触检测方法,适合与计算机结合。 CCD摄像头在分辨率、动态范围、灵敏度、实时传输方面的优越性是其它器件无法比拟的,在图像识别、非接触测量、灰度检测、动态目标跟踪测量中己经获 得广泛的应用,并且CCD能够获得更多的信息,特别是有更好的前瞻性能很大 幅度的提高寻迹机器人的行驶速度。因此,在寻迹机器人中选择了CCD摄像头数据采集方案。2. 3系统体系结构图2.2是系统总体框架图,大体上可以分为以下几个部分,控制系统、转向 执行,数据采集,电机执行。控制系统是寻迹机器人的核心部分,是机器人的大脑,负责对信息的采集、 处理以及对电机、舵机的控制,本系统设计的智能寻迹机器人需要完成一些复杂 任务,并要对多任务进行并行处理,还需要能够容易扩充其它如通讯功能,这样, 通常采用的8位16位单片机作为微控制器无论在运算速度上还是在功能上都难 以满足要求。因此,本文选用了嵌入式MCU作为控制系统。转向执行控制机器人前进的方向,本系统在机器人的前轮上安装一个转向舵 机来实现,通过连杆将机器人的两个前轮与转向舵机连接,即可通过改变舵机的 转角来达到调节机器人前轮转向角度,并通过角度检测装置来达到对舵机的闭环 控制。数据采集部分通过CCD采集到视频信号,经过视频信号同步分离后传送给 嵌入式MCU。电机执行部分主要由直流电机和速度检测模块组成,直流电机控制机器人后 轮的转动推动机器人前进。同时,在左后轮上安装了一个速度检测模块,达到精 确的控制机器人速度进行控制的目的。图2. 2系统总体框架图2.4 本章小结本章对智能机器人路径跟踪控制系统作了一个总体设计,按照它需要实现的 功能对整个系统划分了各个功能子模块,并且对整个系统的工作原理和信息流程 进行了阐述,特别是比较了 CCD传感器相对于红外传感器的优越性。5中南大学硕士学位论文第三章系统硬件设计第三章系统硬件设计3.1引言结合本文第二章提出的自主式寻迹机器人总体设计方案,本课题的主要任务 是设计出32位嵌入式微控制器为核心的硬件电路。整个电路系统的设计采用 PROTEL DXP作为设计平台。本章围绕嵌入式机器人控制器的硬件设计展开,首先简要地介绍ARM微处 理器S3C2440处理器的特点,然后介绍基于ARM微处理器S3C2440的寻迹机 器人的核心板电路,接着详细给出了外围扩展模块包括中的数据采集模块、电机 控制模块和舵机控制模块的电路设计。3.2 S3C2440微处理器简介CPU是整个控制系统的核心,它的选择直接决定着整个系统运行处理速度的 性能指标,同时直接影响着系统硬件电路设计的复杂程度以及系统的性价比。因 此CPU的选择是硬件电路设计的重要任务,其它硬件都是围绕着CPU来设计扩 展设计的。本课题的智能寻迹机器人特点是数据处理量大,实时性和精度要求比 较高,同时采集处理后的信号需要快速地传输给微处理器进,故采用SAMSUNG 公司的ARM9系列芯片S3C2440作为系统的主控制器。3.2.1 ARM微处理器的简介ARM(Advanced RISC Machine),既可以认为是一*个公司的名字,也可以认为 是对一类微处理器的通称,还可以认为是一种技术的名字。1991年ARM公司成 立于英国剑桥,是一家专门从事基于RISC技术芯片设计开发的公司,作为知识 产权供应商,本身不直接从事芯片生产,世界各大半导体生产商从ARM公司购 买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路, 从而形成自己的ARM微处理器芯片进入市场。目前ARM微处理器,已遍及工 业控制及仪表、消费类电子产品、通信系统、网络系统、无线系统等各类产品市 场。ARM 微处理器目前主要包括 ARM7、ARM9、ARM9E、ARM10、SecurCore 和StrcmgARM几个系列。每一个系列的ARM微处理器都有各自的特点和应用 领域。但总的来看,采用RISC架构的ARM微处理器具有如下特点:小体积、低功耗、低成本、高性能;支持16/32位双指令集,能很好地相容8位/16位器件;大量使用寄存器,指令执行速度更快;寻址方式灵活简单,执行效率高;软件采用可移植的实时操作系统,使其应用程序的设计过程大为简化【6】。 3.2.2 S3C2440微处理器的简介三星公司推出的16/32位RISC微处理器S3C2440A,为手持设备和一般类型 应用提供了低价格、低功耗、高性能小型微处理器解决方案。为了降低整体系统 成本,S3C2440A提供了丰富的内部设备。S3C2440A采用了 ARM9201的内核,13ini的CMOS标志宏单元和存储单元。其低功耗,简单,优雅,且全静态设 计特别适合于对成本和功率敏感型的应用。它采用了新的总线架构AMBA。S3C2440A的杰出的特点是其核心处理器(CPU),是ARM公司设计的13/32 为 ARM920t 的 RISC 处理器。ARM920t 实现了 MMU, AMBA, BUS 和 Harvard 高速缓冲体系结构。这一机构具有独立的16KBCache和16KB的数据Cache。每 个都有具有8字长的行组成。通过提供的一套完整的通用系统外设,S3C2440A 减少整体系统成本和无需配置额外的组件。综合对芯片的功能描述,S3C2440A集成了以下片上功能:1.2v内核供电,1.8v/2.5v/3.3v存储器供电,3.3v外部10供电,具备 16KB 的 I-Cache 和 16KB 的 DCache/MMU 微处理器。外部存储控制器(SDRAM控制和片选逻辑)。LCD控制器(最大支持4K色STN和256K色TFT)提供1通道LCD 专用DMA。4通道DMA并有外部请求引脚。3 通道 UART (IrDAl.O, 64 字节 TxFIFO,和 64 字节 RxFIFO), 2 通 道SPI,1通道IIC-BUS接口(多主支持),1通道IIS-BUS音频编解码接口,AC97编解码接口。兼容SD卡主协议接口 1.0版和MMC卡协议2.11兼容版。2端口 USB主机/I端口 USB设备(1.1版),4通道PWM定时器和1 通道内部定时器/看门狗定时器,8通道lObitADC和触摸屏接口。具有日历功能的RTC,相机接口(最大4096x4096像素的投入支持。 2048x2048像素投入,支持缩放)。130个通用IO 口和24通道外部中断源。具有普通,慢速,空闲和掉电模式,具有PLL片上时钟发生器。3核心板模块本系统使用了广州友善之臂科技有限公司生产的QQ2440V3作为核心板, 中南大学硕士学位论文第三章系统硬件设计其硬件框图如3.1所示,该平台采用了 Samsung公司的处理器S3C2440A。以下 给出了处理器内部集成了 ARM公司ARM920t处理器核的32位微处理器的特点, 同时提供了一系列完整的系统外围设备。QQ2440V3开发板硬件资源特性CPU 处理器,Samsung S3C2440A,主频 400MHz,最高 533MHzSDRAM内存,在板64M SDRAM,32bit数据总线,SDRAM时钟频率高 达 100MHz。FLASH存储,在板64MNand Flash,掉电非易失,在板2M Nor Flash,掉电 非易失,已经安装BIOS。接口和资源,1个10M以太网RJ-45接口(采用CS8900网络芯片),3个串 行口,1个USBHost,1个USBSlaveB型接口,1个SD卡存储接口,1路立体 声音频输出接口,一路麦克风接口,1个2.0mm间距20针标准JTAG接口,4 USER Leds,4 USER buttons,1个PWM控制蜂鸣器,1个可调电阻,用于AD模数转 换测试,1个I2C总线AT24C08芯片,用于I2C总线测试,1个20pin摄像头接 口。板载实时时钟电池,电源接口(12V),带电源开关和指示灯。系统时钟源,12M无源晶振。实时时钟,内部实时时钟(带后备锂电池)。扩展接口,1个34 pin 2.0mmGPIO接口,1个44 pin 2.0mm系统总线接口。规格尺寸,120xl00(mm)。操作系统支持,Linux2.6.13, WindowsCE.NET4.2。GPIO串口网络USBItQQ2440V351itLCDPWMAD图 3.1QQ2440V3接 1系统总线QQ2440V3的丰富的片上资源大大减少了为系统配置额外器件的需要。为了 方便开发人员的使用。QQ2440V3幵发部还设计了许多的扩展模块,比如串口模 块、IDE硬盘转接板(基于DMA方式)、矩阵键盘、USB Hub、数据采集模块、 CAN总线、液晶显不模块等等,核心板大致如图3.1所不。13中南大学硕士学位论文第三章系统硬件设计4数据采集模块在S3C2440A之前的硬件处理是视频图像的采集过程,图像数据具体的处理 是在S3C2440A中实现的。CCD输出为视频信号,经过视频预处理电路后直接 输出到S3C2440A的A/D转换输入通道,同时另一路视频信号经过视频信号分 离电路后,输出的行、场同步信号输出到S3C2440A的外部中断口。S3C2440A 响应中断采集数据并存入内部帧存储器。3. 4.1视频分离为了系统处理的需要,经过预处理后的视频图像信号必须先进行分离。系统 设计中,A/D转换电路采样是由行同步信号信号控制的,而且数字化后的图像也 需要送入相应的存储器保存,所以必须获得行同步信号和场同步信号。可以说提 取同步信号对于本系统的成功是非常的重要。由于同步信号幅度占全电视信号幅 度250k的电平范围,则可根据这一特征采用幅度分离法先将复合同步信号分离 出来,又因为场同步脉冲的宽度为16(T,远大于行同步脉冲的宽度4.7这样 又可在己分离出的行、场复合同步信号中进一步分离出行同步和场同步信号。本 系统采用一种视频同步分离芯片LM1881,它只需要几个外接元件,就可可靠地 提取出视频信号中的同步信号。LM1881视频同步分离器可以从标准的负同步NTSC、PAL和SECAM(振幅 从0.52V峰峰值)视频信号中分离出所包含的复合同步信号、垂直同步信号、 色同步信号/反向入口时标与奇/偶校验信息。视频同步信号分离电路原理图如图 3.2所示。3. 4. 2视频米集CCD摄像头的视频信号必须进入A/D转换电路进行预处理后,才能将模拟 信号变换为数字信号进行信号的存储、快速判读和处理等。所以A/D转换是系 统不可缺少的部分,而且系统还要对A/D转换出的数字信号进行去燥处理,A/D 转换后的数据更容易进行处理。视频信号的A/D转换、采集控制和帧存储等通 过S3C2440A实现。S3C2440A内部集成了 8通道lObit A/D转换器,500KSPS 的转换速度,可以满足视频信号采集的需要。集成A/D转换可以省去外部A/D 转换的复杂的逻辑控制,且电路的实现极为简单。芯片具有丰富的中断资源,为 视频采集逻辑控制提供了极大的便利2。3. 5直流电机模块3. 5.1电机驱动模块机器人前进的动力是直流电机来驱动的,直流电动机是最早出现的电动机,也是最早能实现调速的电动机。长期以来,直流电动机一直调速控制系统中占据 着统治地位。它具有良好的线性调速特性,并且控制简单,效率较高,动态特性 优越。因此,在寻迹机器人中选用了直流电动机,型号为RS-380SH,输出功率SSSlgQSSlulsILU Srfvvp|50.9W-4OWc图3. 2视频同步分离电路 RS-380SH的性能如表3.1所示:表3.1 RS-380SH的特性数据电压(V)空!最高效率赌转工作正速度电流速度电流扭矩输出扭矩输出范围常r/minAr/minAmN.Mg.cmWmN.Mg-cmw397.2162000.5140603.2910.91111682.383921.6电机的控制采用专用集成电路芯片可以很方便地组成单片机控制的小功率 直流伺服系统。系统选用的驱动芯片是飞思卡尔半导体公司的H桥式驱动器MC338S6, MC33886的工作电压为540V,导通电阻为120毫欧姆,输入信号 可以是TTL或CMOS, PWM频率通常小于lOKHz,并且具有短路保护、欠压. 保护、过温保护等功能。可以从芯片的内部封装可以看出,MC33886实质是全 桥电路,可做两个半桥电路使用。芯片通过PWM信号开启关闭通道,输出不同 电压控制电机。它的应用电路如图3.3所示。在实际应用过程中,我们会遇到很多的弯道,为了能使机器人在过弯道的时 候能够快速地把速度减下来。因此,电机驱动部分使用了由两块MC33886组成 的全桥式驱动电路,可以控制电机的反转以达到制动的目的。单片MC33886也 可能组成桥式驱动电路。由于RS-380SH电机的工作电流很大,经过测量,单片 MC33886驱动RS-380SH电机时空载时的压降也有1.0V之高。因此把单片 MC33886的两路驱动输出端并联起来,用两块MC33886组成一个全桥式的驱动 电路进行电机控制的正反转。该电路通过两个输入端就可以控制电机正、反转, 压降也减小到了 0.5V以下。两块内部并联后的MC33886芯片来组成桥式驱动电 路如图3.4所示41。V+为了让机器人运行得更为精确,并对速度的检测后能达到对机器人的速度进 行闭环反馈控制,速度检测将变得非常的重要。受到机器人机械结构的限制,必 须采用体积小、重量轻的速度传感器,当前有三种方案可供选择,其特点如下:霍尔传感器配合稀土磁钢:在主后轮驱动齿轮处,通过打孔,将几根很小的稀土磁钢镶在里面,然后将 霍尔原件安装在附近,通过检测磁场的变化,可以得到电脉冲信号,获取后轮转 动速度。该方案的优势是:获取信息准确,体积小,而且不增加后轮负载。缺点 是:齿轮靠近主驱动电机,容易受磁场干扰;对齿轮打孔,容易损坏齿轮。|MC338863图3. 4电机驱动电路光电传感器:光电传感器是在主驱动齿轮表面附上了黑白间隔的彩带,将反射型光电传感 器安装在齿轮附近,当黑白彩带交替通过时,将会产生一系列电脉冲,这样通过 电脉冲可以获取转动的角度。当然也可以对齿轮打孔,采用直射型光电传感器, 通过间接接受到的红外光,产生电脉冲信号,获取转动角度。该方案的优势是: 体积小,不增加后轮负载,反射型方案对原有器件不需要再加工。缺点是,精度 有限。光电编码器光电编码器安装在主驱动轮的齿轮上,通过从齿轮传过来的转动信息,获取 后轮的转角。该方案的优势是:获取信息准确,精度高,搭建容易。缺点是:增 加了后轮负载;而光电编码器的体积比较大大,增加了机器人的重量,并且价格 昂贵。本课题考虑到控制的精确性,采用了通过光电编码器來实现对车速的检测, 光电编码器分为了几种,按编码方式的分为数字编码器和模拟量编码器。模拟量 编码器需要增加比较电路来得到数字信号,并且精度没有数字编码器高,因此在 机器人中采用了数字编码器中的一种增量式编码盘。它输出的脉冲的个数正比于 电机的转动速度,从得到输出脉冲频率正比于转速。这样通过测量单位周期内脉 冲个数就可以得到脉冲的频率。电路图如图3.5所示。编码盘的输出端连接在S3C2440A内部的ECT模块上,在定时器规定的单位 时间内记下端口接收的脉冲数。车轮每转1周就发出K个脉冲,车轮直径为D, 定时周期为T,行驶速度为V,接受到N个脉冲,则:nxDxNK(3-1)T, SV = -T(3-2)定时的时间到后,记录的脉冲个数送到CPU处理,并将计算出行驶距离S、 行驶速度V的计算结果存放在设定的内存地址中,提供给各个需要该数据的程 序使用。5V囷3.5速度检测电路路板等。其中,直流马达提供了原始动力,带动变速齿轮组转动,使之产生高扭 力的输出,齿轮组的变速比越大,伺服马达的输出扭力也越大,越能承受更大的 重量,但转动的速度也越低。舵机是一个典型闭环反馈系统,其内部结构如图3.6所示:比例电压图3. 6被机的内部图其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置 电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号, 将获得的直流偏置电压与电位器的电压比较得到电压差输出。最后,电压差输入 到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮组带 动电位器旋转,使得电压差为0,电机停止转动。标准的舵机有三条控制线,分别为:电源、地及控制线。电源线与地线用于 提供内部的直流电机及控制线路所需的能源,电压通常介于4V6V之间,该电 源应尽可能与处理系统的电源隔离,因为舵机会产生噪音,容易通过电源串扰到 控制系统中,甚至在重负载时也会拉低放大器的电压,所以整个系统的电源供应 的比例必须合适。输入一个周期性的正向脉冲信号,这个周期性脉冲信号的高电平时间通常在 lms到2ms之间,而低电平时间应在5ms到20ms之间,当然不是很严格的,不 同的输入正脉冲宽度对应不同的舵机输出臂的位置2。舵机有三个输入信号,分别是:电源、地、控制信号输入。使用时要注意信 号的接入,特别是电源和地不能够接反,否则会造成舵机的损坏。本系统使用的 舵机额定工作电压为6.0V。在6.0V工作电源下的工作速度为0.16s/60,堵转力 矩为6.5kg.cm。舵机的控制信号选择周期为20ms的脉宽调制(PWM)信号,其脉 冲宽度从0.5ms-2.5ms,相应的舵盘的位置为0-180度,呈线性变化。也就是说, 给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转 矩怎样改变,除非给它提供一个另外宽度的脉冲信号,舵盘才会转到新的对应位 置上。在实际使用中,舵机的实际输出位置可能会与理想情况稍有不同。因此, 需要将舵机装到机器人后,测试得出不同位置输出下对应的PWM波的占空比分 别是多少。在精度要求不高的情况下,可以首先测出几个特殊位置对应的占空比,然后把舵机视为线性输出,计算得出其它不同位置下的占空比。如果实际存在偏 差,可以根据即时输出情况进行微调。ZZCClP132O.luF + 47uFjVBAT-舵机的控制模块的接口电路图3.7所示,系统使用了 7.2V电源直接供电。 处理器S3C2440的定时器是16位的,所以由定时器实现的PWM也是16位 的。这样足够保证脉冲宽度的分辨率,提高舵机的控希彳精度。RUDDER图3.7航机电路图3. 6转向舵机模块舵机,也叫微型伺服马达,是一种位置伺服的驱动器,适用于角度需要不断 变化并可以保持的控制系统。舵机最早被应用于航模运动中,用来控制航模的运 行姿态。由于其扭力大、控制简单、装配灵活等特点,舵机己经被广泛应用到各 种机电产品中。同时舵机在机器人控制中应用也越来越广泛,比如应用于机器人 的关节控制等。本次使用的舵机是型号是Futaba的53020,进行控制两前轮的转 向。通过输入不同占空比的PWM波作为控制信号,从而控制机器人灵活跟踪引 导线前行3。一个舵机内部包括:小型直流马达、变速齿轮组、反馈可调电位计、控制电3. 7电源模块电源模块作为系统的动力源,在整个系统中起到极为重要的作用。为了使机 器人能稳定工作,实现既定功能,必须提供可靠的电源。如果电源模块设计不合 理,会造成系统运行的不稳定,甚至导致崩溃。反之,系统能够长时间可靠的工 作。本系统使用了三种不同的电压,来满足实际应用的需求。将7.2V电压稳压 得到5V电压,为开发板供电。而电机、舵机直接由7.2V的电池直接供电。CCD 摄像头因为使用了 12V电压,所以使用了斩波电路来提升电压产生。系统的电 源供电结构如图3.8所示。图3. 8电源供电结构图考虑到由驱动电机引起的电压瞬间下降的现象,采用低压差线性稳压器LM2940提供5V电压,如图3.9所示。CCD器件工作电压需要在12V左右。在机器人中,采用了斩波升压的方式 获得12V的电压,电路如图3.10所示。5VVBATU1 LM2940CT-5.0 IN OUT GNDZC322uFCA 0.1 uF图3.9 5V稳压电路 VBAT升压式(Boost)变换器是输出电压高于输入电压的单管不隔离直流变换器,它 由功率晶体管7;、储能电感、二极管Z),以及滤波电容C5组成。Boost电路有 两种工作方式:电感电流连续模式(Continuous Current Mode, CCM)和电感电流 断续模式(Discontinuous Current Mode,DCM)工作方式。电感电流连续是指输出 滤波电感的电流总是大于0,电感电流断续是指开关管关断期间有一段时间& 的电流为【2。图3.10斩波电路图2(max + min)(3.3)Boost变换器的工作分为两个阶段,导通时为电感的储能阶段,此时电源 不向负载提供能量,负载靠储于电容C5的能量维持工作。7;关断时,电源和电 感共同向负载供电,此时还给电容C5充电。因此Boost变换器的输入电流就是升 压电感的平均值,公式如下:开关管和二极管是轮流工作的,7;导通时,流过它的电流就是7;截止时, 流过A的电流也是。通过它们的电流/0和相加就是升压电感电流。稳态 工作时电容C5充电量等于放电量,通过电容的平均电流为,故通过二极管/电 流平均值就是负载电流/。并且此时7;导通期间电感电流增长量A/M+等于它在 7;截止期间的减小量,可得输出电压与输入电压的关系,公式如下【2:(3.4)U 1 Ux -D3. 8本章小结根据第二章的总体设计,本章首先是提出了整个控制系统硬件设计的方案, 同时对机器人路径跟踪控制系统在硬件上的结构进行说明,大体上分为六个部 分,即核心板模块、道路图像采集模块、电机速度控制模块、速度检测模块、舵 机转向控制模块、和电源模块,并且阐述了硬件部分的工作原理,最后就硬件的 特性进行了分析。中南大学硕士学位论文第四章嵌入式操作系统的选择与构建第四章嵌入式操作系统的选择与构建4.1嵌入式操作系统的选择嵌入式操作系统一般都是实时操作系统,实时操作系统RTOS(Real Time Operation System)是指能够在指定的时间范围内完成特定的功能或者对外部的异 步事件作出响应的操作系统。在实时操作系统上运行的实时进程不仅要求逻辑结 果正确,而且应当在限定的时间内完成指定的工作。实时系统主要应用于过程控 制、数据采集、通信、多媒体信息处理等对时间敏感的场合。在大部分嵌入式操 作系统中,“实时”能力通常是决定系统性能的一个关键指标,所以在嵌入式操作 系统中,大部分也都是实时操作系统当前有很多的商用型嵌入式操作系统8,商用型的嵌入式操作系统特点是功 能稳定、可靠,有完善的技术支持和售后服务,但往往价格比较的昂贵。Windows CEMicrosoft Windows CE是一个32位的多任务嵌入式操作系统。它的模块化设 计允许用户方便的进行定制。它是微软“维纳斯计划”的核心,包含了 Internet Explorer的版本可以和Internet实现连接、同步信息。操作系统的基本内核需要 至少200kb的ROM。从SEGA的DreamCast游戏机到现在大部分的高价掌上电 脑,都采用了 Windows CE。但是价格太高使得整个产品的成本急剧上升,而且 不是硬实时,对资源的消耗也比较的大。Vxworks 和 PSOSVxworks由WindRiver公司开发,是目前嵌入式系统领域中使用广泛、市场 占有率比较高的系统。它支持多种处理器,如x86,i960,SunSparc,Motorola 168乂乂,18100)00,?(6(:等等。使用的是和1汉不兼容的环境,大 多数的Vxworks API是专有的。采用GNU的编译和调试器。PSOS由ISI公司开发,是一个模块化、高性能的实时操作系统,专为嵌入 式微处理器设计,提供一个完全多任务环境,在定制的或是商业化的硬件上提供 了高性能和高可靠性。开发者可将操作系统的功能和内存需求定制成每一个应用 所需的系统。开发者可以利用它来实现从简单的单个独立设备到复杂的、网络化 的处理器系统。WindRiver公司已经兼并ISI公司现在拥有两大RT0S系统QNXQNX是一个实时、可扩充的操作系统,它遵循P0SIX.1(程序接口)和P0SK.2(Shell和工具)、部分遵循POSDClb(实时扩展。它提供了一个很小的微 内核以及一些可选的配合进程。其内核仅提供4种服务;进程调度、进程间通信、 底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它0S服务都 实现为协作的用户进程,因此QNX内核非常小巧(QNX4, x大约为12KB)而且 运行速度极快。这个灵活的结构可以使用户根据实际的需求将系统配置成微小的 嵌入式操作系统,或是包括几百个处理器的超级虚拟机操作系统。(4)Nucleus PLUSNucleus PLUS 是美国 ATI 公司(Accelerated Technology Inc)在嵌入式实时多任 务操作系统,是在Nucleus基础上,为实时嵌入式应用而设计的一个抢先式多任 务操作系统内核。其95%的代码是用ANSI C写的,非常便于移植并支持大多数 类型的处理器。Nucleus PLUS采用了软件组件的方法,每个组件具有单一而明 确的目的,提供清晰的外部接口,模块化很强,而且其源代码开放。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公 司望而却步;而且,源代码封闭性也大大限制了开发者的积极性(现在很多操作 系统也开放了源代码)。另外,结合国内实情,当前国家对自主操作系统的大力 支持,也为源码开放的操作系统的推广提供了广阔的发展前景。还有,对上层应 用开发者而言,嵌入式系统需要的是一套高度简练、界面友善、质量可靠、应用 广泛、易开发、多任务,并且价格低廉的操作系统。当前的开放源码的嵌入式操作系统有如下。uC/OS-IIuC/OS-II实际上也是商用操作系统,但它开放了源代码,源代码的绝大部分 是用C语言写的,经过简单的编译就能在PC机上运行。由于用汇编语言写的部 分只有200行左右,该实时内核可以方便的移植到几乎所有的嵌入式应用的CPU 上。移植范例的源代码可以从因特网下载。绝大部分uC/OS-II的源码是用移植 性很强的ANSI C写的,与微处理器硬件相关的那部分是用汇编语言写的。汇编 写的部分已经压到最低限度,uC/OS-II便于移植到其他微处理器上。uC/OS-II 可以在绝大多数8位、16位、32位以至64位微处理器、微控制器、数字信号处 理器上运行,但功能过于简单,很多复杂的驱动都没有能够实现。嵌入式Linux嵌入式Linux (Embedded Linux)是指对标准Linux经过小型化裁剪处理之 后,能够固化容量只有几KB或者几MB字节的存储器芯片或者单片机中,是适 合于特定嵌入式应用场合的专用Linux操作系统。在目前己经开发成功的嵌入 式系统中,大约有一半使用的是Linux。这与它自身的优良特性是分不开的。嵌 入式Linux同Linux样,具有低成本、多硬件支持、性能优异和良好的网络支 持等优点。另外,为了更好地适应嵌入式领域的开发,嵌入式Linux还在Linux 基础上做了部分改进,如下所示。改善的内核结构,Linux内核采用的是整体式结构(Monolithic),整个内核 是一个单独的、非常大的程序,这样虽然能够使系统的各个部分直接沟通,提高 系统的响应速度,但与嵌入式系统存储容量小、资源有限的特点不相符合。因此, 在嵌入式系统经常采用的是另一种称为微内核(Microkernel)的体系结构,即内 核本身只提供一些最基本的操作系统功能,如任务调度、内存管理、中断处理等, 而类似于文件系统和网络协议等附加功能则运行在用户空间中,并且可以根据实 际需要进行取舍。这样就大大减小了内核的体积,便于维护和移植。提高的系统实时性,由于现有的Linux是一个通用的操作系统,虽然它也采 用了许多技术来加快系统的运行和响应速度,但从本质上来说并不是一个嵌入式 实时操作系统。因此,利用Linux作为底层操作系统,在其上进行实时化改造, 从而构建出一个具有实时处理能力的嵌入式系统。嵌入式Linux用作实时操作系统的优点如下:源码开放,Linux最重要的一个优点是Linux的所有源代码都开放,它 是一个开放软件,是免费的和源代码公开的。内核源码可以从不同的几个网站下 载,比如http/。Linux下许多工具的源码也开放。Linux有一个庞 大的支持者群体,其中许多用户都编写了驱动程序和其它的更新程序并且免费地 通过Internet网络进行分发。这样新硬件的Linux驱动程序甚至比其它的Unix 系统如Solaris的驱动程序还更新得及时。Linux庞大的志愿者网络在生产“补丁” 程序方面反应也很快。支持多种硬件平台,Linux已经被广泛移植到AMDx86-64、ARM、 Compaq Alpha、CRIS、DECVAX、H8/300、Hitachi SuperH、HP PA-RISC、IBM S/390、Intel IA-64、MIPS、Motorola68000、PowerPC、SPARC、UltraSPARC 和 v850等各种体系结构上。它覆盖的领域小到手表,大到超级计算机集群。模块化设计,Linux系统上的任务模块都可以在运行时被链接或解除链 接,这样开发新的模块变得更加容易。使用模块化设计,可以节省内存的使用, 当需要模块功能时,就把它链接到正在运行的内核中,否则,将该模块解除链接, 这样的设计非常适合应用在小型嵌入式系统中。功能强大,Linux支持多任务的进程调度;提供完全的内存保护机制和 多种进程间通信和同步机制,例如共享内存、消息队列、管道、信号、信号量和 互斥锁等;支持包括多种网络协议的网络支持功能;支持包括网络文件系统等的 多种文件系统;启动和初始化进程控制得非常好,可以容易的定制系统启动的服 务和启动的服务的顺序,例如可以很方便的将Linux裁减为一个适合某类特定应 用的嵌入式系统。使用成本低,Linux是免费的,只要遵守了 GPL(GNU General Public License)的规定,就可以免费获得拷贝。Linux下有同样遵循GPL规定的C、C + +、Java等等一系列优秀的软件工具开发包,可以极大地降低开发成本。可靠的系统安全,Linux采取了许多安全的技术措施,包括对读/写进 行权限的控制、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必 要的安全保障。良好的可移植性,Linux是一个可移植的操作系统,Linux下的大部分 C代码都是与体系结构无关的,在许多不同的体系结构的计算机上都可以编译和 执行。可移植性为运行Linux的不同计算机平台与其它任何机器进行准确而有效 的通信提供了手段,不需要另外增加特殊的、昂贵的通信接口。通过以上操作系统的比较,考虑到了嵌入式Linux可以大大降低成本,并且 源代码开放,便于学习,以及嵌入式Linux的强大的功能和它的比较好的实时性, 最终本课题选择了嵌入式Linux作为寻迹机器人的实时操作系统。2嵌入式Linux的构建2.1系统引导程序BootloaderBootloader是在操作系统内核运行之前运行的一小段小程序,也是嵌入式操 作系统运行的第一个程序,作用是初始化系统硬件、建立内存空间的映射图、将 系统带入合适的启动环境,为调用Linux内核作准备。Booltoader包含两种操作 模式:启动加载模式和下载模式。在启动加载模式(Bootloading)下,Bootloader 从NAND Flash中将操作系统加载到SDRAM中再运行;在下载模式 (Downloading)下,Bootloader通过串口和USB设备接口从主机上下载内核映像 和根文件系统映像等,从主机下载的文件通常首先被Bootloader保存到嵌入式平 台的SDRAM中,然后再被写入NANDHashn,当然一般都使用第一种方法。Bootloader的启动也分为stagel和stage2两个部分,Stagel阶段的任务是初始 化硬件设备(CPU、内存等)、拷贝stage2到内存空间、设置堆栈SP等,用汇编 语言来实现,加快启动速度;Stage2阶段任务是加载操作系统内核和文件系统, 并为内核设置适合的启动参数,接着再调用内核,将CPU控制权转交给操作系 统,这一段代码通常是用C语言来实现的,这样增加了代码的可读性和可移植 性。具体启动流程如图4.1所示。本设计采用的Bootloader为U-Bootl.2.0,目甜U-Bootl.2.0版本还不能支持 S3C2440,所以要从S3C2410的文件移植过来。2440与2410的最大区别在于 NAND FLASH的控制器的寄存器有较大变化,芯片的时钟频率控制器有一定变化,其他寄存器基本兼容。本文选择友善之臂公司设计的sbc2410作为蓝本来进行U-Bt的设计与移 植,U-Boot的移植过程主要分三步:建立编译平台、修改U-Bootl.2.0内容以支持硬件和编译。下面分别阐述。Stage 1Stage2图4.1 Bootloader启动流程建立编译平台在工作目录下解压 U-BOOT: $tar zxvfu-boot.git.tar.gz。进入工作目录,修改Makefile文件,为开发板QQ2440V3建立编译项, 并设置交叉编译器gcc-4.1.0-glibc-2.3.2的运行路径。建立编译项的命令如下:QQ2440V3_config:unconfig$(MKCONFIG)$(:_config=)arm arm920t QQ2440V3 QQ s3c24x0在/board子目录中建立自己的开发板QQ2440V3目录:$cd board$mkdir QQ QQ/QQ2440V3 $cp-arf sbc2410x/* QQ/QQ2440V3/$cd QQ/QQ2440V3$mv sbc2410x.c QQ2440V3.C另外要修改QQ2440V3目录下的Makefile文件,指定调用的可执行文件为QQ.o。在include/configs/中建立配置头文件:$cp include/configs/sbc2410x.h include/configs/QQ2440V3.h修改U-Boot中的文件来支持硬件修改/cpu/arm920t/start.s。U-Bootl.2.0暂时没有关于S3C2440的定义,所以S3C2440的硬件初始化部 分要自己定义,内容包括:a、修改寄存器地址定义;b、修改中断禁止部分;c、 修改时钟设置,本设计将S3C2440的时钟设置为405MHz; d、将从Flash启动 改为从NAND Flash启动。在 board/QQ/QQ2440V3 加入 NAND Flash 读函数文件。修改board/QQ/QQ2440V3/Makefile文件,指定调用的可执行文件为 QQ2440V3.o修改丨11(:11/(:116目8/(5()24403.11文件,主要是修改?匕811控制器 部分。修改board/QQ/QQ/lowlevel_init.s文件,设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。在/board/tekkaman/tekkaman2440/tekkaman2440.c 修改其对 GPIO 和 PLL的配置。在个文件中添加“CONFIG_S3C2440”,使得原来S3C2410的代码可以编译进来。在 include/linux/mtd/nand_ids.h 的结构体 nand_flash_ids 加入本设计中使用 的K9F2208U0B的配置信息。修改 common/env_nand.c,加入 K9F1208UOB 的配置信息。在/board/QQ/QQ2440V3/QQ2440V3.c 文件的末尾添加对 Nand Flash 的初 始化函数(在后面Nand Flash的操作都要用到)。在/include/s3c24x0.h 中加入 S3C2440 的 NAND Flash 寄存器定义和 CAMDIVN 定义。交叉编译U-Boot执行make指令,便可得到所需的U-B

温馨提示

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

评论

0/150

提交评论