《武汉工程大学学报》  2015年04期 65-68   出版日期:2015-04-30   ISSN:1674-2869   CN:42-1779/TQ
嵌入式视觉的测距系统设计


0 引 言随着工业生产蓬勃发展,行车作为起吊搬运的重要设备,被广泛应用于各种工业现场,由于繁重的操作任务,操作人员往往注重于重物的运行,而对与之相邻障碍物的安全距离不能及时预判,导致相撞的事故时有发生. 为了避免事故的发生,使行车能够平稳、安全、有效的运行,行车的防撞技术成为目前国内外的重要研究方向. 防撞系统中最基本和最关键的技术是距离检测,目前运用在障碍物检测上的测距方式主要有红外线测距、激光测距、超声波测距、毫米波雷达测距以及视觉测距等多种方法,如姜海娇建立的激光雷达测距系统根据测距特性对测量精度进行研究[1],沈燕等人介绍的基于单片机的超声波测距设计实现测距功能[2],刘鑫等人采用雷达测距实现倒车防撞控制等[3],都在一定程度上满足了防撞要求. 然而这几种测距方式都有其局限性,红外线测距响应时间长,使操作人员得到的提前预警不足以躲避碰撞;激光测距成本较高,且对传感器表面光洁度要求也较高;超声波测距易受到空气密度、温度等影响,产生较大误差;雷达测距易受到电磁波干扰等,限制了其在防撞系统中的应用. 伴随着图像处理技术和嵌入式的不断发展,视觉测距为安全车距检测提供了一种更有效的解决方案. 本文在ARM11开发平台基础上实现了单目视觉测距功能,通过以目标物体上激光点为特征点,对激光点进行识别定位,以达到对目标物体进行测距定位的目的. 经实验证明,该系统测距精度较高,实时性好. 1 硬件结构设计嵌入式视觉测距系统主要由嵌入式开发板、Linux操作系统、图像处理模块及单目视觉测距算法组成. 本视觉测距系统中,采用一个USB接口的CMOS摄像头作为图像采集设备,考虑到ARM11具有的高性能、低功耗和低价格等特点,本系统选用ARM11的S3C6410处理器为控制核心,为软件系统的运行提供硬件支持. 其具体硬件构成如下:(1)S3C6410是一个16/32位的RISC微处理器,拥有强大的内部资源和视频处理能力,主频为533 MHz,最高可达667 MHz. (2)支持Mobile DDR和多种NAND FLASH. 包括128M字节的Mobile DDR,以及1G字节的型号为K9G8G08U0A的NAND FLASH,用于存储内核代码、应用程序、操作系统和数据资料等. (3)4个串口,包括了三个三线TTL电平串口和一个五线的RS 232电平串口. (4)1个USB HOST插口,支持USB1.1协议,可插鼠标、U盘等. 系统结构框如图1所示. 图1 系统结构框图Fig.1 System architecture系统通过USB摄像头采集图像,然后将图像信息传送到S3C6410嵌入式处理器中进行图像处理,并将图像在LCD显示器上实时显示. 2 系统软件设计测距系统的硬件为基本功能和扩展功能提供了扎实的基础,软件系统就是要充分利用硬件资源,实现系统的稳定运行,是整个系统的重要组成部分. 软件部分的设计主要有建立交叉编译环境;Bootloader的移植;Linux操作系统和相关驱动的移植;图像采集、处理和显示. 本文基于Qt/Embedded实现图像显示界面. 图像的采集采用了于ARM11开发板中外接USB摄像头,并在Linux内核加载了USB驱动和Video4Linux2(简称V4L2). V4L2是Linux内核中关于视频设备的内核驱动,本系统中为USB摄像头提供统一的编程接口. 系统在实现图像采集时,首先通过调用函数open(“/dev/video0”,O_RDWR)打开视频设备,然后进行图像采集的参数初始化,申请图像采集的帧缓冲区,并将这些帧缓冲区从内核空间mmap( )映射到用户空间,通过在队列中循环输入输出帧缓冲区的数据完成图像的采集. 图2描述了整个系统图像采集的主要流程.图2 视频采集流程图Fig.2 Flow chart of video capture嵌入式系统的应用开发是在PC机上完成的,在PC机上运行调试应用程序,再将程序编译成二进制代码,使程序可以在ARM11开发平台上运行. 系统中选用的图形用户界面是具有可移植性好和支持多个GUI平台交互开发特点的Qt/Embedded,所以除了在PC机上移植Qt/Embedded之外,还必须安装在ARM11开发板中. 当一个Qt/Embedded应用程序在开发板中能稳定运行时,开发过程才结束. 操作人员可以通过图形界面直观的看到摄像头采集到的图像信息和与被测目标之间的距离信息. Qt/Embedded的软件开发流程如图3所示. 图3 测距系统的显示流程图Fig.3 Display flow chart of ranging system3 嵌入式视觉测距方法基于单目视觉的测距方法是采用模拟人眼的方式,通过获得丰富的环境图像信息进行测距[4-5],该方法稳定性高,实用性强,还能从图片中获得其它的很多信息,起到辅助驾驶的功能. 但是该方法也存在算法复杂,计算量大等缺点,针对这些不足,本文提出了一种单目视觉基于特征点的测距算法,该算法减少了特征点数目,降低了计算量,大大增加了实时性. 该测距方法主要由激光光源和成像系统构成,系统原理图如图4所示. 系统中设定激光束与摄像头的中心光轴平行,当激光源发出光束照射在障碍物表面时,会在障碍物表面形成一个光斑,在USB摄像头中显示. 经过图像灰度化、平滑滤波和边缘特征提取处理,对光斑图像运用圆拟合法进行中心坐标运算后,可以得到激光点在图像中的位置坐标,只需获得这个点在沿着y轴方向上的距离中心点的距离,根据三角测距原理,就可以计算出摄像头与障碍物之间的距离. 如公式(1)所示. D=■ (1)根据公式可知,距离D的运算是以激光源与摄像头之间的距离h和激光点与摄像头轴线之间的夹角θ为已知的前提下计算的,其中h可以测量获得,本设计中将摄像头与激光源固定测得的高度差h为6.0 cm,夹角θ也可以根据公式(2)得出. ?兹=pfc·rpc+ro(2)其中:pfc(number of pixel from center of focal plane)为焦平面激光点到中心的像素数量;rpc (Radians per pixel pitch)表示为每个像素点的弧度;ro (Radian offset )为弧度补偿,用于弥补对齐错误,矫正数据. 将θ带入公式(1)中,可以将D表示为公式(3)所示. D=■(3)式(3)中rpc和ro可以通过测量实际已知距离和在该距离上摄像头获取的图像信息中激光点的位置信息来验算求出. 本文中用于计算rpc和ro的校正数据如表1所示.图4 测距系统原理图Fig.4 Schematic diagram of ranging system表1 校正数据Table 1 The correction data将校正数据分别代入公式(3)中可得出两个方程式31=6.0/tan(57rpc+ro)和47=6.0/tan(30rpc+ro),然后计算分别得出rpc=0.002 398 643 2,ro=0.055 279 314. 则求距离公式(3)中仅有pfc为未知数,若在不同距离情况下的图像信息中分别求出pfc的值即可计算出当前实际距离. 本系统软件部分在Linux系统下开发,并将程序加载到硬件平台上脱机运行进行实验验证,对障碍物距离检测实验的数据如表2所示. 从总体上看,系统的测量值与实际值相差较小,且用作校正数据的距离,在系统中进一步测量时,误差很小,其他数据也基本稳定在实际距离的一定范围内,能满足系统设计要求. 与传统测距方法相比较,传统单目视觉测量的数据误差是随着距离的增大而变化的,距离较小时尚能满足系统要求,但当距离越大时其误差也越大,而本测距系统的实验数据中,当距离逐渐增加时,测量误差虽然在一定幅度内变化,但仍具有较高的精度. 表2 障碍物距离测量数据Table 2 Obstacle distance measurement data测量值出现误差的主要原因是USB摄像头实际采集图像过程中的环境因素以及人为测量中的不准确性,如校正数据中实际的距离的测量误差及激光与摄像头之间距离h的确定等. 对于测距数据中校正数据的实际测量与其他的距离相比较,产生误差的原因是系统近距离与远距离校正值间的差异,系统可在试验中选取不同距离内的两组实际值分别求取rpc和ro的值,再对这些rpc和ro值取平均值运算,以减少系统测量误差. 4 结 语本文以ARM11微处理器作为嵌入式处理器,以USB摄像头作为图像采集设备,视觉传感器和激光技术来检测行车与障碍物之间的距离,为了避免机器视觉中对应点匹配引起的测量误差和图像处理及距离显示的实效性问题,设计了一种单目视觉融合激光技术的测距系统.与传统的测距技术如红外测距、激光测距等相比,具有良好的抗干扰性和低成本等优势,并且通过实验验证系统的测量值稳定在实际距离的一定范围内,能实时有效准确的检测行车与障碍物之间的距离,具有良好的实用性.致 谢本项目来源于武钢集团锻造厂,方案设计和运行维护都得到了他们的大力支持与协作,在此表示衷心的感谢!