发明内容
为此,本发明提供的室内环境地图创建的闭环校正方法,采用基于卡尔曼滤波器的状态估计算法,对Gmapping算法获取的机器人位姿进行校正,并基于校正后的机器人位姿,重新建立环境地图获得校正地图。反复的实验结果表明,本发明提供的室内环境地图创建的闭环校正方法能够显著改善基于RPLidar数据建立地图的闭环效果。从长远来说,能够推进低成本、低精度激光传感器在日常生活及科学研究中的广泛使用。
本发明的技术方案以如下方式实现:
一种室内环境地图创建的闭环校正方法,包括:
步骤1获取环境信息,标记机器人的初始位姿信息;
步骤2机器人行走距离超过规定范围后记录机器人的实时位姿信息,采用Gmapping算法根据所述初始位姿信息和所述实时位姿信息生成环境地图;
步骤3检测所述环境地图是否出现闭环,若是,则继续执行以下步骤,若不是,则重复执行步骤2;
步骤4采用状态估计算法重新估计机器人的所述实时位姿信息,并更新所述实时位姿信息生成校正地图。
本发明利用传统的Gmapping算法处理成本较低、精度较低的传感器采集的环境数据,建立环境地图,再通过利用基于卡尔曼滤波器的状态估计算法,对Gmapping算法估计所得的机器人位姿进行校正,根据校正后的机器人位姿,重新建立环境地图得到校正地图,有效改善环境地图的闭环效果。
进一步优选的,所述环境数据由里程计和激光传感器获取。
进一步优选的,所述激光传感器为RPLidar激光雷达。
本发明采用低精度的RPLidar激光雷达,并通过状态估计算法对低精度带来的误差加以补偿,能够推进低成本、低精度激光传感器在日常生活及科学研究中的广泛使用。
进一步优选的,所述闭环检测通过场景标定实现。
进一步优选的,步骤2还包括记录多个机器人的所述实时位姿信息生成机器人的状态向量。
进一步优选的,所述步骤4采用状态估计算法进行闭环校正,具体包括:
首先通过状态转移矩阵计算上一时刻的状态向量和输入对当前时刻状态的影响,得到当前时刻的状态预测值;以及通过状态转移矩和上一时刻的协方差矩阵值以及状态噪声协方差矩阵得到协方差矩阵的预测值;
再通过状态方程和观测方程实现观测向量的更新,根据实际观测值和当前时刻的状态预测值计算新息;所述状态转移矩阵当前时刻的状态预测值计算新息;以及,通过状态转移矩阵计算协方差矩阵预测值和观测误差的协方差矩阵,得到新息的协方差矩阵;
通过状态转移矩阵计算当前时刻的协方差矩阵预测值,并计算新息的协方差矩阵的逆矩阵,得到滤波器增益;通过上一时刻的状态向量结合滤波器增益和新息计算出当前时刻的状态状态向量;以及根据上一时刻的协方差矩阵值和增益计算出当前时刻的协方差矩阵值;
更新所述状态向量和所述协方差矩阵;根据更新所得的所述状态向量生成所述校正地图。
本发明采用的状态估计算法能够显著改善基于RPLidar激光传感器获取的环境数据建立地图的闭环效果。
进一步优选的,所述Gmapping算法和所述状态估计算法在安装有ROS的Linux系统下并发执行。
本发明提供了一种基于低成本、精度相对较低的激光传感器的室内环境地图创建的闭环校正方法,通过对比分析不同精度及成本激光传感器创建地图的精度及闭环效果,给出利用低成本、精度可接受的激光传感器实现地图创建的必要性及可行性,然后提出一种基于卡尔曼滤波器的状态估计算法,对利用低成本、低精度激光传感器数据创建地图过程中机器人的位姿进行校正,并基于校正后的机器人的位姿重新创建地图,实现了地图的闭环,提高了地图创建的精度,同时推进低成本激光传感器在日常生活及科学研究中的应用。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图3为本发明室内环境地图创建的闭环校正方法的步骤示意图,作为本发明的一个具体实施例,如图3所示,本发明提供了一种室内环境地图创建的闭环校正方法,包括:
步骤1获取环境信息,标记机器人的初始位姿信息;
步骤2机器人行走距离超过规定范围后记录机器人的实时位姿信息,采用Gmapping算法根据所述初始位姿信息和所述实时位姿信息生成环境地图;
步骤3检测所述环境地图是否出现闭环,若是,则继续执行以下步骤,若不是,则重复执行步骤2;
步骤4采用状态估计算法重新估计机器人的所述实时位姿信息,并更新所述实时位姿信息生成校正地图。
具体的,本发明中环境数据由里程计和激光传感器获取,其中,激光传感器选用低成本、低精度的RPLidar激光雷达,通过RPLidar激光雷达获取环境信息,RPLidar激光雷达的测量长度范围为0.2-6.0米,角度范围为0-360度,采样频率超过2000Hz。本发明采用低精度的RPLidar激光雷达,并通过状态估计算法对低精度带来的误差加以补偿,能够推进低成本、低精度激光传感器在日常生活及科学研究中的广泛使用。
具体的,本发明利用传统Gmapping算法处理低精度激光数据,建立环境地图,再利用基于卡尔曼滤波器的状态估计算法,对Gmapping算法估计所得的机器人位姿进行校正,最后根据校正后的机器人位姿,重新建立环境地图,改善地图的闭环效果。
下面以具体实例阐述本发明的工作过程。
本实施例利用机器人在有走廊、办公室及大厅的环境中实现地图创建及闭环校正,该机器人装备有里程计和陀螺仪获取机器人的距离和方向信息。在机器人上装配了RPLidar激光雷达创建环境地图。在室内环境中,利用VisualStudio 2010在Linux系统下编程,并通过ROS控制机器人实现环境地图创建及闭环,图4为本发明室内环境地图创建的闭环校正方法的Gmapping算法流程图。
本发明具体执行步骤如下:
步骤1,控制机器人在目标环境中行走,获取里程计和激光传感器的环境信息,标记机器人的初始位姿信息,记为p0(x0,y0,θ0)。其中,x表示横坐标、y表示纵坐标,θ表示朝向角。本发明中可以选择人为控制或根据环境特点,设计合理的机器人环境探索算法。
步骤2,假设机器人i时刻的驱动输入为ui=(0,0,0,...,Δxi,Δyi,Δθi,0,0,0,...),当满足时,Δ表示变化量。机器人记录一次激光传感器和里程计的环境信息,并记录机器人实时位姿信息,采用Gmapping算法根据初始位姿信息和实时位姿信息生成环境地图。
需要说明的是,对于传统的Gmapping算法,当机器人行走距离大于一定范围d,或朝向角变化大于一定角度θ,或超过一定时间t为处理激光传感器或里程计数据后,机器人将激光传感器和里程计数据融合入环境地图中,也即在满足上述条件后,机器人会记录一次里程计或激光传感器获取的环境信息。而在本发明中,为避免引入额外的误差,同时便于实现机器人的控制,机器人只有在行走距离超过一定范围Δ后才对激光传感器和里程计的环境信息进行处理。
步骤3,实时检测是否有闭环出现,若未出现闭环,则重复步骤2;若出现闭环,记录机器人的状态向量。假设机器人第一次回到p0(x0,y0,θ0)时,共记录了k个状态,形成状态向量,记为xk={x0,y0,θ0,...,xk,yk,θk}={p0,...,pk};
需要说明的是,闭环检测(loop detection)目前仍然是一个开放性的研究课题,目前并没有完美的解决解决方案。另外,闭环检测也不是本发明的核心内容,因此在本发明中,闭环检测通过场景标定实现。
步骤4,实现Gmapping算法记录的机器人状态的校正。本发明中,Gmapping算法和状态估计算法在安装有ROS系统的Linux系统下并发执行,在机器人回到p0(x0,y0,θ0)后,Gmapping算法仍然使用粒子滤波器实现地图信息的更新和机器人位姿的估计,按照原算法继续执行,本发明采用的状态估计算法则对Gmapping算法估计所得的机器人状态进行重新估计。
记机器人的状态方程和观测方程分别为:
xk=Ik+1xk-1+Ik+1uk+wk-1, (1)
zk=Ik+1xk+vk, (2)
其中,xk为机器人的状态向量,zk为观测向量,uk为系统输入,w和v分别为机器人的状态和观测噪声(系统噪声向量和观测噪声向量,向量中每个维度的噪声一般可认为服从高斯分布),可假设为高斯白噪声,Ik+1为k+1维的单位矩阵。由于本发明中直接对状态向量,因此可以认为xk和zk存在等价关系。
当机器人再次返回某个状态pi后(可假设其观测到的该状态为),则基于卡尔曼滤波器的状态估计算法进行闭环校正,具体包括:
设当前时刻表示为k,上一时刻表示为k-1。
(一)通过状态转移矩阵计算上一时刻的状态向量和输入对当前时刻状态的影响,得到当前时刻的状态预测值;以及通过状态转移矩和上一时刻的协方差矩阵值以及状态噪声协方差矩阵得到协方差矩阵的预测值。
具体分为两步:
1.计算状态预测值
其中,为k时刻的状态预测值,为k-1时刻的状态值,u(k-1)为k-1时刻的输入,Ik+1为状态转移矩阵。本质上是是矩阵的乘法,指k-1时刻状态向k时刻的转移,Ik+1u(k-1)同理。
2.计算协方差矩阵的预测值
P(k|k-1)=Ik+1P(k-1|k-1)Ik+1+Q(k);
其中,P(k|k-1)为协方差矩阵预测值;
根据k-1时刻的值预测k时刻的值。Ik+1P(k-1|k-1)Ik+1表示的是Ik+1.P(k-1|k-1).Ik+1,即矩阵的乘法。在状态转移的过程中要考虑误差的影响,Q(k)是状态噪声协方差矩阵。
(二)通过状态方程和观测方程实现观测向量的更新,根据实际观测值和当前时刻的状态预测值计算新息;所述状态转移矩阵当前时刻的状态预测值计算新息;以及,通过状态转移矩阵计算协方差矩阵预测值和观测误差的协方差矩阵,得到新息的协方差矩阵。
具体包括以下三步:
1.通过状态方程(1)和观测方程(2)获取zk={...,pi,...}并将其重新设置为
2.通过状态预测计算新息
其中,是没有噪声影响时的状态预测值,z(k)是实际的观测值,二者的差就为新息,新息为新的有指导意义的信息,详情可参考经典卡尔曼滤波器。
3.实现协方差矩阵的处理
S(k)=Ik+1P(k|k-1)Ik+1+R(k);
其中,S(k)是新息的协方差矩阵;
在公式(2)中,定义了观测噪声v,观测噪声为传感器本身带有一定的误差引入的,这个在任何领域均不可避免。R(k)就是观测噪声的协方差矩阵。
Ik+1P(k|k-1)Ik+1中的P(k|k-1)已在步骤2中计算获得,通过矩阵乘法直接计算即得到新息的协方差矩阵。
(三)通过状态转移矩阵计算当前时刻的协方差矩阵预测值,并计算新息的协方差矩阵的逆矩阵,得到滤波器增益;通过上一时刻的状态向量结合滤波器增益和新息计算出当前时刻的状态状态向量;以及根据上一时刻的协方差矩阵值和增益计算出当前时刻的协方差矩阵值。
具体包括以下三步:
1.计算卡尔曼滤波器增益
K(k)=P(k|k-1)Ik+1S(k)-1;
其中P(k|k-1)为当前时刻的协方差矩阵预测值;
S(k)是新息的协方差矩阵;
首先计算P(k|k-1)Ik+1,等价于P(k|k-1).Ik+1(矩阵乘法)。然后计算S(k)的逆矩阵S(k)-1,最后得到滤波器增益K(k)。
2.实现状态向量的更新
其中x(k|k)为k时刻的状态向量;
为k时刻的状态预测值;
通过矩阵乘法计算滤波器增益K(k)和新息再与做加法计算得到k时刻的状态向量。
3.实现协方差矩阵的更新
P(k|k)=(I-K(k)Ik+1)P(k|k-1);
其中P(k|k)为k时刻的协方差矩阵;
I是与K(k)Ik+1维数相同的单位矩阵;
通过单位矩阵计算K(k)和P(k|k-1)即得到协方差矩阵的更新。
(四)生成新的地图,具体包括以下一步:
在得到k时刻的状态向量x(k|k)和k时刻的协方差矩阵P(k|k)后算法就可以重新迭代了。根据上述步骤更新所得的机器人状态向量,重新记录里程计和激光传感器获取的环境信息,生成新的环境地图,即为校正地图。
机器人再次返回{p0,...,pk}后,在已标定过的点pi,i=1,...,k处,依然按照Gmapping算法记录里程计和激光传感器的环境信息,实现地图的进一步更新,得到更新的校正地图,图5为本发明室内环境地图创建的闭环校正方法更新的校正地图。
机器人再次返回{p0,...,pk}后,分别执行步骤4中基于卡尔曼滤波器的状态估计算法进行闭环校正,得到最终的校正地图。图6为本发明室内环境地图创建的闭环校正方法最终的校正地图。
需要说明的是,机器人首次在环境中行走时,在满足的条件下,会记录相应的里程计和激光传感器的环境信息,这些记录的点记为机器人的实时位姿信息,记为{p0,...,pk}。所以,当机器人再次进入环境中时,一般是在点{p0,...,pk}处或其周围的满足一定误差条件的区域内(由于当时机器人是人为控制的,因此这个条件是能够满足的)进行里程计和激光传感器采集的环境信息的记录。
本发明提供了一种基于低成本、精度相对较低的激光传感器的室内环境地图创建的闭环校正方法。首先,通过对比分析不同精度及成本激光传感器创建地图的精度及闭环效果,给出利用低成本、精度可接受的激光传感器实现地图创建的必要性及可行性;然后提出一种基于卡尔曼滤波器的状态估计算法,对利用低成本、低精度的激光传感器数据创建地图过程中机器人的位姿进行校正,并基于校正后的机器人的位姿重新创建地图,实现了地图的闭环,提高了地图创建的精度。本发明提供了一种基于低成本、低精度激光传感器的地图创建中的闭环校正方法,一方面,提高地图创建的精度;另一方面,推进低成本激光传感器在日常生活及科学研究中的应用。
显然,本领域的技术人员可以对本发明进行各种改动和变形,而不脱离本发明的精神和范围。这样,倘若本发明的这些修改属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变形在内。