移动机器人视觉定位方法的研究

本文针对移动机器人的局部视觉定位问题进行了研究。首先通过移动机器人视觉定位与目标跟踪系统求出目标质心特征点的位置时间序列, 然后在分析二次成像法获取目标深度信息的缺陷的基础上, 提出了一种获取目标的空间位置和运动信息的方法。该方法利用序列图像和推广卡尔曼滤波, 目标获取采用了H IS 模型。在移动机器人满足一定机动的条件下, 较精确地得到了目标的空间位置和运动信息。仿真结果验证了该方法的有效性和可行性。

  运动视觉研究的是如何从变化场景的一系列不同时刻的图像中提取出有关场景中的目标的形状、位置和运动信息, 将之应用于移动机器人的导航与定位。首先要估计出目标的空间位置和运动信息, 从而为移动机器人车体的导航与定位提供关键前提。

  视觉信息的获取主要是通过单视觉方式和多视觉方式。单视觉方式结构简单, 避免了视觉数据融合, 易于实现实时监测。如果利用目标物体的几何形状模型, 在目标上取3 个以上的特征点也能够获取目标的位置等信息。此方法须保证该组特征点在不同坐标系下的位置关系一致, 而对于一般的双目视觉系统, 坐标的计算误差往往会破坏这种关系。

  采用在机器人上安装车载摄像机这种局部视觉定位方式, 本文对移动机器人的运动视觉定位方法进行了研究。该方法的实现分为两部分: 首先采用移动机器人视觉系统求出目标质心特征点的位置时间序列, 从而将对被跟踪目标的跟踪转化为对其质心的跟踪; 然后通过推广卡尔曼滤波方法估计目标的空间位置和运动参数。

  1 目标成像的几何模型

  移动机器人视觉系统的坐标关系如图1 所示。

  其中O-X Y Z 为世界坐标系; O c - X cY cZ c 为摄像机坐标系。其中O c 为摄像机的光心, X 轴、Y 轴分别与X c 轴、Y c 轴和图像的x , y 轴平行, Z c 为摄像机的光轴, 它与图像平面垂直。光轴与图像平面的交点O 1 为图像坐标系的原点。O cO 1 为摄像机的焦距f .

图1 移动机器人视觉系统的坐标关系

  不考虑透镜畸变, 则由透视投影成像模型为:

  式中, Z′= [u, v ]为目标特征点P 在图像坐标系的二维坐标值; (X , Y , Z ) 为P 点在世界坐标系的坐标; (X c0, Y c0, Z c0) 为摄像机的光心在世界坐标系的坐标; dx , dy 为摄像机的每一个像素分别在x 轴与y 轴方向采样的量化因子;
u0, v 0 分别为摄像机的图像中心O 1 在x 轴与y 轴方向采样时的位置偏移量。通过式(1) 即可实现点P 位置在图像坐标系和世界坐标系的变换。

  2 图像目标识别与定位跟踪

  2.1 目标获取

  目标的获取即在摄像机采集的图像中搜索是否有特定目标, 并提取目标区域, 给出目标在图像中的位置特征点。

  由于机器人控制实时性的需要, 过于耗时的复杂算法是不适用的, 因此以颜色信息为目标特征实现目标的获取。本文采用了HS I 模型, 3 个分量中,I 是受光照影响较大的分量。所以, 在用颜色特征识别目标时, 减少亮度特征I 的权值, 主要以H 和S 作为判定的主要特征, 从而可以提高颜色特征识别的鲁棒性。

  考虑到连通性, 本文利用捕获图像的像素及其八连通区域的平均HS 特征向量与目标像素的HS特征向量差的模是否满足一定的阈值条件来判别像素的相似性; 同时采用中心连接区域增长法进行区域增长从而确定目标区域。图2 给出了目标区域分割的算法流程。

