发明名称 动态稀疏环境下机器人SLAM物体状态检测方法
摘要 本发明涉及动态稀疏环境下机器人SLAM物体状态检测方法,首先,通过视觉传感器对环境进行图像采集,使用SURF描述子获得图像的特征向量集合;其次,基于最近邻算法对当前时刻与历史时刻的图像进行匹配并通过RANSAC算法检验匹配是否成功以判断两个时刻的物体是否一致;然后,利用视差法获得物体的深度信息,并根据平面几何关系进一步得到物体两个时刻的全局坐标和相对位置差;最后,结合假设检验的思想得到接受区域,并通过检验相对位置差是否落在接受区域内来判断物体的状态。本发明在对环境中物体状态进行检测时,考虑移动机器人的定位和测量误差对物体位置观测值的影响,提高对物体状态判断的准确度。
申请公布号 CN103824080A 申请公布日期 2014.05.28
申请号 CN201410060988.0 申请日期 2014.02.21
申请人 北京化工大学 发明人 曹政才;黄志明;付宜利;马逢乐;陈嵩;翁志萍;王炅
分类号 G06K9/62(2006.01)I;G06T7/00(2006.01)I;G06T5/50(2006.01)I 主分类号 G06K9/62(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 张慧
主权项 1.动态稀疏环境下机器人SLAM物体状态检测方法,其特征在于,在检测物体状态时考虑移动机器人的定位和测量误差对物体位置观测值的影响;所述方法包括以下步骤:步骤1:采集环境图像,获取图像的特征向量集合;步骤1.1,移动机器人通过双目视觉传感器采集环境图像;步骤1.2,利用多尺度多方向Gabor函数构建能量图像空间,并采用非极大抑制方法对8点邻域范围内检测的极值点进行筛选;步骤1.3,通过SURF描述子构建向量以表示特征点附近的局部区域,获得当前图像的特征向量集合;(1)对以特征点为圆心、以6σ为半径的邻域中的点计算X和Y方向上的Haar小波响应;(2)以60°的扇形滑动窗口绕圆心遍历整个圆,计算窗口内的响应总和,并取最长向量作为特征点主方向;(3)以特征点为中心,主方向为X方向构造一个大小为20σ的方框,将其分成4×4个子区域;对每一个子区域分别计算Σd<sub>x</sub>,Σd<sub>y</sub>,Σ|d<sub>x</sub>|和Σ|d<sub>y</sub>|,其中,d<sub>x</sub>、d<sub>y</sub>分别为子区域内各点X和Y方向上的Haar小波响应;则每一个子区域可用向量v=(Σd<sub>x</sub>,Σd<sub>y</sub>,Σ|d<sub>x</sub>|,Σ|d<sub>y</sub>|)<sup>T</sup>表示,这样特征点附近的局部区域可以用一个4×4×4=64维的特征向量描述;步骤2:判断当前图像与历史图像中的物体是否一致;步骤2.1,求当前图像特征点与某时刻历史图像的匹配点;求当前图像某一特征点对应的特征向量与历史图像所有特征点对应特征向量的余弦相似度,相似度最大的点即为所求的匹配点;利用最近邻算法计算两特征向量v<sub>1</sub>,v<sub>2</sub>的余弦相似度S,公式如下:<maths num="0001"><![CDATA[<math><mrow><mi>S</mi><mo>=</mo><mi>cos</mi><mo>&lt;</mo><msub><mi>v</mi><mn>1</mn></msub><mo>,</mo><msub><mi>v</mi><mn>2</mn></msub><mo>></mo><mo>=</mo><mfrac><mrow><msub><mi>v</mi><mn>1</mn></msub><mo>&CenterDot;</mo><msub><mi>v</mi><mn>2</mn></msub></mrow><mrow><mo>|</mo><msub><mi>v</mi><mn>1</mn></msub><mo>|</mo><mo>|</mo><msub><mi>v</mi><mn>2</mn></msub><mo>|</mo></mrow></mfrac><mo>=</mo><msub><mi>v</mi><mn>1</mn></msub><mo>&CenterDot;</mo><msub><mi>v</mi><mn>2</mn></msub></mrow></math>]]></maths>式中,v<sub>1</sub>,v<sub>2</sub>均为单位向量;按照上述方法求出当前图像所有特征点的匹配点;步骤2.2,判断两个时刻图像中物体的一致性;(1)随机选取两个时刻图像的3对匹配点,并求出它们之间的变换矩阵H;(2)由变换矩阵H计算其它匹配点的误差,当误差小于阈值时,认为该匹配点支持当前的变换矩阵H;所述阈值通常取0.002;(3)如果有超过2/3匹配点支持当前的变换矩阵H,则认为图像匹配成功;否则,返回步骤(1),若循环N次仍未满足条件则认为图像匹配失败;N通常取1000;(4)如果匹配失败,计算当前图像的视觉显著性,若当前图像的视觉显著性大于阈值则保存此图像;图像匹配失败说明了移动机器人到了一个新的场景,如果这个新场景的特征足够丰富,可将此图像作为路标图像予以保存;新场景的特征是否足够丰富,根据图像的视觉显著性进行判断;图像的视觉显著性按下面方法求得:首先利用余弦相似度对图像中的特征进行分类,将余弦相似度大于阈值的两个特征向量划为同一类;阈值通常取0.6;然后,构建图像的视觉BoW模型,此时图像的特征丰富程度可用其视觉BoW直方图的熵来描述:<maths num="0002"><![CDATA[<math><mrow><msub><mi>H</mi><mi>i</mi></msub><mo>=</mo><mo>-</mo><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>W</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow></munderover><mi>p</mi><mrow><mo>(</mo><msub><mi>w</mi><mi>k</mi></msub><mo>)</mo></mrow><msub><mi>log</mi><mn>2</mn></msub><mi>p</mi><mrow><mo>(</mo><msub><mi>w</mi><mi>k</mi></msub><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0003"><![CDATA[<math><mrow><mi>p</mi><mrow><mo>(</mo><msub><mi>w</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>=</mo><mfrac><msub><mi>w</mi><mi>k</mi></msub><mrow><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>W</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow></munderover><msub><mi>w</mi><mi>k</mi></msub></mrow></mfrac></mrow></math>]]></maths>其中,p(w<sub>k</sub>)为图像视觉BoW特征的经验分布,w<sub>k</sub>为第k个直方图的长度,W(t)为此视觉BoW空间的大小;对上式进行归一化得到视觉显著度为:<maths num="0004"><![CDATA[<math><mrow><msub><msub><mi>S</mi><mi>L</mi></msub><mi>i</mi></msub><mo>=</mo><mfrac><msub><mi>H</mi><mi>i</mi></msub><mrow><msub><mi>log</mi><mn>2</mn></msub><mi>W</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow></mfrac></mrow></math>]]></maths>按照上式计算图像的视觉显著度,如果大于设定的阈值则认为该图像的具有足够丰富的视觉特征予以保存;阈值通常取0.4;步骤3:利用视差法获取图像中物体的深度信息,并计算该物体两个时刻的坐标和相对位置差;步骤3.1:获取图像中物体的深度信息;A,B为安装在机器人身上的两个摄像头,方向与机器人朝向方向一致;O为A、B的连线中点;由几何关系求得物体的深度信息y为:<maths num="0005"><![CDATA[<math><mrow><mi>y</mi><mo>=</mo><mfrac><mrow><mi>L</mi><mo>&times;</mo><mi>f</mi></mrow><mrow><msub><mi>d</mi><mn>1</mn></msub><mo>-</mo><msub><mi>d</mi><mn>2</mn></msub></mrow></mfrac></mrow></math>]]></maths>其中,D<sub>1</sub>、D<sub>2</sub>分别为物体与两个摄像头光学中心线的距离,L=D<sub>1</sub>-D<sub>2</sub>为基线宽度,d<sub>1</sub>、d<sub>2</sub>分别为物体在图像平面上的投影与光学中心线的距离;步骤3.2:计算物体两个时刻的坐标和相对位置差;以机器人初始时刻两摄像头A、B连线中点O为坐标原点,以机器人朝向为X轴方向,以过O点平行于地面且垂直于X轴的方向为Y轴方向建立全局直角坐标系XOY;以机器人当前时刻两摄像头连线中点p=(p<sub>x</sub>,p<sub>y</sub>)为坐标原点p,以机器人朝向方向为X’轴方向,以过p点平行于地面且垂直于X’轴的方向为Y’轴方向建立局部直角坐标系X’pY’;根据步骤3.1中获得的物体深度信息y可得物体与机器人的相对位置差,即物体的局部坐标m'为:<maths num="0006"><![CDATA[<math><mrow><msup><mi>m</mi><mo>&prime;</mo></msup><mo>=</mo><mrow><mo>(</mo><mi>y</mi><mo>,</mo><mo>-</mo><mfrac><mi>y</mi><mi>f</mi></mfrac><mrow><mo>(</mo><mfrac><mrow><msub><mi>d</mi><mn>1</mn></msub><mo>+</mo><msub><mi>d</mi><mn>2</mn></msub></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mo>)</mo></mrow></mrow></math>]]></maths>当前时刻物体的全局坐标m为:m=p+ΔmΔm=(m'<sub>y</sub>sinθ+m'<sub>x</sub>cosθ,m'<sub>y</sub>cosθ-m'<sub>x</sub>sinθ)其中,Δm为物体与机器人的位置差在全局坐标系中的坐标,p=(p<sub>x</sub>,p<sub>y</sub>)为机器人在全局坐标系中的坐标,θ为机器人的方向角;将物体两个时刻的位置做差可得此物体在i、j两个时刻的相对位置差Δm<sub>ij</sub>=m<sub>i</sub>-m<sub>j</sub>;i为当前时刻,j为匹配成功的历史时刻;步骤4:判断物体的状态;步骤4.1:假设物体为静止状态,计算在此假设下Δm<sub>ij</sub>的期望μ<sub>m</sub>与方差M<sub>m</sub>;假设<maths num="0007"><![CDATA[<math><mrow><msub><mi>p</mi><mi>x</mi></msub><mo>~</mo><mi>N</mi><mrow><mo>(</mo><msub><mover><mi>p</mi><mo>&OverBar;</mo></mover><mi>x</mi></msub><mo>,</mo><msubsup><mi>&sigma;</mi><mi>x</mi><mn>2</mn></msubsup><mo>)</mo></mrow><mo>,</mo><msub><mi>p</mi><mi>y</mi></msub><mo>~</mo><mi>N</mi><mrow><mo>(</mo><msub><mover><mi>p</mi><mo>&OverBar;</mo></mover><mi>y</mi></msub><mo>,</mo><msubsup><mi>&sigma;</mi><mi>y</mi><mn>2</mn></msubsup><mo>)</mo></mrow><mo>,</mo><msub><mi>&Delta;m</mi><mi>x</mi></msub><mo>~</mo><mi>N</mi><mrow><mo>(</mo><mi>&Delta;</mi><msub><mover><mi>m</mi><mo>&OverBar;</mo></mover><mi>x</mi></msub><mo>,</mo><msubsup><mi>&delta;</mi><mi>x</mi><mn>2</mn></msubsup><mo>)</mo></mrow><mo>,</mo><mi>&Delta;</mi><msub><mi>m</mi><mi>y</mi></msub><mo>~</mo><mi>N</mi><mrow><mo>(</mo><mi>&Delta;</mi><msub><mover><mi>m</mi><mo>&OverBar;</mo></mover><mi>y</mi></msub><mo>,</mo><msubsup><mi>&delta;</mi><mi>y</mi><mn>2</mn></msubsup><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>“-”表示求期望;由于p<sub>x</sub>和Δm<sub>x</sub>相互独立,p<sub>y</sub>和Δm<sub>y</sub>相互独立,且<img file="FDA0000468477540000033.GIF" wi="318" he="69" />则:<maths num="0008"><![CDATA[<math><mrow><msub><mi>m</mi><mi>x</mi></msub><mo>~</mo><mi>N</mi><mrow><mo>(</mo><msub><mover><mi>m</mi><mo>&OverBar;</mo></mover><mi>x</mi></msub><mo>,</mo><msubsup><mi>&sigma;</mi><mi>x</mi><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>&delta;</mi><mi>x</mi><mn>2</mn></msubsup><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0009"><![CDATA[<math><mrow><msub><mi>m</mi><mi>y</mi></msub><mo>~</mo><mi>N</mi><mrow><mo>(</mo><msub><mover><mi>m</mi><mo>&OverBar;</mo></mover><mi>y</mi></msub><mo>,</mo><msubsup><mi>&sigma;</mi><mi>y</mi><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>&delta;</mi><mi>y</mi><mn>2</mn></msubsup><mo>)</mo></mrow></mrow></math>]]></maths>假设i时刻和j时刻物体的全局坐标分别为m<sub>i</sub>和m<sub>j</sub>,机器人的全局坐标分别为(p<sub>ix</sub>,p<sub>iy</sub>)和(p<sub>jx</sub>,p<sub>jy</sub>);如果物体是静态的,即<img file="FDA0000468477540000036.GIF" wi="454" he="77" />设X=m<sub>ix</sub>-m<sub>jx</sub>,Y=m<sub>iy</sub>-m<sub>jy</sub>,则:<maths num="0010"><![CDATA[<math><mrow><mi>X</mi><mo>~</mo><mi>N</mi><mrow><mo>(</mo><mn>0</mn><mo>,</mo><msubsup><mi>&sigma;</mi><mi>ix</mi><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>&sigma;</mi><mi>jx</mi><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>&delta;</mi><mi>ix</mi><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>&delta;</mi><mi>jx</mi><mn>2</mn></msubsup><mo>-</mo><mn>2</mn><mi>cov</mi><mrow><mo>(</mo><msub><mi>p</mi><mi>ix</mi></msub><mo>,</mo><msub><mi>p</mi><mi>jx</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0011"><![CDATA[<math><mrow><mi>Y</mi><mo>~</mo><mi>N</mi><mrow><mo>(</mo><mn>0</mn><mo>,</mo><msubsup><mi>&sigma;</mi><mi>iy</mi><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>&sigma;</mi><mi>jy</mi><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>&delta;</mi><mi>iy</mi><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>&delta;</mi><mi>jy</mi><mn>2</mn></msubsup><mo>-</mo><mn>2</mn><mi>cov</mi><mrow><mo>(</mo><msub><mi>p</mi><mi>iy</mi></msub><mo>,</mo><msub><mi>p</mi><mi>jy</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow></mrow></math>]]></maths>因此,写成矩阵形式有:<maths num="0012"><![CDATA[<math><mrow><mfenced open='[' close=']'><mtable><mtr><mtd><mi>X</mi></mtd></mtr><mtr><mtd><mi>Y</mi></mtd></mtr></mtable></mfenced><mo>~</mo><mi>N</mi><mfenced open='(' close=')'><mtable><mtr><mtd><mfenced open='[' close=']'><mtable><mtr><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mo>,</mo><msub><mi>&Sigma;</mi><mi>ii</mi></msub><mo>+</mo><msub><mi>&Sigma;</mi><mi>jj</mi></msub><mo>-</mo><msub><mi>&Sigma;</mi><mi>ij</mi></msub><mo>-</mo><msub><mi>&Sigma;</mi><mi>ji</mi></msub><mo>+</mo><mn>2</mn><mi>R</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其中,Σ<sub>m,n</sub>为机器人m时刻与n时刻位置的协方差矩阵,Σ<sub>m,n</sub>为2×2方阵,m,n=i或j,R是测量白噪声的协方差矩阵;物体为静态时Δm<sub>ij</sub>的期望μ<sub>m</sub>与方差M<sub>m</sub>分别为:<maths num="0013"><![CDATA[<math><mrow><msub><mi>&mu;</mi><mi>m</mi></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mo>,</mo></mrow></math>]]></maths>M<sub>m</sub>=Σ<sub>ii</sub>+Σ<sub>jj</sub>-Σ<sub>ij</sub>-Σ<sub>ji</sub>+2R步骤4.2:构建接受区域;步骤4.3:判断物体的状态;通过步骤3获得的物体位置差Δm<sub>ij</sub>与区域C的关系判断物体的状态:如果Δm<sub>ij</sub>∈C则认为物体为静态,反之则认为物体为动态。
地址 100029 北京市朝阳区北三环东路15号