-
作为移动机器人感知环境、自主导航的基础,障碍物检测是实现正确运动控制的重要依据。传统的障碍物探测通常采用激光传感器、超声传感器或红外传感器等非视觉器件,具有抗干扰能力强、可全天候工作的优点,然而这些传感器采集的数据单一,机器人很难准确探测周围环境的三维信息[1-2]。作为无人驾驶系统中环境感知的重要功能单元,三维激光雷达可较好地检测周围环境三维信息,但因其成本较高,目前较难大范围应用[3]。
相比之下,基于视觉的环境感知技术具有成本低、信息丰富的优点,并得到了广泛研究[4-5]。然而,视觉传感器易受环境影响、检测精度低:基于单目视觉的环境感知方法具有受环境影响较大、检测精度低和视野范围小的缺点[6];而基于双目视觉的环境感知方法易出现多义性[7-8]。鉴于这些问题,有研究者把视觉和激光检测方法结合起来,在增强环境适应性的同时提高检测精度[9]:文献[10]把车载相机和二维激光雷达结合起来,较好地探测了障碍物位置和形状,以较低成本辅助智能车无人驾驶;文献[11]把二维激光雷达与视觉融合起来,较好地解决了车轮打滑时的位姿丢失问题,并能较好检测出地面负障碍物。
相比单目和双目相机,Kinect相机能以简捷方式和较低成本提供环境深度数据[12]。利用这一优点,本文提出在移动机器人上同时安装二维激光雷达和Kinect相机,把激光扫描和深度图像结合起来检测障碍物。这种障碍物检测方法不仅具备二维激光雷达平面探测范围广、精度高、实时性好的特点,而且兼有Kinect深度相机三维探测的优势。具体步骤是:首先,二维激光雷达与深度相机分别从周围环境中获取二维激光数据和三维深度图像;然后,将深度图像转换成虚拟二维激光数据;最后,对虚拟二维激光数据与二维激光雷达数据进行融合,得到障碍物的三维位置。本文通过实物测试验证了该方法正确有效,可用于移动机器人对环境障碍物的判断。
-
对于环境中的障碍物,二维激光雷达和Kinect相机各有不同的表示形式。图 3给出了同时处在激光雷达坐标系$({{O}_{L}}{{X}_{L}}{{Y}_{L}}{{Z}_{L}}) $与Kinect相机坐标系$ ({{O}_{K}}{{X}_{K}}{{Y}_{K}}{{Z}_{K}})$的目标点P,坐标分别为$({{x}_{L}}, {{y}_{L}}, {{z}_{L}}) $和$({{x}_{K}}, {{y}_{K}}, {{z}_{K}}) $,P点在图像平面坐标系$ ({{X}_{P}}{{O}_{P}}{{Y}_{P}})$中的投影$ P'$坐标为(u, v)。通过标定找到激光雷达坐标系与Kinect图像坐标系之间的关系,才能准确融合激光雷达测距数据与Kinect深度图像数据。
-
P点在$ ({{O}_{L}}{{X}_{L}}{{Y}_{L}}{{Z}_{L}})$下的坐标为$({{x}_{L}}, {{y}_{L}}, {{z}_{L}}) $,根据激光雷达坐标系与Kinect坐标系的几何关系,得到坐标关系为:
$$ \left[ \begin{array}{l} {x_K}\\ {y_K}\\ {z_K} \end{array} \right] = \left[ {\begin{array}{*{20}{c}} \mathit{\boldsymbol{R}}&\mathit{\boldsymbol{T}}\\ {{{\bf{0}}^{\rm{T}}}}&1 \end{array}} \right]\left[ \begin{array}{l} {x_L}\\ {y_L}\\ {z_L} \end{array} \right] $$ (1) 式中,R是旋转矩阵;T是平移矩阵。Kinect相机采集得到的数据不是P点坐标$ ({{x}_{K}}, {{y}_{K}}, {{z}_{K}})$,而是$ {P}'$点像素坐标(u, v)和对应的深度值$ {{z}_{K}}$;激光雷达采集得到的不是P点坐标$ ({{x}_{L}}, {{y}_{L}}, {{z}_{L}})$,而是距离r和角度α。可以通过下面两小节分析得到$({{x}_{K}}, {{y}_{K}}, {{z}_{K}}) $与像素点三元组$ (u, v, {{z}_{K}})$的对应关系、$ ({{x}_{L}}, {{y}_{L}}, {{z}_{L}})$与测距点二元组$ (r,\alpha )$的对应关系。
-
根据经典相机模型[6],P点在$({{O}_{K}}{{X}_{K}}{{Y}_{K}}{{Z}_{K}}) $下的坐标为$({{x}_{K}}, {{y}_{K}}, {{z}_{K}}) $,其在图像平面投影为${P}' $,用像素表示坐标为$(u, v) $,可以得到Kinect坐标与像素点三元组的关系为:
$$ {z_K}\left[ \begin{array}{l} u\\ v\\ 1 \end{array} \right] = \left[ {\begin{array}{*{20}{c}} {{f_x}}&0&{{c_x}}&0\\ 0&{{f_{_y}}}&{{c_y}}&0\\ 0&0&1&0 \end{array}} \right]\left[ \begin{array}{l} {x_K}\\ {y_K}\\ {z_K} \end{array} \right] $$ (2) 式中,$ {{f}_{x}}$、$ {{f}_{_{y}}}$是X轴和Y轴方向上以像素为单位的等效焦距;${{c}_{x}} $、${{c}_{y}} $是基准点。这些都是相机参数,可以采用标准的相机参数标定方法计算出。
-
综合式(1)与式(2),可以得到像素点三元组与激光雷达坐标的关系为:
$$ {z_K}\left[ \begin{array}{l} u\\ v\\ 1 \end{array} \right] = \left[ {\begin{array}{*{20}{c}} {{f_x}}&0&{{c_x}}&0\\ 0&{{f_{_y}}}&{{c_y}}&0\\ 0&0&1&0 \end{array}} \right]\left[ {\begin{array}{*{20}{c}} \mathit{\boldsymbol{R}}&\mathit{\boldsymbol{T}}\\ {{{\bf{0}}^{\rm{T}}}}&{\bf{1}} \end{array}} \right]\left[ \begin{array}{l} {x_L}\\ {y_L}\\ {z_L} \end{array} \right] $$ (3) 对于激光雷达,保持极坐标系与平面直角坐标系$ ({{O}_{L}}{{X}_{L}}{{Z}_{L}})$在同一个平面内,原点同为激光雷达中心,激光束与$ {{Z}_{L}}$轴正向夹角为极坐标角度a(激光束偏角值),激光束测距值为极坐标径向值r(激光雷达当前测距值),如图 4所示。
激光测距点二元组$ (r, \alpha )$与直角坐标$({{x}_{L}}, {{y}_{L}}, {{z}_{L}}) $的关系为:
$$ {z_L} = r{\rm{cos}}(\alpha ), {x_L} = r{\rm{sin}}(\alpha ) $$ (4) 对于像素点$ {P}'$的图像坐标$(u, v) $,保持激光雷达坐标原点与Kinect相机坐标原点在Y轴方向的垂直高度差为l,则有像素点三元组$ (u, v, {{z}_{K}})$与激光雷达测距点二元组$(r, \alpha ) $的关系为:
$$ {z_K}\left[ \begin{array}{l} u\\ v\\ 1 \end{array} \right] = \left[ {\begin{array}{*{20}{c}} {{f_x}}&0&{{c_x}}&0\\ 0&{{f_{_y}}}&{{c_y}}&0\\ 0&0&1&0 \end{array}} \right]\left[ {\begin{array}{*{20}{c}} \mathit{\boldsymbol{R}}&\mathit{\boldsymbol{T}}\\ {{{\bf{0}}^{\rm{T}}}}&{\bf{1}} \end{array}} \right]\left[ \begin{array}{l} r{\rm{sin}}(\alpha )\\ l\\ r{\rm{cos}}(\alpha ) \end{array} \right] $$ (5) 在确定相机参数后,把多对像素点三元组和测距点二元组代入式(5),通过求解线性方程组得到未知的R、T矩阵,进而确定激光雷达坐标系与Kinect相机坐标系的旋转平移关系,完成联合标定。
-
本文中,Kinect相机采集得到深度图像后,深度图像转换模块把图像中转换窗口的每个像素列上深度值最小的像素点距离和角度提取出来,相当于将部分或者全部深度图像向中心平面压缩,在中心平面上形成一系列虚拟激光点。图 5a为Kinect相机采集到的RGB图像;图 5b为深度图像与转换窗口,s表示窗口第一个转换像素行号,h表示转换窗口高度(单位为像素行),RGB图像$ ({{u}_{0}}, {{v}_{0}})$点对应深度图像的$(u, v) $点。
假设当前需要转换的像素在第u个像素列,该列所有像素点被转换成一个虚拟激光点,该点在所有虚拟激光点中的序号是j,激光点距离值为:
$$ d_j^K = {\rm{min}}\{ r_j^K(i)\} \quad \quad s \le i \le s + h $$ (6) 式中,$ r_{j}^{K}$表示${{O}_{K}} $与目标点P的虚拟激光点(P点在中心平面上的投影)距离,具体计算方法参照图 6所示模型。P在深度图像的对应点$ {P}'(u, v)$,其在中心平面的投影点A就是虚拟激光点,C是$ {{O}_{K}}$的投影,那么,线段A${{O}_{K}} $的长度就是$ r_{j}^{K}(i)$。
具体计算$r_{j}^{K}(i) $的步骤如下:
1) 获取P在Kinect坐标系下坐标$ P({{x}_{K}}, {{y}_{K}}, {{z}_{K}})$,${{z}_{K}} $是${P}' $的深度值;
2) 计算直线A$ {{O}_{K}}$和C$ {{O}_{K}}$夹角β为:
$$ \beta = {\rm{arctan}}({x_K}/{z_K}) $$ (7) 3) 二维激光点的计算。
如果Kinect相机观测角范围为$({{\beta }_{\text{min}}}, {{\beta }_{\text{max}}}) $,沿AC轴向可转换成M个虚拟激光点,那么,P对应虚拟激光束的序号为:
$$ j = \left\lfloor {M(\beta - {\beta _{{\rm{min}}}})/({\beta _{{\rm{max}}}} - {\beta _{{\rm{min}}}})} \right\rfloor $$ (8) 4) 计算A到相机原点$ {{O}_{K}}$的距离为:
$$ r_j^K(i) = |A{O_K}| = \sqrt {({z_K}^2 + {x_K}^2)} $$ (9) -
设激光雷达扫描得到的测距二元组集合为$ {{D}_{L}}$,融合Kinect采集得到的三元组信息后的测距二元组集合为$ {{D}_{F}}$。图 3中,P为$ {{D}_{L}}$中第i个测距点,其测距二元组为$ (d_{i}^{L}, \alpha )$,由式(1)和式(4)可得P在$({{O}_{K}}{{X}_{K}}{{Y}_{K}}{{Z}_{K}}) $下的坐标为:
$$ \left[ \begin{array}{l} {x_K}\\ {y_K}\\ {z_K} \end{array} \right] = \left[ {\begin{array}{*{20}{c}} \mathit{\boldsymbol{R}}&\mathit{\boldsymbol{T}}\\ {{{\bf{0}}^{\rm{T}}}}&{\bf{1}} \end{array}} \right]\left[ \begin{array}{c} d_i^L{\rm{sin}}(\alpha )\\ l\\ d_i^L{\rm{cos}}(\alpha ) \end{array} \right] $$ (10) 利用第3节的方法,由$({{x}_{K}}, {{y}_{K}}, {{z}_{K}}) $得到P对应虚拟激光雷达测距数据d。于是,可得到融合后第i束激光测距二元组$(d_{i}^{F}, \alpha ) $为:
$$ {d^F}_i = \left\{ \begin{array}{l} d\quad \quad {\rm{ }}d_j^K < d\\ d_i^L\quad \quad {\rm{ }}其他 \end{array} \right. $$ (11) 当Kinect相机与二维激光雷达同时工作,按照上述方法得到所有融合后的测距二元组集合${{D}_{F}} $。一般情况下二维激光雷达的激光测量角度大于Kinect相机观测角度,即$[{{\beta }_{\text{min}}}, {{\beta }_{\text{max}}}]\subset [{{\alpha }_{\text{min}}}, {{\alpha }_{\text{max}}}] $,从而${{D}_{F}} $为:
$$ \begin{array}{l} {D_F} = \{ d_j^F|j \in [0, ({\beta _{{\rm{max}}}} - {\beta _{{\rm{min}}}})/\Delta \beta ]\} \cup \\ \{ d_j^L|i \notin [0, ({\beta _{{\rm{max}}}} - {\beta _{{\rm{min}}}})/\Delta \beta ]且\\ {\rm{ }}i \in [0, ({\alpha _{{\rm{max}}}} - {\alpha _{{\rm{min}}}})/\Delta \alpha ]\} \end{array} $$ (12) 式中,$ \Delta \beta $表示Kinect相机的虚拟二维激光角增量;$ \Delta \alpha $代表激光雷达的角增量。深度图像与二维激光雷达数据融合算法伪代码为:
输入:$ {{D}_{L}}$//原始激光扫描二元组集合
输出:${{D}_{F}} $//融合Kinect数据的二元组集合
FuseRangerKinect(${{D}_{L}} $)
{ //从$ {{D}_{L}}$返回下一个二元组(r, α)
(r, α, i )=GetNextElement($ {{D}_{L}}$);
for (i in [0, ($ {{\alpha }_{\text{max}}}-{{\alpha }_{\text{min}}}$)/$\Delta \alpha $])
{ //返回二元组对应Kinect像素点坐标
$({{x}_{K}}, {{y}_{K}}, {{z}_{K}}) $=LaserTOKinect(r, α, l);
//返回像素点的虚拟激光点测距值
(d, j)=VirtualLaserRange $({{x}_{K}}, {{y}_{K}}, {{z}_{K}}) $;
if (j in [0, (${{\beta }_{\text{max}}}-{{\beta }_{\text{min}}} $)/ $ \Delta \beta $ ])
{ if (d < r)
//把${{D}_{F}} $第i个元素设置为(d, α )
{Insert($ {{D}_{F}}$, d, α, i);
Continue;
}
}
Insert(r, α, i);
(r, α, i)=GetNextElement($ {{D}_{L}}$);
}
return($ {{D}_{L}}$)
}
其中,FuseRangeKinect()是主框架;GetNextElement()为从原始激光扫描点集$ {{D}_{L}}$返回下一个二元组;LaserTOKinect()实现式(10);Insert()向融合激光点集$ {{D}_{F}}$中添加一个二元组。
Obstacle Detection for Robot Based on Kinect and 2D Lidar
-
摘要: 在Kinect相机和二维激光雷达结合的基础上,提出了一种适用于移动机器人、低成本的障碍物三维感知方法。该方法首先通过Kinect相机和二维激光雷达联合标定建立深度图像点与激光雷达测距点的对应关系,然后,融合二者的检测数据得到环境障碍物位置。具体步骤为:1)Kinect相机与二维激光雷达分别从环境中获取深度图像和二维激光数据;2)将深度图像转换成虚拟二维激光数据;3)根据联合标定得到的对应关系融合虚拟激光数据与二维激光雷达数据,得到障碍物的位置。实物测试证明该方法正确有效,可用于移动机器人对环境障碍物的判断。Abstract: By assembling Kinect camera and 2D lidar, this paper proposes a low-cost obstacle detection method for mobile robot. The correspondence between depth image points and laser radar ranging points is constructed based on joint calibration of the Kinect camera and lidar. The location of environmental obstacles is computed from the detection datum of these two sensors. There are three steps for the computations:1) Kinect camera and 2D lidar obtain the depth image and 2D laser points respectively; 2) the depth image is transferred into virtual laser points; 3) according to the correspondence, the obstacles location is calculated from the integration of virtual laser points and 2D laser points. The experiments show this method is proper and effective, and the computations results could be used to determine the obstacles for mobile robot.
-
Key words:
- depth image /
- Kinect camera /
- lidar /
- mobile robot /
- obstacle detection
-
[1] MANSOUR S M B, SUNDARAPANDIAN V, NACEUR S M. Design and control with improved predictive algorithm for obstacles detection for two wheeled mobile robot navigation[J]. International Journal of Control Theory & Applications, 2016, 9(38):37-54. [2] 彭梦. 基于多传感器融合的移动机器人障碍物检测研究[D]. 长沙: 中南大学, 2007. PENG Meng. Research on obstacle detection of mobile robots based on multi-sensor information fusion[D]. Changsha: Central South Uuniversity, 2007. [3] 邹斌, 刘康, 王科未.基于三维激光雷达的动态障碍物检测和追踪方法[J].汽车技术, 2017(8):19-25. http://cdmd.cnki.com.cn/Article/CDMD-10532-1014300753.htm ZOU Bin, LIU Kang, WANG Ke-wei. Dynamic obstacle detection and tracking method based on 3D lidar[J]. Automobile Technology, 2017(8):19-25. http://cdmd.cnki.com.cn/Article/CDMD-10532-1014300753.htm [4] KELLER C G, ENZWEILER M, ROHRBACH M, et al. The benefits of dense stereo for pedestrian detection[J]. IEEE Transactions on Intelligent Transportation Systems, 2011, 12(4):1096-1106. doi: 10.1109/TITS.2011.2143410 [5] YU Q, ARAUJO H, WANG H. A stereovision method for obstacle detection and tracking in non-flat urban environments[J]. Autonomous Robots, 2005, 19(2):141-157. doi: 10.1007/s10514-005-0612-6 [6] 李启东. 基于单目视觉的机器人动态障碍物检测与壁障方法研究[D]. 长春: 吉林大学, 2016. LI Qi-dong. Research on robot dynamic obstacle detection and obstacle avoidance method based on monocular vision[D]. Changchun: Jilin University, 2016. [7] 冯瑾. 基于双目立体视觉的移动机器人障碍物检测技术研究[D]. 徐州: 中国矿业大学, 2015. FENG Jin. Research on technology of mobile robot obstacle detection based on binocular stereo vision[D]. Xuzhou: China University of Mining and Technology, 2015. [8] MANE S B, VHANALE S. Real time obstacle detection for mobile robot navigation using stereo vision[C]//Proceedings of the International Conference on Computing, Analytics and Security Trends. [S. l. ]: IEEE, 2016: 101-105. [9] CHEN X, REN W, LIU M, et al. An obstacle detection system for a mobile robot based on radar-vision fusion[C]//Proceedings of the 4th International Conference on Computer Engineering and Networks. [S. l. ]: Springer International Publishing, 2015: 677-685. [10] 张双喜. 基于雷达与相机的无人驾驶智能车障碍物检测技术研究[D]. 西安: 长安大学, 2013. ZHANG Shuang-xi. Research on obstacle detection technology based on radar and camera of driverless smart vehicles[D]. Xi'an: Chang'an University, 2013. [11] 汪佩, 郭剑辉, 李伦波, 等.基于单线激光雷达与视觉融合的负障碍检测算法[J].计算机工程, 2017, 43(7):303-308. http://cdmd.cnki.com.cn/Article/CDMD-10288-1013165272.htm WANG Pei, GUO Jian-hui, LI Lun-bo, et al. Negative obstacle detection algorithm based on single line laser radar and vision fusion[J]. Computer Engineering, 2017, 43(7):303-308. http://cdmd.cnki.com.cn/Article/CDMD-10288-1013165272.htm [12] 薛彦涛, 吕洪波, 孙启国.基于Kinect深度数据的移动机器人障碍检测方法研究[J].计算机测量与控制, 2017, 25(2):61-63. http://www.cnki.com.cn/Article/CJFDTotal-GWDZ201412061.htm XUE Yan-tao, LÜ Hong-bo, SUN Qi-guo. Mobile robot obstacle detection method based on depth data of Kinect[J]. Computer Measurement & Control, 2017, 25(2):61-63. http://www.cnki.com.cn/Article/CJFDTotal-GWDZ201412061.htm