图2 目标区域分割算法流程

  实现目标区域提取后, 由于目标有一定的大小和形状, 为了对目标定位, 必须在图像中选取目标上对应的点的图像位置。由于目标的质心点具有不随平移、旋转与比例的改变而变化的特点, 故选取目标的质心点作为目标点。

  质心坐标计算公式如下:

  式中:为质心坐标; n 为目标区域占据的像素个数, 且n≥2; (x i, y i) 为第i 个像素的坐标; p (x i, y i)为第i 个像素的灰度值。

  2.2 目标跟踪

  运动目标的跟踪是确定同一物体在不同帧中位置的过程, 当运动目标被正确检测出来时, 它就对相邻帧中检测出的目标进行匹配。匹配过程如下:

  2. 2. 1 目标质心位置预测

  目标位置预测是依据最小二平方预测原理由目标质心在本帧以及相邻的连续前几帧的位置值,直接预测出目标质心在下一帧的位置值。在等间隔观测条件下, 可用式(4) 的简便预测:

  2. 2. 2 搜索聚类的种子点

  在搜索与上一帧图像对应质心点匹配的点时,采用基于子块的模式匹配方法。子模块是由待匹配的点与周围8 个邻点组成。由于这种方法充分考虑了特征点的统计特性, 识别率大大提高。

  首先从预测质心点开始, 在100×100 像素的动态窗口(以预测质心点为中心) 内, 按照逆时针搜索周围8 邻域象素的趋势进行环状搜索, 并分别计算由每个搜索象素决定的子块与上一帧的目标质心点T 决定的子块的HS 特征值之差的平方和。

  其中P [ i ] [ j ] ( i, j = 0, 1, 2) 表示由点P 决定的子块中的各个像素; T [ i ] [ j ] ( i, j = 0, 1, 2) 表示由上一帧的质心点决定的子块中的各个像素。

  最后, 判定某个点P 是否与上一帧的特征点T 匹配的标准为: P 须同时满足式(7, 8)。

  其中P. H表示待匹配点P 的H 特征值;m eanH 表示目标区域的平均H 特征值; 满足式(8) 能够保证匹配点在目标区域内。

  2. 2. 3 聚类色块区域

  其目的是找出色块区域, 色块区域的质心点即为特征跟踪结果。在步骤(2) 中已经找到了聚类的起始点, 由于H 反映图像的色彩特性, 所以根据匹配点的H 特征值是否在由色块的平均H 特征值确定的某个范围内来聚类色块区域, 即满足式(8)。这样既可保证识别精度, 又减少了图像信息计算量。

  3 二次成像法

  设Z c1, Z c2分别表示在t1, t2 时刻目标与成像系统的距离(深度值) ; d 1′, d 2′分别表示t1, t2 时刻目标在图像平面的几何特征值, 为便于表示, d 1′, d 2′可以是目标的像的外接圆直径或者外接矩形的边长, 则有:

 式(9) 表明: 根据同一目标、同一摄像机所摄物体的图像几何特征的变化, 可以计算出它们在空间深度方向运动时距离所发生的变化, 这就是二次成像法的原理。

  分析式(9) 可知, 二次成像法能够确定目标在摄像机坐标系中的位置, 但该方法在摄相机两次成像的位置变化不大的情况下误差会比较大, 而且不能得到目标的运动信息。为此本文提出了利用序列图像和推广卡尔曼滤波来估计目标的空间位置和运动信息的方法。

  4 目标的空间位置和运动参数估计

  由于图像序列前后两帧的时间间隔T 很小,本文用二阶微分方程来描述P 点的运动轨迹。定义状态矢量:

  则可以定义状态方程为:

  其中:

  V (k ) 为模型噪声, 假设V (k ) 为零均值的高斯白噪声, 其方差阵为Q (k ) = cov (V)。

  将式(1) 离散化得:

  其中n (k ) 为测量噪声。假设n (k ) 为零均值的高斯白噪声, 其方差阵为R (k ) = cov (n)。

  则式(10, 11) 组成系统的离散状态方程和测量方程, 当该系统满足可观测性条件:

  时, 就可以应用推广卡尔曼滤波对目标的空间位置和运动状态进行估计。其中r ( t) , v ( t) 分别为目标相对于车体的位置和速度, 下标t 代表目标, i 代表成像系统, a ( t) 为任意的标量。

  5 实验结果

  利用微软提供的V FW 视频处理开发软件包,由CCD 摄像机和相应的视频采集卡获取移动机器人前的场景图像数据, 在Delph i 6 下开发了移动机器人视觉定位与目标跟踪系统的完整程序。本算法在CPU 主频为500MHz, 内存为256MB 环境下, 对帧速率为25 帧?s, 图像分辨率为320×240的共180 帧视频图像进行了实验, 最终实现了对运动目标快速、稳定的跟踪。图3 给出了部分帧图像的目标定位与跟踪结果。

图3 目标定位与跟踪结果。

  为了验证本文提出的对目标的空间位置和运动参数估计算法的有效性, 利用获取的目标质心点的位置时间序列对目标运动状态进行了跟踪仿真实验。

  由于仿真的相似性, 本文只给出了推广卡尔曼滤波在O Z 方向的仿真结果, 如图4 所示。其中图4(a, b) 分别是观测噪声方差为3 个像素时目标在Z轴方向的位置p 和运动速度v 的估计误差曲线(150 次Mon te Carlo 运行)。其中目标的起始位置为(115, 1, 10)m , 速度为(110, 115, 215)m /s, 加速度为(0125, 011, 015)m /s2;
摄相机运动为实际中容易实现的且满足机动的条件, 其初始位置为( 010, 015, 010) m , 初始速度为( 015, 0175, 110)m /s, 运动加速度为(0125, 0105, 015)m /s2.

