嵌入式系统在机器人视觉中的应用嵌入式课程设计报告书.docx
《嵌入式系统在机器人视觉中的应用嵌入式课程设计报告书.docx》由会员分享,可在线阅读,更多相关《嵌入式系统在机器人视觉中的应用嵌入式课程设计报告书.docx(15页珍藏版)》请在冰豆网上搜索。
![嵌入式系统在机器人视觉中的应用嵌入式课程设计报告书.docx](https://file1.bdocx.com/fileroot1/2023-1/26/e0c96d5c-512c-4197-afda-d2f79045ef34/e0c96d5c-512c-4197-afda-d2f79045ef341.gif)
嵌入式系统在机器人视觉中的应用嵌入式课程设计报告书
嵌入式系统在机器人视觉中的应用
4.4图像采集模块8
五、机器人视觉的软件系统设计10
5.1软件系统总体设计10
5.2图像采集软件模块11
5.2.1JPEG300数码相机的时序与驱动11
5.2.2图像采集驱动程序12
5.3图像处理软件模块13
5.3.1JPEG图像压缩与解压缩13
5.3.2图像匹配算法15
5.3.3图像处理模块的设计16
5.4机器人运动控制软件模块16
六、仿真调试分析17
七、设计中的问题与解决方法17
八、嵌入式系统学习心得18
九、参考文献18
嵌入式系统在机器人视觉中的应用
一、设计要求
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
机器人视觉系统是嵌入式系统在机器人研究领域中的一项重要应用。
本课程设计要开发一种通用的嵌入式系统平台,进行操作系统的移植和图像匹配等算法的研究,并将其应用于移动机器人的视觉导航。
二、设计作用与目的
2.1机器人视觉系统的发展历史与研究现状
机器人视觉是一门新兴的发展迅速的学科。
从20世纪60年代开始,人们便着手研究机器人的视觉系统。
一开始只能识别平面上的类似积木的物体。
到了20世纪70年代,已经可以认识某些加工部件。
由于视觉系统的信息量极大,处理这些信息的硬件系统十分庞大,花费的时间也很长,所以无法应用于实际。
进入20世纪80年代后,随着人工智能、并行处理和神经元网络等学科的发展,促进了机器人视觉系统的实用化,机器人视觉的研究经历了从实验室走向实际应用的发展阶段。
从简单的二值图像处理到高分辨率多灰度的图象处理,从一般的二维信息处理到三维视觉机理以与模型和算法的研究都取得了很大的进展。
各国的研究人员们设计出了各种各样的移动机器人视觉系统,并在各自的移动机器人平台上做了很多研究工作。
美国CMU大学的S.Thrun等人研制的第二代博物馆导游机器人Minerva,基于双目视觉通过搜索并识别室天花板上的吊顶来实现室导航。
加拿大UBC大学的Stephen和David通过特征跟踪来实现基于三目视觉的定位与地图构造。
美国MIT的Margritt基于全景视觉的路标识别来实现移动机器人定位。
尽管在目前硬件和软件技术条件下,机器人视觉功能还处于初级水平,但其潜在的应用价值引起了世界各国的高度重视。
发达国家如美国、日本、德国、法国等都投入了大量的人力物力进行研究,近年来已经在机器人视觉的某些方面获得了突破性的进展,机器人视觉在实际车辆上的应用也已初现端倪,在车辆安全技术、自动化技术等应用中也越来越显示出其重要价值。
2.2机器人视觉系统的研究目的与意义
这次课题的研究目的是开发出一个较为通用的嵌入式系统平台,进行嵌入式操作系统的研究和移植,并将其应用于机器人视觉导航中,从而实现智能机器人跟踪简单场景中的静止目标。
开发出这样一个系统,可以进行嵌入式操作系统、机器人视觉和导航技术,以与机器人的智能控制技术的研究。
同人类视觉系统的作用一样,机器人视觉系统赋予机器人一种高级感觉机构,使得机器人能以“智能”和灵活的方式对其周围环境做出反应,目的是要通过图像定位、图像理解,向机器人运动控制系统反馈目标或自身的状态与位置信息。
目前,机器人视觉相关研究工作已经在各个高校得到了广泛地开展,如何在机器人研究中采用新技术、新方法,提高科技创新能力,已经成为研究重点。
研究成果可推广到其他小型和微型机器人的视觉引导、智能交通、视觉监控产品、智能玩具等领域,具有广阔的发展空间和应用前景。
三、系统设计方案
3.1总体设计方案
3.1.1嵌入式系统硬件平台的设计
重点理解嵌入式微处理器的特点和使用方法,完成以嵌入式微处理器为中心的硬件平台的设计与开发。
具体来说,就是根据本课题的要求,完成嵌入式微处理器的选型、存储系统、图像采集模块和电机驱动模块的设计等。
3.1.2嵌入式操作系统的研究和移植
主要研究uC/OS-II嵌入式操作系统的核结构特性,并完成其在S3C44B0X微处理器上的移植,从而搭建一个完善的嵌入式系统软件平台。
选择uC/OS-II作为本次研究的重点,是由于它占用空间少,执行效率高,实时性能优良,并且针对新处理器的移植相对简单。
3.1.3机器人视觉软件系统的设计
机器人视觉软件系统的设计包括系统初始化软件模块、图像采集软件模块、图像处理软件模块、机器人运动控制软件模块、数据通信软件模块等。
此次课题设计采用的是嵌入式微处理器S3C44B0X、uC/OS-II操作系统。
3.2系统基本工作原理
3.2.1机器人视觉系统极其组成
机器人视觉是要通过图像定位、图像理解,向机器人运动控制系统反馈目标或自身的状态与位置信息。
机器人视觉系统如图1.1所示:
图1.1机器人视觉系统
从功能上来划分,机器人的视觉系统由图像输入、图像处理、图像存储和图像输出四部分组成。
1、图像输入部分(负责获取外界物体的光信号,并将其转换为相应的电信号,进而转换为数字信号,一般包括光源滤波、视觉传感、距离测定等)
2、图像处理部分(负责将获取的大量物体信息进行提取和处理,包括图像边缘的检测、连接、光滑和轮廓的编码,图像匹配等,并将处理后的数据传输给其他设备)
3、图像存储部分(主要担任数据的保存工作)
4、图像输出部分(主要是将物体的信息显示于屏幕上,同时将信息传送到机器人的主控系统,机器人根据所得信息便可进行相应的闭环控制)
3.2.2机器人视觉中的图像处理技术
机器人视觉中的图像处理技术包括图像数据编码和传输、图像增强与平滑、特征抽取、图像识别与理解、图像匹配等容。
1、图像数据编码和传输
图像数据编码一般采用预测编码,即将图像数据的空间变化规律和序列变化规律用一个预测公式表示,变换压缩方法是将整幅图像分成小的(一般取8×8或16×16)数据块,再将这些数据块分类、变换、量化,从而构成自适应的变换压缩系统。
2、图像的增强与平滑
图像的增强用于调整图像的对比度,突出图像中的重要细节,改善视觉质量。
3、图像的特征抽取、识别与理解
目前用于图像识别的方法主要分为决策理论和结构方法。
4、图像的匹配
现已提出了众多匹配算法,主要包括模板匹配算法、序贯相似性检测算法(SSDA)、幅度排序相关算法、FFT相关算法、分层搜索序贯判决算法等。
序贯相似性检测算法(SSDA)是利用模板不在匹配点上时,累计误差增长很快;反之,则增长缓慢这一特性,从而较快的剔除不匹配点,减少运算量,从而提高了搜索速度。
任何一种匹配算法的总计算量都是由相关运算的计算量与搜索的位置之积所决定的,即:
总计算量=(相关运算的计算量)×(搜索位置数)
因此,减少总的计算量有两种基本的方法:
一种是减少相关运算的计算量,以采用粗——精两级或多级匹配实现;另一种是减少搜索的位置数。
四、系统硬件平台的设计
4.1硬件系统的总体设计
系统的总体结构主要由嵌入式微处理器、存储系统、图像采集模块、电机驱动模块和数据通信模块等几个部分构成,系统的硬件结构框图如图4.1所示。
图4.1系统的硬件结构框图
我们选择以三星公司的S3C44BOX嵌入式微处理器为核心构建硬件系统。
这是一款基于ARM7TDMI核技术的32位RISC处理器,配置了2MB的FLASH存储器以与8MB的SDRAM存储器。
针对机器人视觉导航的特殊应用,在通用的硬件平台上,增加了相应的图像采集模块和电机驱动模块等外围器件。
图像采集模块负责图像的采集,是机器人视觉的输入。
电机驱动模块负责将图像处理后的结果转换成机器人的执行机构需要的电压和电流,实现对机器人本体中的电机进行伺服控制。
数据通信模块包括RS232接口、USB接口、以太网接口和JTAG接口。
课题中主要使用RS232接口进行嵌入式系统和PC机的数据通信,完成将图像数据传输到PC机上进行分析和系统调试的目的。
4.2机器人视觉的ARM系列微处理器的选择
嵌入式微处理器的选择是整个机器人视觉系统的核心。
我们采用三星公司的S3C44BOX微处理器,这是专为手持设备和一般嵌入式应用提供的高性价比和高性能的微控制器解决方案。
该微处理器是基于ARM7TDMI核技术的16/32位RISC处理器,工作主频最高可达66MHz,具有功能强大的存控制器,可以方便地进行系统存的扩展。
同时,该微处理器集成了一系列完整的通用外围器件。
使系统的费用降至最低,消除了增加附加配置的需要,降低了硬件开发的难度。
4.3存储系统的设计
4.3.1S3C44B0X微处理器存储系统的特征
S3C44B0X微处理器的存储系统具有以下一些主要特征:
1、支持数据存储的大/小端选择(通过外部引脚进行选择);
2、地址空间:
具有8个存储体,每个存储体可达32MB,总共可达256MB;
3、对所有存储器的访问大小均可进行改变(8位/16位/32位);
4、8个存储体中,Bank0~Bank5可支持ROM、SRAM;Bank6、Bank7可支持ROM、SRAM和FP/EDO/SDRAM等;
5、7个存储体的起始地址固定,1个存储体的起始地址可变(即Bank7的存储起始位置根据实际系统配置而定)。
4.3.2存储系统的配置
机器人视觉系统中,需要保存嵌入式操作系统和应用程序。
此外,还要保存图像采集模块获得的原始图像数据,以与图像处理模块进行图像处理时的中间运算结果。
因此,系统需要设计大容量的存,配置了2MB的FLASH存储器以与8MB的SDRAM存储器,具体配置如下:
表3.1存储系统配置
1、Bank0上的2MBFLASH存储器用于保存嵌入式操作系统以与应用程序,相当于电子硬盘的功能。
系统上电以后,PC指针自动指向Bank0的第一个单元,开始进行嵌入式系统初始化。
系统初始化完成以后,便从FLASH存储器中将系统文件和用户应用程序复制到SDRAM存中开始执行。
2、Bank6上的8MBSDRAM作为系统存,由于只有Bank6/Bank7能支持SDRAM,所以将SDRAM接在Bank6上。
Bank1~Bank5、Bank7中的部分存储体,作为系统外设的存储器映射之用,同时,为了便于系统扩展和升级,还有部分作为系统保留。
4.4图像采集模块
图像采集模块负责图像的采集,是机器人视觉的输入。
图像采集系统包括:
图像采集硬件、驱动软件和应用软件。
硬件可提供图像捕获、定时和控制功能;驱动软件通过一个标准的API接口对硬件进行操作;应用软件可以将硬件和驱动软件结合到特定应用的解决方案中,完成特定的功能需求。
本次课题选用了万德数码技术开发的JPEG300数码相机模块,JPEG300数码相机将视频捕捉、视频压缩、8位数据接口等功能集成在一块电路板上,可以满足各种嵌入式系统的要求。
JPEG300将原始图像压缩为JPEG格式,采用的是标准压缩算法。
JPEG300的数据接口是8位I/O模式并行接口,数据输出速度约为22K字节/秒。
JPEG300的数据输出速度是大致恒定的,因此其图像输出帧速取决于单帧图像的数据量,对于中等复杂图像,320×240模式时约可达到3帧/秒的帧速,160×128模式时约可达到6帧/秒的帧速。
JPEG300的接口引脚功能如表3.2所示:
表3.2JPEG300的接口引脚功能
引脚功能说明如下:
1、CAPMODE引脚用于设定采集模式,
CAPMODE=0,则输出图像分辨率为160×128。
CAPMODE=1,则输出图像分辨率为320×240。
2、CAPEN引脚用于允许或禁止JPEG300输出图像
CAPEN=0,则禁止输出图像。
CAPEN=1,则允许输出图像。
3、JPEGD0…JPEGD7并行数据输出8位的图像数据
4、JPEGINT从JPEG300到微处理器的中断信号。
JPEG300数码相机与系统的接口如图3.4所示。
图4.4JPEG300数码相机与系统的接口
4.5电机驱动模块
电机驱动模块负责将图像处理后的结果转换成机器人的执行机构需要的电压和电流。
这一部分是嵌入式系统针对机器人导航而做的特殊设计。
机器人的运动本体和驱动模块采用积成电子系统开发的“未来之星机器人”,我们主要利用该机器人的驱动模块提供的开放式接口,与嵌入式系统的PWM接口进行连接。
驱动板上的控制接口主要分为两组,其中IN0、IN1、MOTOR1为一组,IN2、IN3、MOTOR2为另一组。
电机驱动模块的IN0信号线与S3C44BOX微处理器的TOUT0引脚连接,用来接收PWM0输出控制信号,实现电机1(机器人左轮)的转速控制;IN1信号线与S3C44BOX微处理器的GPE4引脚连接,通过程序控I/O口输出高电平或低电平,实现电机1(机器人左轮)的转向控制;同理,电机驱动模块的IN2和IN3信号线分别与S3C44BOX微处理器的TOUT3和GPE7引脚连接,实现电机2(机器人右轮)的转速转向控制。
电机驱动模块与S3C44BOX微处理器的接口如图4.5所示:
图4.5电机驱动模块与系统的接口
五、机器人视觉的软件系统设计
5.1软件系统总体设计
机器人视觉的软件系统设计目标是,使得给定目标始终位于机器人图像视野的中央位置,保证稳定地跟踪给定目标。
基于机器人视觉系统的软件设计目标,对软件的结构进行了划分,机器人视觉系统的软件总体结构如图5.1所示:
图5.1机器人视觉系统的软件总体结构图
5.2图像采集软件模块
这是机器人视觉的输入模块,负责驱动JPEG300数码相机进行图像采集。
为了正确的获得图像数据,需要对JPEG300数码相机的时序进行分析。
5.2.1JPEG300数码相机的时序与驱动
JPEG300在电源供电后,部有一个复位和初始化过程,约为1900ms。
初始化完成后进入预备状态,JPEG300循环检测采集使能CAPEN引脚。
如果CAPEN=1,表示可以进行图像采集,进而检测采集模式CAPMODE引脚,以确定图像分辨率,随后JPEG300开始采集和压缩图像,并在图像数据总线JPEGD0…JPEGD7引脚上连续输出数据,每输出一个数据,就在数据传输中断JPEGINT引脚上产生一个中断信号,以通知S3C44B0X微处理器读取数据。
数据输出速度约为22K字节/秒。
JPEG300输出的是一个完整的JPEG文件,文件以“0xFF”、“0xD8”开始,并以“0xFF”、“0xD9”结束。
S3C44B0X微处理器将接收到的“0xFF”、“0xD8”和“0xFF”、“0xD9”以与它们之间的数据按顺序保存下来,就得到了一个标准的JPEG文件。
S3C44B0X微处理器还应该对接收的数据进行检查,当收到“0xFF”、“0xD9”时,表明文件结束,本次采集过程完成。
随后,JPEG300将重新回到预备状态。
JPEG300只有在预备状态才会查询CAPEN引脚,只要发现CAPEN=1就启动采集过程,即使随后CAPEN=0,这个采集过程也会坚持完成,而不会终止。
图5.2JPEG300数码相机时序图
5.2.2图像采集驱动程序
图像采集驱动程序和中断服务程序流程如图5.3所示:
图5.3图像采集驱动程序和中断服务程序流程图
现对程序流程做简要说明:
1、S3C44B0X微处理器与JPEG300的I/O接口初始化包括:
GPC口初始化,GPC6、GPC7配置为输出口,初始化为低电平,上拉电阻全部有效;GPD口初始化,GPD口全部配置为输入口,初始化为低电平,上拉电阻全部有效;GPG口初始化,GPG2配置为功能口INT2,作为外部中断信号的输入引脚,上拉电阻无效,上升沿触发。
2、S3C44B0X微处理器中断使能
首先清除INT2的中断挂起状态,然后INT2中断使能,准备接收JPEG300的图像数据传输中断请求。
3、设置JPEG300的采集模式,然后使能数据采集
CAPMODE=0,输出图像分辨率为160×128;
CAPEN=1,允许输出图像数据。
4、S3C44B0X微处理器接收JPEG300采集的图像数据
驱动程序在这里等待JPEG300产生的约10K次中断,即接收10K大小的JPEG格式的图像数据,并将其保存到全局数组中,以备图像处理模块使用。
JPEG300的中断服务程序负责中断数据的接收、中断信号的清除等操作。
5、JPEG300的数据采集禁止
保持CAPMODE=0不变,输出图像分辨率为160×128;
CAPEN=0,禁止输出图像数据。
6、S3C44B0X微处理器的中断禁止
首先INT2中断禁止,然后清除INT2的中断挂起状态,禁止响应JPEG300的图像数据传输中断请求。
7、任务间同步
发送消息到图像处理模块,通知其进行图像处理,同时,图像采集驱动程序阻塞自己,等待图像处理模块完成图像处理后,发送过来的消息。
8、循环至第2步,直至达到指定的跟踪次数。
5.3图像处理软件模块
这是实现机器人视觉的核心软件模块,需要完成的功能包括JPEG图像解压缩、图像匹配等。
5.3.1JPEG图像压缩与解压缩
压缩编码大致分成三个步骤:
1、使用正向离散余弦变换(forwarddiscretecosinetransform,FDCT)把空间域表示的图变换成频率域表示的图。
2、使用加权函数对DCT系数进行量化。
3、使用霍夫曼可变字长编码器对量化系数进行编码。
JPEG解压缩主要包括以下三个步骤:
1、使用熵解码器对压缩图像数据进行解码;
2、对熵解码器生成的数据根据量化表进行逆量化处理,生成图像数据的频率域的表示;
3、对图像的频率域数据进行逆向离散余弦变换(Inversediscretecosinetransform,IDCT),从而恢复出图像数据的空间域表示。
JPEG算法框图如图5.4所示:
图5.4JPEG压缩、解压缩算法框图
离散余弦变换(DCT):
对每个单独的彩色图像分量,把整个分量图像分成8×8的图像块,并作为两维离散余弦变换DCT的输入,通过DCT变换,把能量集中在少数几个系数上。
图5.5离散余弦变换
其中正向离散余弦变换(FDCT)使用下面的公式:
(5.1)
它的逆变换(IDCT)使用下面的公式:
(5.2)
5.3.2图像匹配算法
本系统中所采用的图像匹配算法是序贯相似性检测算法SSDA算法,它是利用模板不在匹配点上时,累计误差增长很快;反之,则增长缓慢这一特性,从而较快的剔除不匹配点,减少运算量,从而提高了搜索速度。
设模板T在被搜索图S上平移,模板覆盖下的那块搜索图叫做子图,i,j是这块子图的左上角像素点在S中的坐标,叫做参考点。
算法描述如下:
1、定义绝对误差值:
(5.3)
其中:
(5.4)
(5.5)
2、取一个不变的阈值。
3、在子图中随机选取像点,计算它同T中对应点的误差,然后把这点的差值同其他点对的差值累加起来,直到累加r次误差超过则停止累加,并记下累加次数r,定义SSDA的检测曲面为
(5.6)
4、把I(i,j)值最大的点定位匹配点,因为在这一点上需要很多次累加才能使总误差超过。
传统的SSDA算法是针对灰度图像的匹配,没有利用图像的颜色信息。
针对彩色图像匹配的特点,对传统的SSDA算法作了进一步的改进。
彩色图像的RGB彩色空间采用三种基本颜色R(红)、G(绿)、B(蓝)的不同比例组合,合成所需要的任意颜色。
在该模型中,红、绿、蓝三种基色分别用256个阶调数值来度量,不同阶调数值的这三种基色的组合,便形成了色彩丰富的颜色空间。
对于彩色图像匹配,由于模板图像中RGB分量各自所占的比重不同,因此对图像匹配结果的影响也应该不同。
模板图像中比重大的彩色分量应该在匹配过程中起相对重要的作用,而比重小的彩色分量在匹配过程中所起的作用相对较小。
因此,定义不同颜色分量的权重系数,,,分别表示每种颜色的像素值占整个图像像素值总和的比例。
式中,模板大小为,,,分别表示每个像素在不同颜色空间的的阶调值。
(5.7)
然后,分别对模板图像和待匹配图像的RGB彩色空间的每一维空间分别用SSDA算法进行计算,再定义整个彩色图像的SSDA的检测曲面为:
(5.8)
从而,把值最大的点作为匹配点,这样充分利用了彩色图像的色彩信息,强调了模板图像中不同比重的颜色对匹配结果的贡献不同,提高了算法的效率和匹配的精确性。
5.3.3图像处理模块的设计
图像处理模块的任务是,通过对图像采集模块获得的图像数据进行分析,得到给定目标相对于机器人视野中心位置的偏移值,从而给机器人运动控制软件模块提供指导机器人运动控制的依据。
该模块的流程如图5.6所示:
图5.6图像处理模块流程图
5.4机器人运动控制软件模块
机器人运动控制软件模块采用基于分段控制思想的比例控制器,根据偏差值的大小,分为不同的控制段。
在每一个分段,采用比例控制器,其控制规律为:
(5.8)
式中,u(t):
控制器的输出,这里为PWM信号;
e(t):
控制器的输入,这里为给定目标对于机器人视野中心的偏差值;
Kp:
比例系数,根据分段的不同取值不同。
六、仿真调试分析
静态图像偏移实验:
本课题的图像匹配跟踪算法是应用于嵌入式系统中的。
我们首先在PC机上,利用VC++编写算法程序,对该算法进行修改调试,直至达到期望的目标功能后,再将其移植到嵌入式系统中,从而保证开发效率。
在PC机上,对JPEG300数码相机采集到的给定目标有一定偏移量的图像序列进行处理分析,得到目标的偏移值,从而验证算法是否到达预期的功能。
经过计算,实时图像的匹配跟踪结果如表5.1所示。
其中,帧相关置信度表示模板图像与当前匹配的目标图像的相似程度;目标当前坐标表示目标图像在当前实时图像中的位置;目标偏移量表示当前实时图中目标图像相对于上一帧实时图中目标图像的位移值。
表6.1图像匹配跟踪结果
七、设计中的问题与解决方法
本课题的研究成果只是初步实现了机器人视觉的功能,还有许多需要完善和改进的地方。
在嵌入式系统硬件平台的设计上,可以选择运算速度更快、功能更强大,特别是选用带有DSP协处理器的微处理器。
图像处理中的算法还可以深入研究,提出更快更好的适应嵌入式图像处理需要的算法,甚至可以考虑将图像处理算法“软件硬件化”,即将算法用专用的硬件逻辑实现(如FPGA),这样可以更进一步地提高系统的实时性。
开发过程中,采用了先将算法和程序在PC机上仿真实现,调试验证无误后再移植到嵌入式系统中的方法,有效地解决了嵌入式软件开发调试困难的问题,提高了软件开发的效率。
并且在开发过程中,采用模块化的思想,编写的软件层次结构清晰,各个模块具有高聚低耦合的特征,使整个系统具有良好的灵活性和开放性,便于进一步的扩展和升级。
八、嵌入式系统学习心得
本课题设计的嵌入式系统应用于机器视觉导航的移动机器人中。
实验结果表明,该系统能够稳定可靠的工作,实现了