《基于raspberryPi的AGV视觉导航设计.doc》由会员分享,可在线阅读,更多相关《基于raspberryPi的AGV视觉导航设计.doc(54页珍藏版)》请在三一办公上搜索。
1、摘 要移动机器人集人工智能、智能控制、信息处理、图像处理等专业技术于一体,成为当今机器人研究领域的热点之一。计算机视觉具有信息量丰富,信号探测范围广,获取信息完整等优点。近年来广泛应用于自主移动机器人领域,是自主移动机器人导航和避障的一个主要发展方向。本课题研究的目的包括,设计并构建基于Raspberry Pi的视觉移动AGV控制系统,实现自主移动机器人的视觉导航功能。本论文完成如下几个方面的研究内容。机器人视觉导航图像处理算法设计,驱动部分设计,跟踪算法设计。设计开发控制系统,实现摄像机视频流信息的获取。对于获取的摄像机的视频流信息,通过图像处理算法提取路面信息,并通过串口与下位机进行通信,
2、下位机根据路径信息指定模糊控制算法。本论文设计了基于视觉导航的自主移动机器人整体结构,包括机械结构和差速驱动控制系统的设计。为进一步研究基于视觉导航的自主移动机器人,提供了良好的实验平台。关键词: Raspberry Pi;AGV;机器视觉; 串口AbstractMobile robot integrates of artifical intelligen information collecting and image processing technology. It becomes one of the hotspot in the field of the robot research
3、. Computer vision technology has been widly used in mobile robot for providing rich information. So it becomes one of the important branches in robot research field.The purpose of this research include the design of vision-based navigation AGV system based on the Raspberry Pi platform, and the visio
4、n navigation method of autonomous mobile robot. This thesis completed the following a few aspects of the research content. Driven robot visual navigation image processing algorithm design, part design, tracking algorithm design. Design and development control system, realize the camera video informa
5、tion retrieval. Extract the road information through the image processing algorithms , and communicate with the lower machine through a serial port with , lower machine specified fuzzy control algorithm according to the path information . In this thesis, providing a vision-based navigation of autono
6、mous mobile robots design including mechanical structure and differential drive control system design. This system provides a good experimental platform for further study of vision-based navigation of autonomous mobile robots. Keywords: Raspberry Pi ; AGV ; Vision-based navigation ; Serial 目 录摘 要IAb
7、stractII1. 绪论11.1 课题来源以及背景意义11.2 概述21.2.1 导航技术21.2.2 路径规划和路径跟踪技术41.2.3 多传感器集成与融合41.2.4 多机器人协作技术51.3 系统平台51.3.1 Raspberry Pi51.3.2 Arduino71.4 论文的主要内容及研究方法82. AGV视觉导航的总体设计方案102.1 引言102.2 硬件平台102.2.1 车体构造102.2.2 电气装置112.2.3 测速模块122.2.4 无线模块122.2.5 摄像头模块132.3 软件平台142.4 视觉导航机器人的性能指标162.5 本章小结173. 图像处理18
8、3.1 数字图像处理算法设计183.2 图像处理算法实现203.2.1 图像采集203.2.2 RGB图像转HSV图像213.2.3 图像滤波243.2.4 路径提取263.2.5 信息传输293.3 本章小结314. 驱动控制部分的设计与分析324.1 引言324.2 驱动方式分析324.3 双轮差分驱动的运动学分析334.4 测速模块设计354.5 PID控制器的设计364.6 本章小结395. 基于模糊预瞄的控制算法实现405.1 引言405.2 模糊预瞄算法405.3 试验效果415.4 本章小结44结论45致 谢46参考文献47错误!未找到索引项。不要删除行尾的分节符,此行不会被打印
9、千万不要删除行尾的分节符,此行不会被打印。在目录上点右键“更新域”,然后“更新整个目录”。打印前,不要忘记把上面“Abstract”这一行后加一空行1. 绪论1.1 课题来源以及背景意义自动导航车(Automated Guided Vehicles, AGV)又名无人搬运车,出现于20世纪50年代,是一种自动化的无人驾驶的智能化搬运设备,属于移动式机器人系统,能够沿预先设定的路径行驶,是现代工业自动化物流系统如计算机集成制造系统中的关键设备之一。AGV具有灵活性、智能化等显著特点,可以方便的重组系统,实现生产过程的柔性化运输。与传统的人工或半人工的物料运输方式相比,AGV的系统减轻了劳动强度,
10、降低了危险性,提高了生产效率,在各行各业能发挥重要作用1。嵌入式控制系统是AGV的核心,它的主要任务是控制AGV导向、启动、停车、运行车速、选择路线、安全监控、避免碰撞和交通干涉、与交通控制器通讯、与其他物料搬运设备和机器人等接口。以应用为中心,以计算机技术为基础,软件、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗要求严格的专用计算机系统称为嵌入式系统。在控制功能比较单一,逻辑结构比较简单的前提下,控制软件的设计相对容易。而当控制系统的功能日渐复杂,从新设计一个新的控制软件系统的费用和工作量就成倍地增长。因此采用嵌入式操作系统将嵌入式控制软件的通用部分提取出来,屏蔽不同硬件系统和应
11、用软件系统之间的不同,使他们彼此透明,就可以抛开具体的硬件和资源管理的细节,而专注于自身具体应用功能的实现,这就大大减轻了应用软件的开发难度。但是于此同时,针对于工业AGV实时性比较高的嵌入式系统价格一般都比较高昂,而一般的低端的嵌入式系统又很难满足其一般要求。经过对比,本系统才用了一款名为Raspberry Pi的嵌入式系统,虽然价格不高,但是却能基本实现本设计的基本要求。Raspberry Pi(RPi)是一款基于Linux的个人电脑,配置一枚700Mhz的处理器,512的内存,支持SD卡和Ethernet ,虽然其大小只有一般信用卡大小,但是其汲取OpenGL的GPU(Broadcom
12、VideoCore IV)赋予了其强大的图像处理功能。操作系统基于debian,是遵循公共许可证(GPL)的开放源代码自由软件。其具有完善的开发平台和函数库。正因为其开源性,其成本可以压缩到每块35美元,与同类型的嵌入式系统相比具有很强的性价比优势。同时,Linux内核完整的网络协议,使得实现嵌入式系统的网络功能非常方便2-3。1.2 概述1.2.1 导航技术导航技术是移动机器人研究的关键技术之一4,是其实现真正智能化和完全自主移动的关键技术,它通常包括自身和环境信息的获取及理解、运动控制算法等。移动机器人的导航问题主要涉及DurrantWhyte提出的三个问题:“我现在何处?”,我要往何处去
13、?”,“要如何到该处去?5。其中第一个问题是导航系统中的定位问题,即确定移动机器人在工作环境中相对于全局坐标的位置及其本身的姿态,第二、三个问题是导航系统的路径规划及跟踪。移动机器人的导航方式根据机器人工作环境的复杂性、配备传感器的种类和数量的不同,分为以下几种方式:l)磁导航。磁导航是目前自动导引车(automatedguidedvehicle,AGV)的主要导航方式。AGV是移动机器人中的一种,同时AGV也是自动化物流运输系统柔性生产组织系统的关键设备。磁导航方式要在AGV运行路径上,开出深度为10mm左右,宽5mill左右的沟槽,在其中埋入导线。在导线上通以530kHz的交变电流,在导线
14、周围产生磁场。AGV上左右对称安装了两个磁传感器,用于检测磁场强度引导车辆沿所埋设的路径行驶。这种导航方式在AGV中广泛应用,并且该方式技术成熟可靠,但对环境的适应能力较差,而且在安装维护成本、灵活性、抗干扰能力等方面尚有很大差距6。2)里程计导航。里程计导航是根据机器人左右两轮上里程计信息推算出当前的位置和航向,初始位置和航向要已知7。它是实现相对定位最简单的方法且实现成本低廉,并且能够实现实时性。但是由于是通过对两个轮子在时间上位移增量的累加来实现定位,因此在长距离的导航时,累积误差将会增加,使得其准确度下降8。3)惯性导航。它利用机器人装配的光电编码器和陀螺仪计算机器人航程,从而推知机器
15、人当前的位置和下一步目的地。惯性导航系统的优点是不需要外部参考,但是随时间的漂移,经积分后,任一小的常数误差就会无限增长,所以惯性传感器对于长时间的精确定位是不适宜的9。4)GPS导航。全球定位系统(GPS)是适用于室外移动机器人的一种全局定位系统,是美国第二代军用卫星导航系统,也是目前世界上最先进的卫星导航系统10。通过接收GPS卫星信号并分析处理,确定导航对象在地表的位置,由于GPS定位系统的精度高、覆盖范围广,一般在军事中发挥着巨大的作用。5)视觉导航。机器人系统中的视觉子系统获取当前状态下机器人周围环境信息,通过分析确定环境对象和机器人在环境中的位置。视觉导航主要完成障碍物,路标的探测
16、及识别,根据路标的不同,可分为人工路标导航和自然路标导航。视觉导航方式具有信号探测范围广,获取信息较其它传感器更完整、信息量大等优点,是移动机器人导航的一个主要发展方向。目前国内外主要采用在移动机器人上安装车载摄像机的基于局部视觉的导航方式,如:DLBoley等研制的移动机器人利用车载摄像机和较少的传感器通过识别路标进行导航11;AOhya等利用车载摄像机和超声波传感器研究了基于视觉导航系统中的避碰问题12。视觉导航中图像分割、边缘检测、特征提取等图像处理方法计算量大且实时性较差,解决该问题的关键在于怎样设计一种快速实时的图像处理方法或者采取多传感器集成与融合的导航方式。6)超声波导航13。通
17、过在移动机器人车身上安装超声波的发射和接收装置,测得移动机器人到障碍物或者路标的距离和方位从而估计机器人的位置。超声波导航方法的优点是硬件结构简单,价格低廉,容易操作,但是因为超声波传感器自身的缺陷,如:镜面反射、有限的波束角等,给充分获得周围环境信息造成困难。在实际应用中,往往采用其它传感器来补偿,或采用多传感器融合技术提高检测精度等。综合以上几种导航方式,本系统采用基于视觉的导航技术,一方面视觉系统可以获得巨大的信息量;另一方面,采用视觉导航可以最大程度的降低成本。1.2.2 路径规划和路径跟踪技术路径规划技术是机器人研究领域中的一个重要分支。路径规划是依据某种优化准则(如行走路线最短、行
18、走时间最短、行走能量消耗最低等),在其工作空间中找到一条从起始位置到目标位置,且能避开障碍物的最优路径14。对移动机器人的路径跟踪的研究主要集中在两个方向上:一是路径的设置及其信息的获取;二是控制方法的研究。路径的设置主要有两种方法,即有线路径和地图路径。移动机器人有线路径可以是埋在地下的电缆、铺刷在地面上的磁性路径或者有色亮带、自然或人工摆设的墙壁等。地图路径可以是基于全局路径规划的路径,也可以是示教的路径。移动机器人路径跟踪的控制方法有很多,从经典的PID控制到各种智能控制,都可以来进行移动机器人的路径跟踪。由于移动机器人的运动学和动力学模型较为复杂,加之一些非线性因素和不定因素的影响15
19、,使得移动机器人的运动控制很复杂。因为本系统采用的低端的嵌入式系统,为了尽可能的降低计算量,采用的是基于模糊控制的“预瞄跟随”方法,这一方法将在第五章中详细介绍。1.2.3 多传感器集成与融合对移动机器人来讲,无论是导航控制,还是路径规划与路径跟踪控制,都要通过传感器感知外部环境和自身状态。受环境干扰因素的影响和自身性能的限制,单一传感器提供的信息往往是不完备的,移动机器人很难依此做出合理的判断,因此限制了系统的感知能力和鲁棒性。因此,移动机器人常采用视觉、超声、红外和激光等多传感器集成来获得环境信息,这些信息在时间、空间、可信度、表达方式上不尽相同。但是,这些信息都是同一环境下对目标不同侧面
20、的反映,因此存在一定的相关性Il引。利用多传感器信息融合技术,对这些信息进行综合,获得冗余的、互补的、完整的外界信息,使移动机器人能够做出合理的、高鲁棒性的行动决策。多传感器信息融合比较确切的定义可概括为:利用计算机技术对按时序获得的若干传感器的观测信息在一定准则下加以自动分析、优化综合以完成所需的决策和估计任务而进行的信息处理过程17。把信息融合技术应用到移动机器人上的研究,虽然国内外许多研究工作者己经做了大量的工作,但由于移动机器人平台的多样性,加上信息处理的复杂性和工作环境的不确定性等原因,对如何有效地、实时地进行信息不同层次的采集、分析、融合,及信息的不确定推理、理解等方面仍旧没有一个
21、好的统一的解决方案。因此,深入研究多传感器信息融合技术在全自主移动机器人上的应用,实现信息融合技术与机器人技术的完美结合,对智能机器人的研究和发展具有重要意义。利用多传感器技术可以很好弥补视觉AGV系统在道路识别以及蔽障等问题上的不足。1.2.4 多机器人协作技术近年来,多机器人协作系统以其突出的柔性、鲁棒性和自主性逐渐应用于工业生产的各个领域18。通过多机器人的协作,可以完成单机器人难以完成的复杂作业,提高机器人系统在作业过程中的效率;当机器人工作环境发生变化或系统局部发生故障时,多机器人之间通过其固有的自组织能力及协作机制重新确立协作关系,仍然可以完成预定作业。自上世纪90年代以来,对多机
22、器人系统的研究越来越受到重视19。多机器人系统的研究分为多机器人合作和多机器人协调两大类,主要研究给定一个多机器人系统任务后,如何组织多个机器人去完成任务,如何分解和分配任务以及如何保持机器入之间的运动协调一致。多机器人协作新的技术研究和应用领域不断出现,多机器人协作仍然是一个刚刚起步的研究领域。在实际的工业环境中,如何协调多台AGV的同时操作已经成为AGV研究领域的重要问题,合理的调度可以大大提高AGV机器人的执行效率。1.3 系统平台1.3.1 Raspberry PiRaspberry Pi(中文名为“树莓派”,简写为RPi,或者RasPi/RPi)是为学生计算机编程教育而设计,只有信用
23、卡 大小的卡片式电脑,其系统基于Linux。它由注册于英国的慈善组织“Raspberry Pi 基金会”开发,EbenUpton/埃厄普顿为项目带头人。2012年3月,英国剑桥大学埃本阿普顿(Eben Epton)正式发售世界上最小的台式机,又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能,这就是Raspberry Pi电脑板,中文译名树莓派!这一基金会以提升学校计算机科学及相关学科的教育,让计算机变得有趣为宗旨。基金会期望这 一款电脑无论是在发展中国家还是在发达国家,会有更多的其它应用不断被开发出来,并应用到更多领域。在2006年树莓派早期概念是基于Atmel的 ATmega64
24、4单片机,首批上市的10000“台”树莓派的“板子”,由中国台湾和大陆厂家制造。截止至2012年6月1日,树莓派只有A和B两个型 号,主要区别:A型:1个USB、无有线网络接口、功率2.5W,500mA;B型:2个USB、支持有线网络、功率3.5W,700mA。它是一款基于ARM的微型电脑主板,以SD卡为内存硬盘,卡片主板周围有两个USB接口和一个网口,可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等著多功能。 Ra
25、spberry Pi B款只提供电脑板,无内存、电源、键盘、机箱或连线。树莓派的生产是通过有生产许可的两家公司:Element 14/Premier Farnell和RS Components。这两家公司都在网上出售树莓派。树莓派配备一枚700MHz博通出产的ARM架构BCM2835处理器,256MB内存(B型已升级到512MB内存),使用SD卡当作储存媒体,且拥有一个Ethernet,两个USB接口,以及HDMI(支持声音输出)和RCA端子输出支援。Raspberry Pi只有一张信用卡大小,体积大概是一个火柴盒大小,可以执行像雷神之锤III竞技场的游戏和进行1080p影片的播放。操作系统采
26、用开源的Linux系统,比如Debian、ArchLinux,自带的Iceweasel、KOffice等软件能够满足基本的网络浏览,文字处理以及计算机学习的需要,分A,B两种型号,其中售价分别是A型25美元,B型35美元。基金会从2012年2月29日开始接受B型的订货。树莓派基金会提供了基于ARM的Debian和Arch Linux的发行版供大众下载。还计划提供支持Python作为主要编程语言,支持BBC、BASIC 、(通过 RISC OS 映像或者Linux的Brandy Basic克隆)、C和Perl等编程语言。Broadcom的BCM2835的700MHz的ARM1176JZFS处理器
27、的FPU的VideoCore 4 GPU。GPU提供的Open GL ES 2.0,硬件加速OpenVG的,和1080p30 H.264解码高调GPU是能够的1Gpixel /秒,1.5Gtexel / s或24GFLOPs的纹理过滤和DMA基础设施。512MB RAM10/100 BaseT以太网插座HDMI插座USB 2.0插槽(X2)RCA视频插座RCA视频插座microUSB插口供电3.5毫米音频输出插孔1.3.2 ArduinoArduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE)。它适用于艺术家、设计师、爱
28、好者和对于“互动”有兴趣的朋友们。Arduino,是一个基于开放原始码的软硬体平台,构建于开放原始码simple I/O介面版,并且具有使用类似Java,C语言的Processing/Wiring开发环境。图1-1 ArduinoArduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控 制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是利用 Arduino编程语言 (基于Wiring)和Arduino开发环境(based on Processing)来实现的。基于Arduino的项目,可
29、以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。相对于同类型单片机,它具有如下优势:1) 开放源代码的电路图设计,程序开发接口免费下载,也可依需求自己修改。2) 使用低价格的微处理控制器(AVR系列控制器),可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。3) Arduino支持ISP在线烧,可以将新的“bootloader”固件烧入AVR芯片。有了bootloader之后,可以通过串口或者USB to Rs232线更新固件。4) 可依据官方提供的Eagle格式
30、PCB和SCH电路图简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:红外线,超音波,热敏电阻,光敏电阻,伺服马达,等)5) 支持多种互动程序,如:Flash、Max/Msp、VVVV、PD、C、Processing等。基于Arduino的开源特性,Arduino在于RPi的交互中体现了很好的兼容性,这一点在之后几章的介绍中可以很好的体现出来。1.4 论文的主要内容及研究方法AGV系统分为Rpi 为核心的上位机以及以Arduino为核心的下位机。Rpi通过链接于它的CCD摄像头采集图像并进行分析,同时Rpi应用自身的wifi模块建立网络节点,与其
31、他AGV以及总服务站进行通讯。下位机采用Arduino(AVR 8位单片机)进行对AGV地盘的差分驱动控制,并对红外传感器、激光测距传感器进行实时读取。Arduino与Rpi之间进行串口通讯。总结起来,毕设主要研究的内容如下:(1)基于opencv的数字图像预处理 OpenCV于1999年由Intel建立,现在由Willow Garage提供支持。OpenCV是一个基于1(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效由一系列 C 函数和少量 C+ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理
32、和计算机视觉方面的很多通用算法。预处理包括图像采集彩色转HSI图像增强灰度二值化去离散干扰噪声(2)基于opencv的数字图像特征标识 采用边缘检测等算法,实现对包括区域路线以及路标的辨识(3)移动机器人平台设计和运动学分析 针对差分驱动结构的机器人,对其运动学特性进行分析并得出小车的系统空间方程与机器人驱动转速之间的关系。(4)移动机器人平台的差速驱动控制系统设计 设计并制作差速驱动系统的控制电路。该系统由直流电机、减速器、光电编码盘、arduino 8L单片机、电机驱动芯片构成。通过Arduino接受Rpi的控制指令,并把命令转换成PWM脉冲信号,该信号经过L298放大,从而驱动直流电机运
33、动。单片机对编码器反馈信号经过PI控制器处理,从而可以实现对直流电机的精确速度闭环控制。(5)移动机器人的决策控制设计 通过Arduino实时测量的各种传感器的信息以及Rpi对图像处理分析的结果,建立一套撸棒性比较高的控制策略。是东方还是大开发好的师傅的决定是否2. AGV视觉导航的总体设计方案2.1 引言针对于以Raspberry Pi(一下简称RPi)为核心的AGV平台包括硬件与软件两个方面。其中硬件平台主要包括车体、电气驱动装置、测速模块、无线模块和摄像头模块。软件部分采用基于OpenCV为核心的视觉处理算法,通过cmake编译上位机程序,以及由ArduinoIDE编译的下位机平台来实现
34、。2.2 硬件平台2.2.1 车体构造AGV的车体构成如图2-1所示。a) 车体框架b)万向轮图2-1AGV车体实物AGV车体由两个直流电机、减速器、万向轮、相应的驱动电路、锂电池以及控制模块构成。其中前后车轮采用三轮式结构,前轮是辅助轮,两个后轮是驱动轮。如图2-2所示。采用这样的结构一方面在于可以根据左右驱动的差速来控制AGV转向,另一方面是可以减少功耗。图2-2 三轮式AGV 2.2.2 电气装置如图2-3所示,AGV的电气驱动由Arduino下位机、直流伺服电机、电机驱动器和减速器构成。AGV通过下位机控制两个伺服电机的转速。图 2-3 AGV电气驱动装置2.2.3 测速模块如图2-4
35、所示,测速模块采用光耦光电传感器,在单位时间内读取脉冲个数,从而计算出每个轮的转速。图 2-4 测速模块2.2.4 无线模块常见的近距离无线通信技术有蓝牙、ZigBee、Wi-Fi等,远距离通信技术有GPRS、射频、GPS、3G等,本系统结合AGV的实际运行环境,采用近距离与远距离结合的方案。如图2-5所示,在室内等近距离环境,采用由WIFI基站构成的无线局域网环境;在室外等远距离环境,采用由3G构成的远程通信方式。a) wifi模块b) 3G 模块图2-5 无线通信模块2.2.5 摄像头模块AGV的视觉导航,主要依靠摄像头模块检测道路信息。摄像头分为CMOS与CCD两种。如图2-6所示,在不
36、影响对数据的提取的前提下,本模块采用了一种廉价的CMOS摄像头。图2-6 摄像头模块2.3 软件平台AGV控制系统的上位机以RPi为平台,使用CMake为软件开发环境。CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C+特性,类似UNIX下的automake。只是CMake 的组态档取名为CmakeList.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C+ projects/wo
37、rkspaces),然后再依一般的建构方式使用。上位机中的图像处理以及无线通信的相关算法都是在该环境下完成的。下位机采用Arduino平台,并采用基于Arduino的官方IDE。这里的算法包括车速控制以及路径规划。AGV系统的整个流程图框架如下。a) 上位机b)下位机图2-7 系统流程图2.4 视觉导航机器人的性能指标AGV 涉及到的技术主要包括机器视觉技术、运动控制技术、无线通信技术和传感器技术。具体如下:AGV 路径和路标的识别,控制算法的选择与优化,无线通信指令的发送接收,红外传感器的应用等等。AGV 的相关技术指标如表 2-1 所示:表 2-1 工程技术指标型 号 RTW0.1导引方式
38、 机器视觉导引驱动方式 差分驱动车体尺寸 250mm150mm130mm自重2 kg最大速度 0.10 m/s走行方式 驱动轮差动转向;前进、后退、原地回转最小回转半径 0.2m电池 锂电池7.4v2200mah运行模式 手动、自动两种模式通讯方式 无线通信使用环境 1040C(室内);地面倾斜 1以内2.5 本章小结本章主要讲述了AGV的硬件平台、软件平台以及工程技术指标。硬件平台以图片实例详细介绍了AGV 的车体外观,电气驱动元部件,无线通信和传感器选型等等;软件平台则以程序流程图的形式介绍了 AGV的算法思想,其中涉及到的各个算法的理论基础将在后面几章详细阐述。3. 图像处理3.1 数字
39、图像处理算法设计图像工程技术在广义上分为:图像处理、图像分析和图像理解三个层次。数字图像处理的预处理对于图像信息的获取至关重要,通常AGV在工业环境中会遇到各种干扰光以及油渍的影响,合适的处理方式可以增强图像对于干扰的适应能力。因此图像预处理的好坏将直接影响AGV的工作状况。基于移动式机器人的视觉导航其最大特点在于采用视觉来获取信息。本系统采用的是标识线识别法,其基本原理为,由CMOS摄像头对包含路径信息的图像进行提取,经过图像预处理后,提取出所需要的路径特征信息。在考虑运行环境实际情况的基础上,本系统采用在灰色地板暗黄色线的路线搭配,如图3-1所示,同时有强光干扰,以模拟最糟糕的工业环境。
40、图3-1 测试道路本系统所采用的图像处理主要包括数字图像的预处理以及图像特征分析。图像处理的整个流程图如3-2所示,图像预处理算法有:图像采集、RGB图像转HSV图像、HSV图像增强、灰度二值化、去离散噪声;图像特征分析包括:中值法提取曲线、最小二乘法提取直线以及处理数据发送。以上这些工作都在RPi中实现。本章将具体介绍图像处理算法的具体实现。图3-2 数字图像处理的算法流程3.2 图像处理算法实现3.2.1 图像采集图像传感器是一种可以将光学信号转换成信号的感光元件,目前主流的图像传感器分别为感光耦合元件(charge-coupled device, CCD)和互补式金属氧化物半导体有源像素
41、传感器(CMOS Active pixel sensor)。CCD图像传感器是一种基于模拟信号的设备,当光投射到其表面时,将有信号电荷产生,由这种电荷转变成的电压,会按指定的时序将图像信息传出。与CCD不同,CMOS图像传感器是基于CMOS半导体技术的,它并不涉及信号电荷,而是每个光电传感器附近都有相应的电路直接把这些信号转变成电压信号。同等条件下,CMOS所采用的元件数少、成本低、低功耗而且数据吞吐量比CCD更高。CCD的数据传输速度一般不会超过70百万像素/秒,而CMOS却可以达到100万像素/秒。但与此同时,CCD在制作工艺方面也越来越成熟,而且在一些性能方面也逐渐凸显自己的优势。基于C
42、MOS图像传感器的这些优势,本系统采用的是基于CMOS的USB通用摄像头,如图3-2所示。图 3-2 CMOS摄像头图像经过摄像头采集后在RPi中以矩阵的形式呈现(3.1)图片被保存为N行(roll),M列(column)的数组形式,以24位彩色图像形式保存。3.2.2 RGB图像转HSV图像 彩色图像所包含的颜色信息是指导机器人进行目标识别和跟踪以及定位导航的关键。颜色空间具有多种表示方法,其中最为常见的为:RGB、HSI等。RGB空间是最为常见的颜色空间,它最符合人的视觉习惯。该空间采用红、绿和蓝作为三基色对空间中的任意一种颜色进行描述,任意一色均可以表示为这三种颜色的线性组合。HSI颜色
43、模型是由梦塞尔(Munsell)最早提出的一种颜色系统格式,它是以人类对颜色的感知方式为基础,用色调(hue)、饱和度(saturation)和亮度(intensity)3个分量来构成颜色空间。其中H分量代表颜色光的基本特性,S分量代表颜色的纯度,I分量代表光的强度,与颜色信息无关。HSI模型与RGB空间的转换公式为: (3.2)在工业环境下,其平面经常是反光的,如图3-3所示,这样会造成很大光干扰。太阳光的反射、物体的倒影、日光灯的倒影等都会对道路的提取产生很大的影响。因此本系统采用基于HSV的图像提取,只采取其中的H与S通道,即色调与饱和度,而把亮度屏蔽掉。图 3-3 工业环境中的道路首先
44、给出Matlab的实现方案:% Extract the individual component imagesrgb = im2double(img);r = rgb(:,:,1);g = rgb(:,:,2);b = rgb(:,:,3);% Implement the conversion equationsnum = 0.5*(r-g)+(r-b);den = sqrt(r-g).2+(r-b).*(g-b);theta = acos(num./(den+eps); H = theta;H(bg) = 2*pi-H(bg);H = H/(2*pi); num = min(min(r,g)
45、,b);den = r+g+b;den(den=0)=eps;S=1-3.*num./den;H(S=0) = 0;I = (r+g+b)/3;OpenCV的实现方法:cvtColor(img_rgb,img_hsv,CV_BGR2HSV); split(img_hsv, spl); 在这里,cvtColor()函数是OpenCV中常用的图像转换函数,img_rpg为原始图像,img_hsv为转换后的图像,CV_BGR2HSV为转换方式。因为OpenCV本身不能识别我的操作,所以我必须告诉它是RGB图像转换为HSV图像。split()函数的作用是把一个三通道的图像的每个通道分离开,分别将其赋值
46、到spl数组的spl0、spl1、spl2中,并分别对应HSI的H、S、I通道。在此基础上,分别对H、S通道设定阈值,提取出来的二值图像进行与操作。 首先给出Matlab的实现方式:% segmentH=H*255;S=S*255; H(find(H80)=1;%P=H+S;H(find(H=0)=1;OpenCV的实现方式: HSV_H = Mat:zeros(S,0) + 79; /三个通道的设定值HSV_S = Mat:zeros(S,0) + 36; HSV_V = Mat:zeros(S,0) + 120;for (int i =0; i 3; +i)if (i = 0)compar
47、e(spli,HSV_H,spli,CMP_GE);if (i = 1)compare(spli,HSV_S,spli,CMP_GE);if (i = 2)compare(spli,HSV_V,spli,CMP_LE);bitwise_and(spl0,spl1,H_S); / Channel_H & Channel_SMat是OpenCV下储存图像最常用的数据类型,它包括两个部分,Hander(包含矩阵大小、储存方式以及储存地址等信息)和一个指向该矩阵的指针。Mat:zeros(S,0)的意思是指生成一个跟S图像一样大小的模板,并全部赋值为0。通过这种方式,我们可以得到被赋予三个不同值的模板。compare()函数作用是对比两个相同大小(行列相同)但像素直不同的图像,并对两幅图