图4 推广卡尔曼滤波Z 方向(深度)的仿真结果

  由仿真结果可见, 随着机器人车体的不断机动和滤波次数的增加, 目标位置的估计值在20 帧左右就可收敛到理论真值, 而且抖动很小, 可满足系统快速定位与跟踪要求。

  6 结束语

  本文对移动机器人的局部视觉定位方法进行了深入研究。二次成像法要求摄像机第二次成像时的位置要有较大变化, 从而导致利用序列图像所获取的目标位置信息误差较大。与之相比本文提出的定位方法可更精确地得到目标的空间位置和运动参数。这为移动机器人的路径规划、伺服跟踪等提供了更可靠的依据。

时间: 2024-08-18 19:02:03

移动机器人视觉定位方法的研究的相关文章

蜂窝网络TDOA定位方法的Fang算法研究及仿真纠错

科学论文为我们提供科学方法,在解决实际问题中,能极大提高生产效率.但论文中一些失误则可能让使用者浪费大量时间.自己全部再推导那真不容易,怀疑的成本特别高,通常不会选择这条路.而如果真是它的问题,其它所有过程真可能都是实实在在的浪费生命. 发表在中国科技论文在线的<蜂窝网络TDOA定位方法的Fang算法研究及仿真>(百度链接),提供了很好的Fang算法参考,但论文中有两处错误,着实也浪费人不少时间. 本可以不必自己费时去推演,奈何跟着文章来总是没得到正确的结果,还一度怀疑是不是其它环节写得不对,

《zw版&#183;Halcon-delphi系列原创教程》航母舰载机&#183;视觉定位标志的识别代码

<zw版·Halcon-delphi系列原创教程>航母舰载机·视觉定位标志的识别代码 航母舰载机机身上的黄黑圆圈的标志是什么意思,辐射?核动力?战术核弹? <百度百科>介绍如下     这是工业数字摄影测量的人工标志    数字摄影测量(Basic concept of digital photogrammetry)是基于数字影像和摄影测量的基本原理,应用计算机技术.数字影像处理.影像匹配.模式识别    等多学科的理论与方法,提取所摄对像以数字方式表达的几何与物理信息的摄影测量学

3 Python+Selenium的元素定位方法(id、class name、name、tag name)

[环境] Python3.6+selenium3.0.2+IE11+Win7 [定位方法] 1.通过ID定位 方法:find_element_by_id('xx') 2.通过name定位 方法:find_element_by_name('xx') 3.通过class name定位 方法:find_element_by_class_name('xx') 4.通过tag name定位 方法:find_element_by_tag_name('xx') 说明:tag name在html中是标签的名字,

xpath定位方法详解

1.xpath较复杂的定位方法: 现在要引用id为“J_password”的input元素,可以像下面这样写: WebElement password = driver.findElement(By.xpath("//*[@id='J_login_form']/dl/dt/input[@id='J_password']")); 其中//*[@id=’ J_login_form’]这一段是指在根元素下查找任意id为J_login_form的元素,此时相当于引用到了form元素.后面的路径

sellenium页面元素的定位方法

1.findElements函数可用于多个元素定位 (1)使用ID定位:driver.findElement(By.id("ID值")); 例:HTML代码: 定位语句代码:WebElement username=driver.findElement(By.id("username")); WebElement password=driver.findElement(By.id("password"));  WebElement subimit=

CSS常用背景图片定位方法

CSS背景图片定位其实对于每一位学习前端的同学来说,都已经非常熟悉了.网上铺天盖地的最常见的一种方案就是在父元素中relative,然后子元素absolute.这种方案当然好,不过带来的一个缺点就是会改变元素的层级关系,如果在多个地方使用,这样的层叠嵌套的关系会十分混乱. 先暂时抛弃那种方案,给大家分享几种CSS背景图片定位的方案. 整篇文章会按照如下思路: 1.无依赖的absolute定位 2.background-position扩展语法 3.background-origin定位 4.ca

xpath定位方法小结(转载)

1.实例化一个浏览器WebDriver driver = new FirefoxDriver(); 2.driver.get() get传参数到浏览器中 3.常用定位方法webelement XX=driver.findElement(by.XX) 3.1 by.id("value");3.2 by.ame("value");3.3 by.xpath("/html/body/XX/div[1]/a") 表示第一个div值为a的值      by.

selenium webdriver 表格的定位方法练习

selenium webdriver 表格的定位方法 html 数据准备 <html> <body> <div id="div1"> <input name="divl1input"></input> <a href="http://www.sogou.com/">搜狗搜索</a> <img alt="div1-img1 "src=&qu

(转)HTML&amp;CSS——background: url() no-repeat 0 -64px;CSS中背景图片定位方法

http://blog.csdn.net/oscar92420aaa/article/details/51304067 CSS中背景图片的定位,困扰我很久了.今天总算搞懂了,一定要记下来. 在CSS中,背景图片的定位方法有3种: 1)关键字:background-position: top left; 2)像素:background-position: 0px 0px; 3)百分比:background-position: 0% 0%; 上面这三句语句,都将图片定位在背景的左上角,表面上看效果是