近年来,对自主机器人的研究越来越重视,要想实现自主机器人,室内定位是非常重要的一环。目前高精度的机器人室内定位方法中的硬件主要都是基于激光传感器以及视觉传感器等。激光传感器可以实现高精度的机器人室内定位,但是价格昂贵,硬件成本较高,如文献[1]通过高精度激光雷达进行测距,结合惯性导航系统来实现室内环境下的定位。文献[2]通过机器人上的激光传感器获取室内环境的点云信息,并根据不同位置上的观测得到的约束进行定位。它们的精度都可以达到厘米级别,但是硬件成本昂贵。在采用其他相对廉价的硬件时,所提出的机器人室内定位方法通常含有不同的缺点。如文献[3]先使用惯性导航系统对机器人的位姿进行初始估计,随后利用线段特征之间的匹配关系求出机器人位姿。该方法受环境光影响较严重,运算负荷大,在保证了机器人的高精度定位时会降低稳定性和实时性。文献[4]针对室内环境结构相似的特点,提出了一种基于图像序列拓扑关系的移动机器人全局定位方法,然而对于复杂场景的室内,数据量会过大从而导致机器人定位的实时性受到影响。文献[5]以WiFi位置指纹数据来进行室内定位,通过赋予指纹数据不同的权值之后根据权值的大小划分有效数据并进行滤波处理,从而建立高精度的指纹库来进行室内定位,该方法适用性较广且成本低,但是需要繁琐的指纹数据收集,精度也达不到机器人室内定位的要求。文献[6]通过以蓝牙技术为基础,利用不同蓝牙信标对位置的影响差异以及物体的运动状态来实现室内定位,该方法不需要昂贵的硬件设施,但是在室内环境下,定位精度只能达到2 m左右。
综上可知,当前市面上常见的机器人室内定位方法中,为了实现高精度的定位要求,在采用高精度的传感器如激光雷达时,会使得硬件成本过高。而在采用视觉传感器、路由器及蓝牙等价格相对廉价的硬件时,往往需要处理较多的数据,导致计算成本过高,同时会出现机器人定位稳定性较差、实时性较低以及定位精度达不到要求等缺陷。因此,针对地面含有方格的室内环境下,为了实现高实用性低成本的高精度机器人室内定位,本文在扩展卡尔曼滤波算法的基础上,采用图像处理技术对地面方格直线进行处理,实现单目视觉机器人室内定位。同时为了增强本方法的定位精度,设计并采取线预测算法来排除地面非方格直线的干扰。通过室内环境下机器人移动定位测试验证了该方法的有效性和定位精度。
1 系统架构该定位方法通过STM32串口获取机器人车轮编码器数据,计算出单位时间内左右轮的位移,并通过串口通信传给工控机。然后使用卡尔曼滤波算法时间更新过程,得到机器人的位置以及偏航角。此时得到的机器人位姿由于编码器的累积误差,会随着时间推移逐渐增大[7]。因此在机器人底部安装一个单目鱼眼摄像头拍摄地面图片,经过一系列图像处理过程,提取出拍摄到的图片中的地面特征即方格直线;计算出方格直线到相机的距离以及倾角,作为观测值给到卡尔曼测量更新部分,推导出观测方程并结合时间更新得到的机器人位姿估计,进行位姿修正,从而得到机器人的最优位姿估计。整个系统架构,如图1所示。
|
图 1 机器人室内定位系统架构图 Figure 1 Robot indoor positioning system architecture diagram |
图像处理模块使用机器人底部的相机拍摄地面图片,识别出地面方格线的轮廓,并根据地面方格线的轮廓拟合出地面方格直线,计算出相机中心离地面方格直线的距离和地面方格直线在相机坐标系下的倾角。
2.1 相机标定本文采用张正友标定法对相机进行标定,可以得到相机内参矩阵和畸变系数,该标定法在OpenCV中有对应的程序工具集可以使用。鱼眼相机拍摄的标定板样例如图2所示。
|
图 2 鱼眼相机采集的标定板图像 Figure 2 Calibration plate image acquired by fisheye camera |
使用相机从不同角度拍摄标定板,将图片传入到标定程序中,使用的图片越多标定的结果越好。最终程序得到相机内参矩阵
| ${{A}} = \left[ {\begin{array}{*{20}{c}} {{f_0}}&0&{{u_0}} \\ 0&{{f_1}}&{{v_0}} \\ 0&0&1 \end{array}} \right]$ |
其中,
机器人底部相机采集的地面图片,如图3所示,图片中的红点是用来标识机器人所处的中心位置,出现的白光是由于机器人底盘安装的LED白光灯带进行补光。图像处理模块会对采集到的图片进行边缘检测,本文采用的方法是使用Canny算子来提取图像的边缘信息。同时采用高斯滤波器来平滑图像,滤除噪声,尽可能减少噪声对边缘检测结果的影响。通过设置合理的Canny阈值,更好地实现对地面图片边缘信息的提取,尽量多地提取出地面方格直线的轮廓。
|
图 3 相机采集的原图 Figure 3 Original image captured by the camera |
从图4可以看到,经过Canny边缘检测得到的图片中,地面方格直线是弯曲的,该现象是桶形径向畸变,因此需要对图片进行畸变矫正,对提取出的每个轮廓点进行像素坐标映射计算和像素值插值计算,重建出无畸变的图像[8]。本文没有采用传统的畸变矫正流程,即先对相机采集的原图立即进行畸变矫正,之后再进行边缘检测。而是采用了先对相机采集的原图进行边缘检测,转化为二值图像,此时已经去除了图片中大量的冗余信息,只需要将二值图像中的所有像素值为(255,255,255)的白点作为轮廓点提取出来即可。接着对得到的几百个轮廓点,运用点矫正的算法进行畸变矫正[9],就可以极大地提高运行效率,保证了机器人定位的实时性。
|
图 4 边缘检测效果图 Figure 4 Edge detection effect map |
轮廓点畸变矫正图如图5所示。从图5可以看到,点矫正之后的地面方格直线轮廓,已经恢复成直线。
|
图 5 轮廓点畸变矫正 Figure 5 Contour point distortion correction |
得到了地面方格直线的轮廓,接下来使用RANSAC算法提取直线内点,RANSAC算法即“Random Sample Consensus(随机抽样一致)[10]”,RANSAC算法是从观测数据集中,通过迭代方式将观测数据分为内点和外点,内点是符合数学模型参数的点,外点即为噪声点,从而估计出数学模型的参数。
RANSAC需要进行多次迭代,首先从点矫正之后的地面图片轮廓中随机选取两个点生成一条直线,计算所有轮廓点到该直线的距离,大于设定好的阈值的为外点,小于的为内点,并统计内点数。然后从N次迭代中,找到内点数最多的一次,并采用最小二乘法[11]拟合出直线[12],作为地面方格直线。从上述流程可以看出,RANSAC算法具有不确定性,可以通过提高迭代次数来得到一个合理的结果。
图6是通过RANSAC提取内点并采用最小二乘法成功拟合出的直线示意图。
通过相机内参和相机离地高度、相机的俯仰角和偏航角,将图像中的直线映射到物理坐标系下,并消除透视效果[13],得到相机坐标系下地面方格直线的方程。并以相机作为原点,求出相机到地面方格直线的距离
|
图 6 RANSAC和最小二乘法直线拟合后的结果 Figure 6 RANSAC and Least squares straight line fitting results |
通过机器人编码器的数据推导出状态转移方程,并根据图像处理模块得到的观测值,推导出
首先选择3个状态变量
工控机每隔
设机器人当前时刻位姿状态向量为
| $\left[ \begin{array}{c} {x_{n + 1}} \\ {y_{n + 1}} \\ {\phi _{n + 1}} \\ \end{array} \right] = \left[ \begin{array}{c} {x_n} + \dfrac{{\Delta {s_r} + \Delta {s_l}}}{2}\cos {\phi _n} \\ {y_n} + \dfrac{{\Delta {s_r} + \Delta {s_l}}}{2}\sin {\phi _n} \\ {\phi _n} + \dfrac{{\Delta {s_r} - \Delta {s_l}}}{D} \end{array} \right]$ | (1) |
式(1)中,
| $\left[ \begin{array}{c} {{\hat x}_{n + 1}} \\ {{\hat y}_{n + 1}} \\ {{\hat \phi }_{n + 1}} \end{array} \right] = \left[ \begin{array}{c} {{\hat x}'}_n + \dfrac{{\Delta {s_r} + \Delta {s_l}}}{2}\cos {{\hat \phi }'}_n \\ {{\hat y}'}_n + \dfrac{{\Delta {s_r} + \Delta {s_l}}}{2}\sin {{\hat \phi }'}_n \\ {{\hat \phi }'}_n + \dfrac{{\Delta {s_r} - \Delta {s_l}}}{D} \end{array} \right]$ | (2) |
| ${{{\hat P}}_{n + 1}} = {{{A}}_n}{{\hat P}}_{n}'{{A}}_n^{\rm{T}} + {{{Q}}_n}$ | (3) |
式(2)~(3)中,
机器人位姿状态向量的估计值,由于编码器的累积误差,这个估计值的误差会越来越大,因此需要对这个状态估计值进行修正。
3.2根据图像处理模块得到的观测值,即机器人底部相机距离地面方格直线的距离
已知地面方格直线在世界坐标系下的方程,首先需要将该直线方程转换到相机坐标系下,才能求出
图7中,
| $\left\{ {\begin{aligned} & {{x_w} = {x_n} + {x_c}\cos {\phi _n} - {y_c}\sin {\phi _n}}\\& {{y_w} = {y_n} + {x_c}\sin {\phi _n} + {y_c}\cos {\phi _n}} \end{aligned}} \right.$ | (4) |
式(4)中,
假设机器人底部相机拍摄到的地面方格直线在世界坐标系下的方程如式(5)所示。
| ${A_w}{x_w} + {B_w}{y_w} + {C_w} = 0$ | (5) |
对直线方程系数进行归一化处理,即
然后,将式(4)代入上述方程,可得地面方格直线在相机坐标系的方程,见式(6)。
| $ \begin{aligned} & ({A_w}\cos {\phi _n} + {B_w}\sin {\phi _n}){x_c} + \\&({B_w}\cos {\phi _n} - {A_w}\sin {\phi _n}){y_c} + {A_w}{x_n} + {B_w}{y_n} + {C_w} = 0 \end{aligned} $ | (6) |
将相机作为原点(0,0),根据点到直线的公式,最终推导出d,
| $\left[ \begin{array}{c} {d_n} \\ {\theta _n} \\ \end{array} \right] = \left[ \begin{array}{c} \left| {{A_w}{x_n} + {B_w}{y_n} + {C_w}} \right| \\ \arctan \left(\dfrac{{{A_w}\cos {\phi _n} + {B_w}\sin {\phi _n}}}{{{A_w}\sin {\phi _n} - {B_w}\cos {\phi _n}}}\right) \\ \end{array} \right]$ | (7) |
|
图 7 机器人移动过程中的世界坐标系和相机坐标系 Figure 7 World coordinate system and camera coordinate system during robot movement |
| ${{K}}_{n + 1} = {{\hat P}}_{n + 1}{{{H}}_{n + 1}}^{\rm{T}}{( {{{{H}}_{n + 1}}{{\hat P}}_{n + 1}{{{H}}_{n + 1}}^{\rm{T}} + {{{R}}_{n + 1}}} )^{-1}}$ | (8) |
| $\hat x_{n + 1}' = \hat x_{n + 1} + {{{K}}_{n + 1}}( {{{{z}}_{n + 1}} - {{h}}({{\hat x}}_{n + 1})} )$ | (9) |
| ${{\hat P}}\;_{n + 1}' = \left( {{{I - }}{{{K}}_{n + 1}}{{{H}}_{n + 1}}} \right){{\hat P}}_{n + 1}$ | (10) |
其中,
至此,根据图像处理模块输出的观测变量
为了保证机器人定位的精度,需要对图像处理模块拟合得到的直线进行判断,当相机采集并拟合出非地面方格直线时,需要作为干扰线段进行排除。因此,设计线预测算法来剔除干扰线段的影响。
在地面方格大小为
| $ \begin{array}{l} {l_1}:x = {n_x}f,\;\;\;\;\;\;{l_2}:y = {n_y}f\\ {l_3}:x = {x_f}f,\;\;\;\;\;{l_4}:y = {y_f}f \end{array} $ |
接下来,通过偏航角推算出相机拍摄到的离机器人最近的一条方格直线,并通过式(7),分别计算出时间更新得到的位置到地面方格直线的距离
| $\Delta d = \left| {{d_n} - {{\bar d}_n}} \right|$ | (11) |
| $\Delta \theta = \left| {{\theta _n} - {{\bar \theta }_n}} \right|$ | (12) |
将上述距离和角度的差值,结合卡尔曼时间更新得到的估计协方差
| $X = \frac{{{{\left( {\Delta d} \right)}^2}}}{{\sigma _d^2}} + \frac{{{{\left( {\Delta \theta } \right)}^2}}}{{\sigma _\theta ^2}} \sim \chi _2^2$ | (13) |
通过上述
因此,通过式(13)计算出时间更新和测量更新得到距离和角度差值比的平方和
根据机器人当前的位置和航向角,本算法可以提前预测出机器人底部相机将会采集到的下一条地面方格直线,当采集到直线并进行测量更新时,通过判断距离和角度差值比的平方和,能够有效地排除地面干扰线段。这也是本文的一个非常实用的创新点。
4 实验设置与结果分析 4.1 实验设置实验中使用的机器人小车如图8所示,其中,路由器是作为远程控制设备,机器人底盘下安装有单目鱼眼摄像头,如图9所示,该相机型号为MV-GE31GM-T,帧率为108帧每秒,具备良好的动态采集性能。
|
图 8 机器人小车 Figure 8 Robot car |
|
图 9 机器人底盘使用的单目鱼眼摄像头 Figure 9 Monocular fisheye camera for robot chassis |
按照本文2.1节提到的相机标定方法并使用OpenCV程序工具集对相机进行标定,得到相机内参如下所示。
| $ \begin{array}{l} {f_0} \!= \!{\rm{428}}.{\rm{792\;371\;850\;332\;1,}}\;{f_1} \!=\! {\rm{428}}.{\rm{663\;133\;468\;208\;9}},\\ {u_0} \!= \! {\rm{371}}.{\rm{138\;260\;443\;512\;6}},\;{v_0} \!= \! {\rm{230}}.{\rm{377\;519\;821\;157\;5}},\\ {k_1} \!= \!{\rm{ - 0}}.{\rm{019\;418\;7}},\;\;{k_2} = {\rm{ - 0}}.{\rm{112\;524}},\\ {p_1} \!= \! {\rm{0}}.{\rm{197\;063}},\;\;\;{p_2} = {\rm{ - 0}}.{\rm{139\;233}} \end{array} $ |
计算得到相机距离地面的高度和姿态角为高度h = 71 mm,俯仰角
实验中,使用HIAST单点激光测距仪(型号为HI50)测量并输出小车的位置坐标,测量精度为±1 mm,将该激光测距仪得到的小车位置坐标作为本实验的真实数据。
实验测试中,机器人在地面方格大小为50 cm×50 cm的室内环境下移动,在移动过程中,会经过如图10所示的带有干扰线段的方格。
|
图 10 带有干扰线段的地面方格 Figure 10 Ground grid with interference lines |
为了充分验证本文提出的带线预测的定位方法的实用性,设置了两组实验进行对比。在第一组实验中,设定机器人按照闭环曲线路线行驶,并在机器人初始前进方向2 500 mm附近经过如图10所示的干扰线段。移动过程中,使用激光测距仪记录机器人的位置数据作为真实值,并通过不带线预测算法的定位程序输出机器人小车的实时位置。为了更直观地呈现出机器人的移动过程,使用MATLAB画出由该不带线预测的定位算法得到的坐标构成的机器人移动轨迹图,以及其中14个真实位置坐标作为参考,如图11所示。
图11中,机器人在初始前进方向2 500 mm附近,经过地面方格中的干扰线段,此时机器人定位程序出现了定位跃迁,使得定位位置及航向角在后续行驶过程中均出现了错误。这是由于机器人在行驶过程中,采集到干扰线段并误认为地面方格直线,会导致机器人定位到错误的方格内,同时在方格内部错误的位置也会导致机器人偏航角出错。
在第二组实验中,机器人在初始前进方向2 000 mm附近经过如图10所示的干扰线段,移动过程中使用带线预测算法的定位程序输出机器人小车的实时位置。同样使用MATLAB画出由带线预测算法的定位程序得到的机器人坐标够成的移动轨迹图,以及移动过程中测得的12个真实位置坐标,如图12所示。可以看到,在机器人的移动过程中,并未受到干扰线段的影响,即采用本文提出的线预测算法能够有效地排除干扰线段的影响。
|
图 11 不带线预测的机器人移动轨迹 Figure 11 Robot trajectory without line prediction |
|
图 12 带线预测的机器人移动轨迹 Figure 12 Robot trajectory with line prediction |
接下来,对机器人移动过程中的12处位置,使用本文提出的带线预测的定位方法程序得到的坐标和真实坐标进行误差计算,如表1所示。其中
| 表 1 机器人位置数据 Table 1 Robot position data |
从表1中可以看出,通过比较带线预测的卡尔曼滤波输出的机器人位置和激光测距仪得到的真实位置的误差
本文提出一种基于地面特征的单目视觉机器人室内定位方法。本方法通过对机器人底盘安装的单目鱼眼摄像头拍摄的地面图片进行图像处理,结合车轮编码器的数据进行扩展卡尔曼融合,并通过设计的线预测算法排除干扰线来进行室内定位。该方法仅需要一个单目鱼眼摄像头来辅助定位,程序只需处理含有直线的地面方格图片,拥有较低的硬件成本和计算成本。实验结果表明,机器人通过该方法在具有地面方格的室内场所的定位精度可以达到2 cm,可以应用于低成本的高精度机器人室内定位。下一步的工作主要是针对不同形状的地面方格的室内环境进行定位研究,以及进一步提高该方法的定位精度。
| [1] |
宋凯楠, 王彪, 唐超颖. 基于激光测距扫描的室内定位方法研究[J].
激光与红外, 2016, 46(8): 938-942.
SONG K N, WANG B, TANG C Y. Research on indoor localization method based on laser ranging scanning[J]. Laser & Infrared, 2016, 46(8): 938-942. |
| [2] |
HESS W, KOHLER D, RAPP H, et al. Real time loop closure in 2D LIDAR SLAM[C]//2016 IEEE International Conference on Robotics and Auto- mation (ICRA), Computer Science. Stockholm: IEEE, 2016: 1271-1278.
|
| [3] |
MICUSIK B, WILDENAUER H. Descriptor free visual indoor localization with line segments[C]// 2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Boston. MA: IEEE, 2015: 3165-3173.
|
| [4] |
董星亮, 苑晶, 张雪波, 等. 室内环境下基于图像序列拓扑关系的移动机器人全局定位[J].
机器人, 2019, 41(1): 83-94.
DONG X L, YUAN J, ZHANG X B, et al. Mobile robot global localization based on topological relationship between image sequences in indoor environments[J]. ROBOT, 2019, 41(1): 83-94. |
| [5] |
常津铭, 王红蕾. 室内定位系统中位置指纹库滤波算法研究[J].
现代电子技术, 2019, 42(17): 10-13.
CHANG J M, WANG H L. Research on location fingerprint database filtering algorithm in indoor location system[J]. Modern Electronic Technique, 2019, 42(17): 10-13. |
| [6] |
杨保, 张鹏飞, 李军杰, 等. 一种基于蓝牙的室内定位导航技术[J].
测绘科学, 2019, 44(6): 89-95.
YANG B, ZHANG P F, LI J J, et al. An indoor positioning and navigation technology based on bluetooth[J]. Science of Surveying and Mapping, 2019, 44(6): 89-95. |
| [7] |
SŁAWOMIR R, AMBROZIAK L, ZDZISŁAW G, et al. Real time localization system with extended Kalman filter for indoor applications[C]//2016 21st International Conference on Methods and Models in Automation and Robotics (MMAR), Robotics. Miedzyzdroje: IEEE, 2016: 42-47.
|
| [8] |
郑亮, 陶乾. 鱼眼镜头自标定和畸变校正的实现[J].
计算机工程, 2016, 42(9): 252-256.
ZHENG L, TAO Q. Implementation of self-calibration and distortion correction[J]. Computer Engineering, 2016, 42(9): 252-256. DOI: 10.3969/j.issn.1000-3428.2016.09.044. |
| [9] |
XIAO F, WU Z, HUANG Z D, et al. Indoor robot visual positioning system based on floor features[C]//2018 3rd International Conference on Robotics and Automation Engineering (ICRAE), Mobile Robots and Autonomous Systems. Guangzhou: IEEE, 2018: 97-101.
|
| [10] |
MARTIN A, FISCHLER, BOLLES, et al. Random sample consensus: a paradigm for model fitting with applications to image analysis and automat cartography[J].
Communications of the ACM, 1981, 24: 381-395.
DOI: 10.1145/358669.358692. |
| [11] |
PETKOVIĆ T, LONČARIĆ S. Using gradient orientation to improve least squares line fitting[C]//2014 Canadian Conference on Computer and Robot Vision (CRV), Real-time Sensing and Control. Montreal: IEEE, 2014: 226-231.
|
| [12] |
张艳莉. 基于最小二乘法拟合直线的研究[J].
信息通信, 2014(11): 44-45.
ZHANG Y L. Research on fitting lines based on least squares method[J]. Information & Communications, 2014(11): 44-45. DOI: 10.3969/j.issn.1673-1131.2014.11.024. |
| [13] |
VENTOSA S, SIMON C, SCHIMMEL M, et al. The S-Transform from a wavelet point of view[J].
IEEE Transactions on Signal Processing, 2008, 56(7): 2771-2780.
DOI: 10.1109/TSP.2008.917029. |
| [14] |
马凌, 蒋外文, 张肖霞. 基于改进扩展卡尔曼滤波的单站无源定位算法[J].
计算机工程与应用, 2016, 52(10): 124-127.
MA L, JIANG W W, ZHANG X X. Single Passive location algorithm based on improved extended Kalman filter[J]. Computer Engineering and Applications, 2016, 52(10): 124-127. DOI: 10.3778/j.issn.1002-8331.1407-0052. |
| [15] |
马晓东, 曾碧, 叶林锋. 基于BA的改进视觉/惯性融合定位算法[J].
广东工业大学学报, 2017, 34(6): 32-36.
MA X D, ZENG B, YE L F. An improved visual Odometry/SINS integrated localization algorithm based on BA[J]. Journal of Guangdong University of Technology, 2017, 34(6): 32-36. DOI: 10.12052/gdutxb.170050. |
| [16] |
郭佩珍, 胡刚, 傅惠. 基于随机时间的车辆导航路径规划研究[J].
广东工业大学学报, 2012, 29(1): 35-38.
GUO P Z, HU G, FU H. Research on path planning with random time for vehicle navigation[J]. Journal of Guangdong University of Technology, 2012, 29(1): 35-38. DOI: 10.3969/j.issn.1007-7162.2012.01.009. |
2020, Vol. 37

