一种基于点线特征扫描匹配的移动机器人定位方法
技术领域
本发明属于机器人
技术领域
,具体涉及一种移动机器人定位方法。背景技术
随着移动机器人在工业、民用等领域的应用,同时定位与地图构建技术(Simultaneous Localization And Mapping,SLAM)得到了长足发展,已是移动机器人领域的研究热点和难点。定位是SLAM中的关键环节,扫描匹配方法作为激光SLAM的前端,负责实现数据关联并估计机器人位姿变化,用于后续定位。扫描匹配方法是激光SLAM的核心基础,位姿估计准确与否直接影响激光SLAM的建图效果。目前扫描匹配方法可分为基于点匹配的方法、基于数学特性匹配的方法和基于特征匹配的方法。基于特征的匹配方法因使用特征描述子进行匹配计算,相较于基于点和基于数学特性的方法,其在变换参数计算过程中不需要初值,能够处理具有部分重叠和较大偏移的连续扫描点云,从而得到广泛使用。
当前,以迭代端点拟合(Iterative End Point Fit,IEPF)、分割-合并算法(Split-Merge)为代表的激光点云直线特征提取算法使用递归方式进行线段分离,效率较低,且扫描点云的稀疏性对算法性能影响较大。以局部不变特征(CongruenceTransformation Invariant Feature,CIF)、二变量正态概率密度映射法为代表的激光点云角点特征提取算法大多选择直接从激光雷达得到的点云中筛选角点特征,受限于激光雷达噪声的影响,在后续位姿变换参数的匹配计算过程中将引入不必要的误差。
发明内容
为了克服现有技术的不足,本发明提供了一种基于点线特征扫描匹配的移动机器人定位方法,该方法通过对一帧激光点云进行处理,从中可快速、准确地提取出由若干个扫描点组成的直线特征,以及由直线特征延伸相交形成的角点特征,从而对移动机器人所处的室内结构化环境进行简要描述。通过计算前后两帧激光点云的直线特征以及角点特征之间的匹配度,寻找两帧激光点云之间的对应关系,从而计算移动机器人在两帧激光点云期间的位姿变换关系,更准确地估计机器人运动状态,提高定位精度,改善激光SLAM的建图效果。
本发明解决其技术问题所采用的技术方案包括如下步骤:
步骤1:移动机器人通过搭载的激光雷达传感器对周围环境进行扫描,从激光雷达中获取二维点云数据,进行坐标转换和滤波的预处理:
步骤1.1:获取的二维点云数据表示为其中为激光雷达第i束激光在t时刻的观测量,d为所测得的障碍物的距离,η为激光雷达的扫描分辨率;通过公式(1)进行坐标转换,将得到的原始点云数据是从极坐标转换至直角坐标,得到
步骤1.2:对二维点云数据进行滤波处理:当一个扫描点到两相邻扫描点的距离皆大于阈值γ时,计算该扫描点到两相邻扫描点所连成线段的距离,当此距离大于阈值λ时,判定该扫描点为离群点,去除该扫描点;
步骤1.3:获取t时刻的一帧点云数据,进行坐标转换和滤波处理后得到点云数据其中n为此帧点云数据中所包含的扫描点个数;
步骤2:对点云数据Pt按扫描顺序依次从中取m个扫描点组成备选种子段,对各个备选种子段进行奇异值分解SVD,得到n-m+1个拟合残差平方和,并进行排序和筛选:
步骤2.1:从第i个扫描点开始,按顺序取m个扫描点,形成备选种子段按公式(2)进行奇异值分解SVD:
其中,ui为左奇异矩阵;si为奇异值矩阵,且vi为右奇异矩阵, 为的均值,即
步骤2.2:对m个扫描点进行直线拟合时得到n-m+1个拟合残差平方和进行升序排序;设定阈值ε,舍弃Ei>ε的备选种子段,保留剩下种子段用于区域生长算法,其中N为种子段的数量;
步骤3:将Seed中的种子段拟合直线,生长延伸得到直线特征,并进行合并操作:
步骤3.1:对于种子段使用总体最小二乘法拟合直线,由公式(3)计算得到直线方程y=aix+bi:
其中ai和bi分别表示直线的斜率和截距,和取自
步骤3.2:区域生长算法的生长条件设定为:种子段任一侧最邻近扫描点到拟合直线的距离小于阈值δ;
终止条件设定为:种子段两侧最邻近扫描点到拟合直线的距离大于阈值δ,或已到达点云边缘;
以生长条件和终止条件为判断条件对种子段进行生长延伸:
步骤3.2.1:种子段向后延伸;
在种子段Si的邻域中取最邻近的后侧扫描点计算该扫描点到直线方程y=aix+bi的直线距离Db:
若满足条件Db<δ,则将扫描点纳入种子段,将种子段向后扩张;再计算当前最邻近的后侧扫描点到直线方程y=aix+bi的直线距离Db,若满足条件Db<δ则将纳入种子段;重复执行直至满足终止条件:当前最邻近的后侧扫描点到直线方程y=aix+bi的直线距离大于阈值δ,或该扫描点是点云边缘点,种子段停止向后延伸;
步骤3.2.2:种子段向前延伸;
在种子段Si的邻域中取最邻近的后侧扫描点计算该扫描点到直线方程y=aix+bi的直线距离Df:
若满足条件Df<δ,则将扫描点纳入种子段,将种子段向前扩张;再计算当前最邻近的前侧扫描点到直线方程y=aix+bi的直线距离Df,满足条件Df<δ则将纳入种子段;重复执行直至满足终止条件:当前最邻近的前侧扫描点到直线方程y=aix+bi的直线距离大于阈值δ,或该扫描点是点云边缘点,种子段停止向前延伸;
当两侧都停止生长时,得到完整的种子段其中si和ei分别表示种子段Si中的首尾扫描点在Pt中的序号下标;对Si采用公式(3)使用总体最小二乘法进行直线拟合,对拟合直线的斜率ai和截距bi进行更新;
步骤3.3:确定直线特征的两侧端点;
对于种子段Si,取其中的首尾扫描点和向直线y=aix+bi作垂线,与直线相交于和两点,则将和作为直线特征首尾两侧的端点,并由公式(6)、(7)计算得到和的坐标:
则由种子段Si得到的直线特征表示为其中为直线特征的重心,亦为中心,li表示直线特征的长度,即过坐标系原点向直线特征Li作辅助垂线,ri和θi分别表示辅助垂线在当前激光雷达坐标系下的长度以及与横轴x轴的夹角;
步骤3.4:所有种子段的直线特征提取完成之后,按种子段所包含的扫描点的获取顺序对所有直线特征重新排序,然后进行判别合并:
当前后两个直线特征为同一近似直线时,两者的辅助垂线也会近似重合,通过比较两辅助垂线的几何位置判断两直线特征是否可以进行合并,从而避免个别扫描点噪声过大而导致直线特征断开的情况,具体如下:
取Li和Li+1,i∈1,2,…,N-1,进行条件判断:
步骤3.4.1:判断条件:|ri-ri+1|<Δr,其中Δr是两直线特征的辅助垂线之间的最大长度差,ri+1表示过坐标系原点向直线特征Li+1作的辅助垂线在当前激光雷达坐标系下的长度以及与横轴x轴的夹角;
步骤3.4.2:判断条件:|θi-θi+1|<Δθ,其中Δθ是两直线特征的辅助垂线之间的最大角度差,θi+1表示过坐标系原点向直线特征Li+1作的辅助垂线在当前激光雷达坐标系下与横轴x轴的夹角;
当同时满足上述两个条件时,则将直线特征Li和Li+1合并形成Li,并对Li的参数进行更新,合并完成之后得到其中N1为合并之后的直线特征数量,N1≤N;
步骤4:角点特征提取;
步骤4.1:从中依次取相邻的两个直线特征Li和Li+1判断是否满足角点特征的条件:
步骤4.1.1:条件判断:|θi-θi+1|∈[90°-σ,90°+σ],其中σ是用于判定角点的不确定性参数;
步骤4.1.2:条件判断:其中Dmax是形成角点特征的直线特征相邻端点的最远距离;
步骤4.2,若同时满足上述步骤4.1.1和步骤4.1.2的条件,则认为直线特征Li和Li+1能延伸相交形成角点特征Cj,由公式(8)计算得到该角点特征的坐标:
其中ai+1和bi+1分别表示种子段Si+1使用总体最小二乘法拟合直线的斜率和截距;则由直线特征Li和Li+1形成的角点特征表示为其中为角点特征的位置坐标;和是角点特征的两直角边在当前激光雷达坐标系下与横轴x轴的夹角,即对所有直线特征进行判断计算之后得到此帧点云的角点特征集合其中N2为所提取的角点特征的数目;
步骤5:在移动机器人的运动过程中读取t+1时刻的激光雷达点云数据,进行步骤1至步骤4相同的处理操作来提取点线特征,从而得到t+1时刻点云数据中的直线特征集合和角点特征集合并按下列步骤进行匹配度计算,以寻找两帧点云之间的对应关系;匹配度分成直线匹配度和角点匹配度两部分;
步骤5.1:计算直线匹配度;
对于前后两帧点云的直线特征Line和Line',设定固定大小的滑动窗口以确定需要进行匹配计算的直线特征对;
对于直线特征Li∈Line和Lj'∈Line',其直线匹配度为:
其中和分别为长度匹配度、位置匹配度和角度匹配度,且
其中DLmax为可匹配的两直线特征的最大重心距离差;Δθmax为可匹配的两直线特征的最大夹角差;
步骤5和步骤6中的公式里带右上角标“'”的变量均表示t+1时刻的激光雷达点云数据,变量定义与t时刻的相同;
步骤5.2:计算角点匹配度;
对于前后两帧点云的角点特征CP和CP',使用相同的滑动窗口来确定需要进行匹配计算的角点特征对,取Ci∈CP和Cj'∈CP',则此两角点特征的角点匹配度为:
其中为位置匹配度,和为角点特征两直角边的角度匹配度,且
其中DLmax和Δθmax与公式(11)、(12)中参数相同,分别为可匹配的两直线特征的最大坐标距离差和最大夹角差;
步骤6:利用步骤5中得到的直线匹配度和角点匹配度进行移动机器人运动参数估计,计算前后两帧点云之间移动机器人的位姿变换;
移动机器人的运动分为平移和旋转,平移参数(xt,yt)和旋转参数θt计算过程表示为:
其中n1,n2分别为匹配度不为0的直线特征匹配对和角点特征匹配对的数量;表示直线特征匹配对(Li,Lj')在参数计算中所占权重, 表示角点特征匹配对(Ci,Cj')在参数计算中所占权重,
则前后两帧点云之间,即t时刻至t+1时刻,移动机器人位姿变换的旋转矩阵为平移矩阵为
优选地,所述步骤1.2中判定为离群点的步骤如下:
步骤1.2.1:判断条件:其中γ为扫描点到相邻扫描点的最大距离阈值;
步骤1.2.2:判断条件:
步骤1.2.3:判断条件:其中分别为扫描点和相连所形成线段的斜率和截距;λ为扫描点到相邻扫描点所连成线段的最大距离阈值;
若同时满足上述三个条件,则认为为离群点,去除
本发明的有益效果如下:
1、本发明使用区域生长算法提取直线特征,以直线拟合残差平方和作为种子段的筛选条件,确保了种子段的准确性;
2、本发明种子段生长过程中,种子段同时向两侧进行延伸扩张,以迭代方式进行操作,相较于现有直线特征提取算法的递归循环方式,运算速度更快,提高了扫描匹配算法的运行效率;
3、本发明使用总体最小二乘法进行直线拟合,同时考虑了x轴和y轴方向上的误差,而常用的最小二乘法只计算y轴方向上的误差,因此拟合精度更高,得到的直线特征更加准确;
4、本发明获得的角点特征是虚拟扫描点,可以避免激光雷达传感器噪声的影响。
5、本发明使用直线特征和角点特征的组合特征进行移动机器人的位姿变换计算,相较于只提取直线特征或角点特征的方法,能获得更高的定位精度,增加激光SLAM算法的鲁棒性。
附图说明
图1为本发明方法流程图。
图2为本发明的滤波剔除离群点示意图。
图3为本发明的区域生长算法提取直线特征示意图。
图4为本发明的直线特征端点确定示意图。
图5为本发明的直线特征各参数示意图。
图6为本发明的两直线特征合并示意图。
图7为本发明的角点特征提取示意图。
图8为本发明的滑动窗口法确定直线特征匹配对示意图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
如图1所示,一种基于点线特征扫描匹配的移动机器人定位方法,包括如下步骤:
步骤1:移动机器人通过搭载的激光雷达传感器对周围环境进行扫描,从激光雷达中获取二维点云数据,进行坐标转换和滤波的预处理:
步骤1.1:获取的二维点云数据表示为其中为激光雷达第i束激光在t时刻的观测量,d为所测得的障碍物的距离,η为激光雷达的扫描分辨率;本例中使用的激光雷达型号为Sick LMS200,其扫描频率为5Hz,扫描范围为10m,角度分辨率为1°,扫描角度为180°。使用公式(1)将得到的原始点云数据是从极坐标转换至直角坐标,得到其中i∈1,2,…,180:
步骤1.2:对二维点云数据进行滤波处理:当一个扫描点到两相邻扫描点的距离皆大于阈值γ时,计算该扫描点到两相邻扫描点所连成线段的距离,以排除三个扫描点处于近似直线位置的情况,当此距离大于阈值λ时,判定该扫描点为离群点,去除该扫描点;
步骤1.2.1:判断条件:其中γ为扫描点到相邻扫描点的最大距离阈值;
步骤1.2.2:判断条件:
步骤1.2.3:判断条件:其中分别为扫描点和相连所形成线段的斜率和截距;λ为扫描点到相邻扫描点所连成线段的最大距离阈值;
若同时满足上述三个条件,则认为为离群点,去除
步骤1.3:获取t时刻的一帧点云数据,进行坐标转换和滤波处理后得到点云数据其中n为此帧点云数据中所包含的扫描点个数;
步骤2:对点云数据Pt按扫描顺序依次从中取m个扫描点组成备选种子段,对各个备选种子段进行奇异值分解SVD,得到n-m+1个拟合残差平方和,并进行排序和筛选;参数m为一个种子段所包含的扫描点个数,根据激光雷达一帧点云的扫描点数量来确定,如本例中一帧点云含有180个扫描点,则可取m=5;
步骤2.1:从第i个扫描点开始,按顺序取m个扫描点,形成备选种子段按公式(2)进行奇异值分解SVD:
其中,ui为左奇异矩阵;si为奇异值矩阵,且vi为右奇异矩阵, 为的均值,即
步骤2.2:对m个扫描点进行直线拟合时得到n-m+1个拟合残差平方和进行升序排序;设定阈值ε,舍弃Ei>ε的备选种子段,保留剩下种子段用于区域生长算法,其中N为种子段的数量;
步骤3:将Seed中的种子段拟合直线,生长延伸得到直线特征,并进行合并操作:
步骤3.1:对于种子段使用总体最小二乘法拟合直线,由公式(3)计算得到直线方程y=aix+bi:
其中ai和bi分别表示直线的斜率和截距,和取自
步骤3.2:区域生长算法的生长条件设定为:种子段任一侧最邻近扫描点到拟合直线的距离小于阈值δ;
终止条件设定为:种子段两侧最邻近扫描点到拟合直线的距离大于阈值δ,或已到达点云边缘;
以生长条件和终止条件为判断条件对种子段进行生长延伸:
步骤3.2.1:种子段向后延伸;
在种子段Si的邻域中取最邻近的后侧扫描点计算该扫描点到直线方程y=aix+bi的直线距离Db:
若满足条件Db<δ,则将扫描点纳入种子段,将种子段向后扩张;再计算当前最邻近的后侧扫描点到直线方程y=aix+bi的直线距离Db,若满足条件Db<δ则将纳入种子段;重复执行直至满足终止条件:当前最邻近的后侧扫描点到直线方程y=aix+bi的直线距离大于阈值δ,或该扫描点是点云边缘点,种子段停止向后延伸;
步骤3.2.2:种子段向前延伸;
在种子段Si的邻域中取最邻近的后侧扫描点计算该扫描点到直线方程y=aix+bi的直线距离Df:
若满足条件Df<δ,则将扫描点纳入种子段,将种子段向前扩张;再计算当前最邻近的前侧扫描点到直线方程y=aix+bi的直线距离Df,满足条件Df<δ则将纳入种子段;重复执行直至满足终止条件:当前最邻近的前侧扫描点到直线方程y=aix+bi的直线距离大于阈值δ,或该扫描点是点云边缘点,种子段停止向前延伸;
当两侧都停止生长时,得到完整的种子段其中si和ei分别表示种子段Si中的首尾扫描点在Pt中的序号下标;对Si采用公式(3)使用总体最小二乘法进行直线拟合,对拟合直线的斜率ai和截距bi进行更新;
步骤3.3:确定直线特征的两侧端点;
对于种子段Si,取其中的首尾扫描点和向直线y=aix+bi作垂线,与直线相交于和两点,则将和作为直线特征首尾两侧的端点,并由公式(6)、(7)计算得到和的坐标:
则由种子段Si得到的直线特征表示为其中为直线特征的重心,亦为中心,li表示直线特征的长度,即过坐标系原点向直线特征Li作辅助垂线,ri和θi分别表示辅助垂线在当前激光雷达坐标系下的长度以及与横轴x轴的夹角;
步骤3.4:所有种子段的直线特征提取完成之后,按种子段所包含的扫描点的获取顺序对所有直线特征重新排序,然后进行判别合并:
当前后两个直线特征为同一近似直线时,两者的辅助垂线也会近似重合,通过比较两辅助垂线的几何位置判断两直线特征是否可以进行合并,从而避免个别扫描点噪声过大而导致直线特征断开的情况,具体如下:
取Li和Li+1,i∈1,2,…,N-1,进行条件判断:
步骤3.4.1:判断条件:|ri-ri+1|<Δr,其中Δr是两直线特征的辅助垂线之间的最大长度差,ri+1表示过坐标系原点向直线特征Li+1作的辅助垂线在当前激光雷达坐标系下的长度以及与横轴x轴的夹角;
步骤3.4.2:判断条件:|θi-θi+1|<Δθ,其中Δθ是两直线特征的辅助垂线之间的最大角度差,θi+1表示过坐标系原点向直线特征Li+1作的辅助垂线在当前激光雷达坐标系下与横轴x轴的夹角;
当同时满足上述两个条件时,则将直线特征Li和Li+1合并形成Li,并对Li的参数进行更新,合并完成之后得到其中N1为合并之后的直线特征数量,N1≤N;
步骤4:角点特征提取;
步骤4.1:从中依次取相邻的两个直线特征Li和Li+1判断是否满足角点特征的条件:
步骤4.1.1:条件判断:|θi-θi+1|∈[90°-σ,90°+σ],其中σ是用于判定角点的不确定性参数;
步骤4.1.2:条件判断:其中Dmax是形成角点特征的直线特征相邻端点的最远距离;
步骤4.2,若同时满足上述步骤4.1.1和步骤4.1.2的条件,则认为直线特征Li和Li+1能延伸相交形成角点特征Cj,由公式(8)计算得到该角点特征的坐标:
其中ai+1和bi+1分别表示种子段Si+1使用总体最小二乘法拟合直线的斜率和截距;则由直线特征Li和Li+1形成的角点特征表示为其中为角点特征的位置坐标;和是角点特征的两直角边在当前激光雷达坐标系下与横轴x轴的夹角,即对所有直线特征进行判断计算之后得到此帧点云的角点特征集合其中N2为所提取的角点特征的数目;
步骤5:在移动机器人的运动过程中读取t+1时刻的激光雷达点云数据,进行步骤1至步骤4相同的处理操作来提取点线特征,从而得到t+1时刻点云数据中的直线特征集合和角点特征集合并按下列步骤进行匹配度计算,以寻找两帧点云之间的对应关系;匹配度分成直线匹配度和角点匹配度两部分;
步骤5.1:计算直线匹配度;
对于前后两帧点云的直线特征Line和Line',设定固定大小的滑动窗口以确定需要进行匹配计算的直线特征对,如窗口大小为5,则对于直线特征L7,需要与之进行匹配计算的后一帧点云数据中的直线特征为L5'、L6'、L7'、L8'和L9';
对于直线特征Li∈Line和Lj'∈Line',其直线匹配度为:
其中和分别为长度匹配度、位置匹配度和角度匹配度,且
其中DLmax为可匹配的两直线特征的最大重心距离差;Δθmax为可匹配的两直线特征的最大夹角差;
步骤5和步骤6中的公式里带右上角标“'”的变量均表示t+1时刻的激光雷达点云数据,变量定义与t时刻的相同;
步骤5.2:计算角点匹配度;
对于前后两帧点云的角点特征CP和CP',使用相同的滑动窗口来确定需要进行匹配计算的角点特征对,取Ci∈CP和Cj'∈CP',则此两角点特征的角点匹配度为:
其中为位置匹配度,和为角点特征两直角边的角度匹配度,且
其中DLmax和Δθmax与公式(11)、(12)中参数相同,分别为可匹配的两直线特征的最大坐标距离差和最大夹角差;
直线匹配度MLij和角点匹配度MCij分别反应了两直线特征Li与Lj',以及两角点特征Ci和Cj'在几何空间中分布的匹配程度。由定义可知,MLij,MCij∈[0,1],且MLij越大,直线匹配度越高,说明Li和Lj'对应环境中相同物体的概率越大,而角点特征由直线特征延伸相交而成,不一定对应环境中的实际物体,MCij越大,也从侧面体现了直线特征对应关系的准确性越高;
步骤6:利用步骤5中得到的直线匹配度和角点匹配度进行移动机器人运动参数估计,计算前后两帧点云之间移动机器人的位姿变换;
移动机器人的运动分为平移和旋转,平移参数(xt,yt)和旋转参数θt计算过程表示为:
其中n1,n2分别为匹配度不为0的直线特征匹配对和角点特征匹配对的数量;表示直线特征匹配对(Li,Lj')在参数计算中所占权重, 表示角点特征匹配对(Ci,Cj')在参数计算中所占权重,
平移参数(xt,yt)和旋转参数θt的计算可分为前后两部分,前半部分是由所有直线匹配对根据自身的直线匹配度对位置或角度参数进行加权求和而得,而后半部分是由所有角点匹配对根据自身的角点匹配度对位置或角度参数进行加权求和。将两部分根据直线特征匹配对和角点特征匹配对的数量关系,按比例求和得到平移参数(xt,yt)和旋转参数θt,则前后两帧点云之间,即t时刻至t+1时刻,移动机器人位姿变换的旋转矩阵为平移矩阵为