基于OpenCV的单目二维多机器人定位系统
2020-07-28陈仕勇
陈仕勇
摘要:针对多机器人编队控制中的定位问题,设计了一套基于固定摄像头的单目二维多机器人定位系统。该定位系统通过垂直于工作平面的摄像头获取实时图像信息,通过摄像机标定算法校正图像畸变,结合中值滤波和Roberts边缘检测算子采用基于RGB颜色空间模型的目标跟踪算法稳定识别并跟踪定位机器人,对获取的数据进行处理得到各个机器人高精度的速度、位置、方向等信息。最后,定位实验验证了本文设计的基于OpenCV的单目二维多机器人定位系统是有效的。
Abstract: Aiming at the positioning problem of multi robot formation control, a set of monocular two-dimensional multi robot positioning system based on fixed camera is designed. The positioning system obtains real-time image information through the camera perpendicular to the working plane, corrects image distortion through camera calibration algorithm, combines median filter and Roberts edge detection operator, uses the target tracking algorithm based on RGB color space model to identify and track the positioning robot stably, and processes the acquired data to obtain the high-precision speed, position of each robot direction and other information. Finally, the localization experiments show that the localization system based on OpenCV is effective.
关键词:多机器人;定位系统;目标识别;OpenCV
Key words: multi robot;positioning system;target recognition;OpenCV
中图分类号:TP391 文献标识码:A 文章编号:1006-4311(2020)20-0226-05
0 引言
多機器人协调控制是机器人控制领域的重要课题之一[1-3]。目前,实验室研究多机器人控制采用的定位方法主要是惯性传感器算法、无线定位技术、超声波定位、GPS定位、轨迹推算等方法[4-9],这些方法有的误差会随时间累积,有的精度太低,有的系统复杂成本较高,有的可靠性不足,这些传统方法均不能很好的适应实验室环境定位需求。
OpenCV是开源的计算机视觉库,它包含很多非常常用的算法,已经广泛应用于对实时性要求较高的计算机视觉模式识别系统的开发[10,11]。OpenCV是开放C源码的,具有统一的结构和功能定义、强大的图像和矩阵运算能力,也提供了方便灵活的用户接口。本文提出了一种基于OpenCV计算视觉的单目二维定位方法。
1 方案设计
1.1 实验环境建立
为了能够实现对多机器人进行跟踪定位,实验采用了单目二维视觉系统。对于单目二维视觉系统,其摄像机(摄像头)垂直于工作平面安装,并建立两个坐标系。图1是单目二维视觉系统的安装示意图。
实验中考虑到成本等问题,没有使用高端摄像机和全景摄像头,而是选取了廉价的普通USB摄像头作为图像获取的工具。移动机器人使用了四轮全向机器人。由于本系统采用RGB模型跟踪机器人,如图2所示用简单的颜色来标识机器人。
1.2 程序基本结构
该系统定位等过程由计算机独立进行,主要进行图像获取、校正图像、中值滤波、基于RGB颜色空间模型跟踪、轮廓检测、数据处理等,如图3所示。
2 步骤及原理
2.1 摄像机标定
摄像机成像可以简单理解为小孔成像,理想中的透镜成像应该满足小孔成像原理,实际上是没有完美的透镜的,所得到的图像都有畸变。畸变将对定位精度产生严重影响,由于本文主要研究二维物体,所以选用了平面棋盘模式来标定。在摄像机图像中放置一个棋盘,用OpenCV函数cvFindChessboardCorners()来定位棋盘角点,cvCalibrateCamera2()得到畸变系数,最后再用cvUndistort()函数来纠正图像的形变,如图4所示。摄像机标定的程序流程如图5。
2.2 中值滤波
图像由于在产生、传输和存储等过程中受到干扰,得到的图像存在噪音。只有对这些噪音进行处理,在实验过程中能更好的分割和识别图像。本文系统不仅要求滤波能减弱噪声干扰,还需要保留物体清晰的轮廓,结合各种滤波的特点我们选用了中值滤波。中值滤波的主要功能是用与周围像素比较接近的值代替与周围像素灰度值相差比较大的像素。因此可以知道中值滤波是一种选择性处理,而非线性运算,因而它能够在消除噪声的同时,对原图像的非噪声点影响较小,不会引起较大的模糊效应,对于图像中不同特征区域不会使其边缘模糊,是本系统一种比较理想的滤波器,滤波效果如图6。
2.3 基于RGB颜色空间模型跟踪
在计算机视觉中常用的跟踪方法有背景差分法、特征点匹配法和Camshift跟踪算法等,经过分析对比各种方法的特点和实验实际需求,我们创新性的提出了基于RGB颜色空间模型的跟踪算法。RGB模型的优点是显而易见的,结构简单,几乎适用于所有的图像处理芯片。但是它的缺点也是十分明显,例如对光照非常敏感,光的强度颜色等变化会导致分割的失败。考虑到室内光源颜色强度等稳定性,经过适当处理可以满足实验需求。
在利用RGB模型实现多机器人跟踪定位时,为了区分各个机器人我们为每个机器人选择了不同的颜色来标识该机器人。实现对机器人的跟踪定位,就是实现对这些特定颜色标记的跟踪和定位。在实现过程中主要分为了机器人颜色信息提取、闭运算开、开运算。图7是程序的流程图。
2.3.1 机器人颜色信息提取
机器人颜色信息提取采用了阈值法。基本原理是:首先通过现场人工标定得到机器人的RGB颜色信息范围,把这个范围作为一个标准,在程序运行时对每帧图像的像素点进行逐行扫描,判断其RGB值是否在范围内,在范围内则记录下该点,不在则忽略。
设采集到的图像为g1(x,y,r,g,b),人工标定的RGB为(r∈(a1,a2),g∈(d1,d2),b∈(c1,c2)),通过阈值法得到的图像为
g1(x,y,r,g,b)=
阈值法处理后,得到了二值图如图8。
在理想的实验环境中,机器人运动的路线的光照强度都是恒定不变的我们得到的图像的RGB值始终是一个恒定的值。但是,实际的环境的光照强度是随着时间和位置的变化而不断变化的,在机器人运动过程中机器人特定颜色的阈值也在不断发生改变,这会造成提取机器人颜色信息失败。为了解决这个问题,通常的做法是采用稳定的人工光源。在本文中采用了自适应阈值法。
自适应阈值法的基本前提是光照强度的变化是连续缓慢不间断的。它是在阈值法的基础上使阈值随着环境的变化不断变化以适应环境的变化。基本原理是:
①通过人工标定得到最初阈值。
②利用阈值法得到在这个阈值内的所有特征颜色的RGB值,再计算出这些值的平均RGB值。
③用这个新值取代上一次的阈值。
④不断重复②③步即可实现自适应。
设人工标定的阈值为f(r,g,b),特征点的值为g(r,g,b)得到的平均值为
则新得到的阈值为
f(r,g,b)=
2.3.2 开运算与闭运算
通过观察图8很容易发现阈值法到的二值图存在“斑点”和目标颜色区域提取不完整,这会影响轮廓检测的准确性和可靠性。采用闭运算和开运算可以很好的解决这些问题。开运算是先腐蚀再膨胀,闭运算是先膨胀再腐蚀。开运算和闭运算操作几乎都是“保留区域”形式的:最显著的效果是,闭运算消除了低于其邻近点的孤立点,而开运算是消除高于其邻近点的孤立点。在本文中先通过闭运算来消除二值图中的斑点,然后用开运算来连接邻近区域使提取的目标颜色区域完整如图9。
2.4 轮廓检测
每种轮廓检测方法都有优点和缺点。在实验中,轮廓检测之前图像已经做了很多处理,轮廓检测需要做的工作很少,只需要在二值化图像中找到目标轮廓即可。Roberts边缘检测算子计算量小、速度快,但是该方法对多种噪声敏感仅适用于干扰较少并且边缘明显的图像处理。实验中得到的二值化图像没有噪声并且边缘明显,Roberts边缘检测算子无疑是最优的方法。图10是用OpenCV实现轮廓检测实现的子程序的主要流程图。
图11(a)是通过RGB空间模型和滤波处理得到的图像,图(b)是以OpenCV提供的函数利用Roberts算法得到机器人上标识轮廓用椭圆趋近的图像。大小圆的圆心就是我们实验得到的最基本的数据。
3 实验分析
为了验证本系统的定位的精度、实时性和通用性,本文针对多轮移动全向机器人,在室内环境下完成了定位实验。在实验中采用了具有编码器的四轮全向机器人,在室内按照一定的路径行驶。可以得到机器人实际的位置轨迹信息和摄像头的位置轨迹信息。通过Matlab画出了轨迹图,图12是机器人走直线的轨迹图,其中点画线是系统测得轨迹,直线是实际轨迹。
为了验证系统能否对多机器人跟踪定位得到多个机器人的状态信息,本文在室内环境下完成了多机器人的跟踪定位实验。在多机器人的跟踪定位实验中使用了四个全向机器人如图13(a),分别选用了红、黄、蓝、绿四种颜色作为机器人的标识色。通过RGB模型阈值法把四个不同机器人分割了出来,得到了噪声较少清晰的二值图如图13(b),对二值图进行开闭运算处理得到了没有噪声的完整目标图像,最后对处理后的图像进行轮廓检测如图13(c)得到了各个机器人的状态信息,为了便于分析研究实时画出了机器人的轨迹图如图13(d)。
4 结论
针对实验室环境下的多机器人编队研究,本文提出了一种基于OpenCV的单目二维定位方法。针对多个机器人定位对实时性的要求,采用简单的RGB模型避免了大量运算。为了提高算法的鲁棒性,采用了红、绿、蓝、黄、青(蓝绿色)、品红(紫色)作为标识色。在提取目标位置信息时直接采用轮廓检测椭圆逼近的方法,在避免了大量复杂运算的同时又得到了高精度的目标信息。
参考文献:
[1]查延麟.多移动机器人系统协调控制算法设计[J].电子设计工程,2018,26(24):23-26,31.
[2]潘建龙.多机器人协作系统运动规划及位置力协调控制研究[D].东南大学,2018.
[3]刘瑞轩.多水下机器人协调控制研究[D].江苏科技大学,2018.
[4]连黎明.基于多信息融合的移动机器人定位算法[J].西南师范大学学报(自然科学版),2019,44(09):89-95.
[5]刘红林,凌有铸,陈孟元.基于JSD自适应粒子滤波的移动机器人定位算法[J].安徽工程大学学报,2019,34(04):56-62.
[6]张一博,马磊.基于视觉传感器的移动机器人定位算法[J].传感器与微系统,2019,38(06):137-139,143.
[7]彭冬旭.基于单目视觉的机器人定位算法研究[D].安徽工業大学,2019.
[8]陈庆武,张志安,何雨,韩明明,黄学功.基于改进扩展卡尔曼滤波算法的移动机器人定位方法研究[J].测试技术学报,2018,32(04):292-299.
[9]李振雨,王好臣,丁兆勇,王功亮.基于神经网络算法的机器人定位技术研究[J].机床与液压,2018,46(15):84-87.
[10]刘新泽,刘靖宇,杜智文,钮杨洁,丁建鑫.基于OpenCV的视觉定位四旋翼无人机[J].福建电脑,2019,35(04):97-98.
[11]杨芳.基于OpenCV的双目视觉系统目标定位与测距方法研究[D].宁夏大学,2018.