1.一种基于RGB‑D图像的SLAM方法,其特征在于,该方法包括以下步骤:步骤一、RGB‑D图像的获取:
采用深度相机按照预设设定的采集时间对待拍摄空间进行实时采集,并将各个采样时刻采集到的RGB‑D图像发送至计算机;其中,第i个采样时刻采集到的RGB‑D图像包括第i帧彩色图像和第i帧彩色图像所对应的深度值,i为正整数,且1≤i≤M,M表示彩色图像的总帧数;
步骤二、RGB‑D图像的特征点提取与匹配:
步骤201、计算机采用ORB算法对第i帧彩色图像进行特征点提取,得到第i帧彩色图像的特征点描述子集;其中,第i帧彩色图像中第a个特征点对应的特征点描述子记作第i帧彩色图像中第a个特征点描述子 a为正整数,且1≤a≤A,A表示特征点的总数;
同时,计算机采用ORB算法对第i+1帧彩色图像进行特征点提取,得到第i+1帧彩色图像的特征点描述子集;其中,第i+1帧彩色图像中第a′个特征点对应的特征点描述子记作第i+
1帧彩色图像中第a′个特征点描述子 a′为正整数,1≤a′≤A;
步骤202、计算机采用K‑means++算法对第i帧彩色图像的特征点描述子和第i+1帧彩色图像中的特征点描述子进行匹配,得到多组匹配点对;
步骤三、计算旋转矩阵和平移矩阵:
步骤301、计算机将每组匹配点对之间的汉明距离按照从小到大的顺序进行排序,并选取前N组匹配点对;
步骤302、计算机采用随机抽样一致RANSAC算法和PnP算法,对N组匹配点对进行姿态估计,得到第i+1帧彩色图像和第i帧彩色图像之间的姿态、特征匹配的内点数Inliersi,i+1;其中,第i+1帧彩色图像和第i帧彩色图像之间的姿态包括第i+1帧彩色图像和第i帧彩色图像之间的旋转矩阵Ri+1,i和平移向量ti+1,i;其中,旋转矩阵Ri+1,i为3×3矩阵,平移向量ti+1,i为3×1向量;
步骤303、计算机对第i+1帧彩色图像和第i帧彩色图像之间的旋转矩阵Ri+1,i和平移向量ti+1,i进行优化,得到第i+1帧彩色图像和第i帧彩色图像之间的优化后的旋转矩阵和优化后的平移向量步骤四、RGB‑D图像中关键帧的获取:
步骤401、选取第1帧彩色图像作为关键帧;
步骤402、选取下一帧彩色图像即第2帧彩色图像作为当前帧彩色图像;
步骤403、按照步骤二和步骤三所述的方法,得到第2帧彩色图像和第1帧彩色图像即当前帧彩色图像和上一个关键帧之间的特征匹配的内点数Inliersc,s,计算机将Inliersc,s和设定的最小内点数Inmin进行判断,如果Inliersc,s>Inmin,执行步骤404和步骤405;否则,舍弃该当前帧彩色图像;
* * *
步骤404、根据公式Dc,s=||tc,s||+min(2π‑||Rc,s ||,||Rc,s||),得到当前帧彩色图像*和上一个关键帧之间的相对运动距离Dc,s;其中,Rc,s表示第2帧彩色图像和第1帧彩色图像*之间即当前帧彩色图像和上一个关键帧之间的优化后的旋转矩阵,tc,s 表示第2帧彩色图像和第1帧彩色图像之间即当前帧彩色图像和上一个关键帧之间的优化后的平移向量,||·||表示向量的模;
步骤405、计算机将Dc,s与运动距离最小阈值Dmin和运动距离最大阈值Dmax进行判断,如果Dmin
步骤406、按照步骤401和步骤405所述的方法,对上一个关键帧和下一帧彩色图像之间进行判断,直至完成M‑2帧彩色图像的判断,得到各个关键帧;
步骤五、关键帧的闭环判断:
步骤501、计算机将步骤406中得到的各个关键帧按照采样时间先后顺序存入数据库图像中;其中,关键帧的总数为B;
步骤502、计算机根据公式Nz=B×A,得到数据库图像中特征点的总数Nz;
步骤503、计算机根据公式 得到第b个关键帧中第t个特征点的词
频‑逆文档频率 其中,Nz,t表示第b个关键帧中第t个特征点在数据库图像中出现的数量,Nb,t表示第b个关键帧中第t个特征点出现的数量,t为正整数,1≤t≤A,b为正整数,且1≤b≤B;
步骤504、计算机将剩余B‑b个关键帧记作待判断关键帧,计算机根据公式得到第b′个待判断关键帧中第t′个特征点的词频‑逆文档频率 其
中,Nz,t′表示第b′个待判断关键帧中第t′个特征点在数据库图像中出现的数量,Nb′,t′表示第b′个待判断关键帧中第t′个特征点出现的数量,b′和t′均为正整数,且b′的取值位于b+1~B,且b+1不大于B,1≤t′≤A;
步骤505、计算机根据 ,
b b′ b
得到第b个关键帧和第b′个待判断关键帧之间的相似度S(q ,d );其中,q表示第b个关b′键帧中各个特征点的词频‑逆文档频率向量,且 d 表示第b′个待判
断关键帧中各个特征点的词频‑逆文档频率向量,且 ||·||表示
向量的模;
步骤506、按照步骤505所述的方法,得到各个关键帧之间的相似度,获取相似度最大值并记作Smax,并设定相似度阈值系数为Sth;
b b′ b b′
步骤507、计算机将S(q ,d )和Sth×Smax进行判断,如果S(q ,d )大于Sth×Smax,则第b个关键帧和第b′个待判断关键帧作为候选闭环帧序列;
步骤508、按照步骤二和步骤三所述的方法,得到第b个关键帧和第b′个待判断关键帧之间优化后的旋转矩阵 和优化后的平移向量 以及第b个关键帧和第b′个待判断关键帧之间的特征匹配的内点数Inliersb,b′(key);
步骤509、计算机将第b个关键帧和第b′个待判断关键帧之间的特征匹配的内点数Inliersb,b′(key)和特征匹配的内点数阈值进行判断,如果Inliersb,b′(key)大于内点数阈值,则第b个关键帧和第b′个待判断关键帧作为一组闭环帧,步骤5010、按照步骤502至步骤509所述的方法,对第b+1个关键帧和待判断关键帧进行判断,直至完成B‑1个关键帧的判断,得到多组闭环帧;
步骤六、RGB‑D图像的全局优化:
计算机对存在多组闭环帧的各个关键帧进行全局优化,得到优化后的位姿图;
步骤七、构建网格地图:
计算机根据优化后的位姿图和关键帧构建三角化网格地图;
步骤303中计算机对旋转矩阵Ri+1,i和平移向量ti+1,i进行优化,得到第i+1帧彩色图像和第i帧彩色图像之间优化后的旋转矩阵 和优化后的平移向量 具体过程如下:步骤3031、计算机将拍摄第i帧彩色图像时相机坐标系记作第i个相机坐标系,将拍摄第i+1帧彩色图像时相机坐标系记作第i+1个相机坐标系;设定第f组匹配点对应第f个空间点在第i个相机坐标系下的三维坐标记作 在第i+1个相机坐标系下的三维坐标记作步骤3032、计算机根据公式 得到第f个空间点在第i+2
1帧彩色图像和第i帧彩色图像之间的姿态误差项 其中,||·||表示向量的模的平方;
R′i+1,i表示第i+1帧彩色图像和第i帧彩色图像之间的设定旋转矩阵,t′i+1,i第i+1帧彩色图像和第i帧彩色图像之间的设定平移向量;
步骤3033、计算机建立姿态误差函数 其中,1≤F≤N;
步骤3034、R′i+1,i的初始值取Ri+1,i,t′i+1,i的初始值取ti+1,i,计算机采用最小二乘法对步骤3033中的姿态误差函数进行求解,得到姿态误差函数最小时的旋转矩阵R′i,i+1和平移向量t′i,i+1,并将姿态误差函数最小时的R′i,i+1作为第i+1帧彩色图像和第i帧彩色图像之间优化后的旋转矩阵 姿态误差函数最小时的t′i+1,i作为第i+1帧彩色图像和第i帧彩色图像之间优化后的平移向量
2.按照权利要求1所述的一种基于RGB‑D图像的SLAM方法,其特征在于:步骤202中采用计算机对第i帧彩色图像和第i+1帧彩色图像中的特征点描述子进行匹配,得到多组匹配点对,具体过程如下:步骤2021、计算机设定聚类种类k为5,设定聚类层数L为10,计算机采用K‑means++算法对第i帧彩色图像的特征点描述子集进行聚类,得到第i帧彩色图像的特征点描述子词汇树,并记作第i个特征点描述子词汇树;
计算机采用K‑means++算法对第i+1帧彩色图像的特征点描述子集进行聚类,得到第i+
1帧彩色图像的特征点描述子词汇树,并记作第i+1个特征点描述子词汇树;
步骤2022、计算机获取第i个特征点描述子词汇树L层中各个叶子节点的聚类中心和第i+1个特征点描述子词汇树L层中各个叶子节点的聚类中心;
步骤2023、计算机将第i个特征点描述子词汇树第10层中各个叶子节点中的特征点描述子分别和第i+1个特征点描述子词汇树从第4层开始进行特征匹配判断的方法均相同,其中,计算机将第i个特征点描述子词汇树第10层中第m10个叶子节点中的特征点描述子分别和第i+1个特征点描述子词汇树第4层进行特征匹配判断,具体过程如下:步骤20231、计算机获取第i个特征点描述子词汇树第10层中第m10个叶子节点中第m′10个特征点描述子和第i+1个特征点描述子词汇树第4层中各个叶子节点的聚类中心之间的汉明距离,获取第i+1个特征点描述子词汇树第4层中与第i个特征点描述子词汇树第10层中第m10个叶子节点中第m′10个特征点描述子汉明距离最小的叶子节点记作 其中,m10和m′10均为正整数;
步骤20232、计算机获取第i个特征点描述子词汇树第10层中第m10个叶子节点中第m′10个特征点描述子和第i+1个特征点描述子词汇树第5层中与 叶子节点相连接的各个叶子节点的聚类中心之间的汉明距离,获取第i+1个特征点描述子词汇树第5层中与第i个特征点描述子词汇树的第10层中第m10个叶子节点中第m′10个特征点描述子汉明距离最小的叶子节点并记作步骤20233、多次重复步骤20231和步骤20232,计算机获取第i个特征点描述子词汇树第10层中第m10个叶子节点中第m′10个特征点描述子和第i+1个特征点描述子词汇树第l′层中与 叶子节点相连接的各个叶子节点的聚类中心之间的汉明距离,并获取第i+1个特征点描述子词汇树第l′层中与第i个特征点描述子词汇树第10层中第m10个叶子节点中第m′10个特征点描述子汉明距离最小的叶子节点并记作 其中,l′为正整数,且4≤l′≤L;其中, 表示第i+1个特征点描述子词汇树第l′‑1层中与第i个特征点描述子词汇树第10层中第m10个叶子节点中第m′10个特征点描述子汉明距离最小的叶子节点;
步骤20234、多次重复步骤20233,直至计算机获取第i个特征点描述子词汇树第10层中第m10个叶子节点中第m′10个特征点描述子和第i+1个特征点描述子词汇树第L层中与叶子节点相连接的各个叶子节点的聚类中心之间的汉明距离,获取第i+1个特征点描述子词汇树第L层中与第i个特征点描述子词汇树第10层中第m10个叶子节点中第m′10个特征点描述子汉明距离最小的叶子节点并记作 其中, 表示第i+1个特征点描述子词汇树第L‑1层中与第i个特征点描述子词汇树第10层中第m10个叶子节点中第m′10个特征点描述子汉明距离最小的叶子节点;
步骤20235、计算机获取第i个特征点描述子词汇树第10层中第m10个叶子节点中第m′10个特征点描述子和第i+1个特征点描述子词汇树第L层中 叶子节点中各个特征点描述子之间的汉明距离,并获取第i+1个特征点描述子词汇树第L层中 叶子节点中与第i个特征点描述子词汇树第10层中第m10个叶子节点中第m′10个特征点描述子汉明距离最小的特征点描述子,并将该特征点描述子记作第i个特征点描述子词汇树第10层中第m10个叶子节点中第m′10个特征点描述子的匹配特征点描述子;
步骤20236、按照步骤20231至步骤20235所述的方法,对第i个特征点描述子词汇树第
10层中各个叶子节点中各个特征点描述子均进行特征匹配判断,得到第i个特征点描述子词汇树第10层中各个叶子节点中各个特征点描述子的匹配特征点描述子;
步骤20237、计算机获取第i个特征点描述子词汇树中各个特征点描述子的匹配特征点描述子,从而得到多组匹配点对;其中,一个特征点描述子和与其对应的匹配特征点描述子记作一组匹配点对。
3.按照权利要求1所述的一种基于RGB‑D图像的SLAM方法,其特征在于:步骤六中计算机对存在多组闭环帧的各个关键帧进行全局优化,得到优化后的位姿图,具体过程如下:步骤601、计算机根据各个关键帧建立位姿图,并设定第b个关键帧拍摄时相机位姿记作第b个相机位姿,设定第b+1个关键帧拍摄时相机位姿记作第b+1个相机位姿;且第b个相机位姿记作Xb,第b+1个相机位姿记作Xb+1;其中,第b个关键帧和第b+1个关键帧不是闭环帧;
步骤602、按照步骤二和步骤三所述的方法,得到第b+1个关键帧和第b个关键帧之间优化后的旋转矩阵 和优化后的平移向量步骤603、计算机将步骤5011中多组关键帧中第r组闭环帧记作第r(1)个关键帧和第r(2)个关键帧,并设定位姿图中第r(1)个关键帧拍摄时相机位姿记作第r(1)个相机位姿Xr(1),第r(2)个关键帧拍摄时相机位姿记作第r(2)个相机位姿Xr(2);其中,r为正整数,且1≤r≤R,R表示闭环帧的总组数;
步骤604、按照步骤二和步骤三所述的方法,得到第r(1)个关键帧和第r(2)个关键帧之间优化后的旋转矩阵 和优化后的平移向量步骤605、计算机根据公式 得到第b+1个相机位姿和第b
个相机位姿之间的位姿差值矩阵eb,b+1,并将第b+1个相机位姿和第b个相机位姿之间的位姿差值矩阵eb,b+1经罗德里格斯公式转换,得到第b+1个相机位姿和第b个相机位姿之间的位姿差值向量e′b,b+1;其中e′b,b+1的大小为6×1;R″b+1,b和t″b+1,b分别表示第b+1个关键帧和第b个关键帧之间的设定的旋转矩阵和设定的平移向量;
步骤606、计算机根据公式 得到第b+1个相机位姿和第b个相机位姿之间的位姿差值Cb,b+1;其中,Ω表示信息矩阵,且 且Ω的大小为6×6;
步骤607、计算机根据公式 得到第r(2)个相机
位姿和第r(1)个相机位姿之间的位姿差值矩阵er(1),r(2);并将第r(2)个相机位姿和第r(1)个相机位姿之间的位姿差值矩阵er(1),r(2)经罗德里格斯公式转换,得到第r(2)个相机位姿和第r(1)个相机位姿之间的位姿差值向量e′r(1),r(2);其中e′r(1),r(2)的大小为6×1;
R″r(1),r(2)和t″r(1),r(2)分别表示第r(1)个关键帧和第r(2)个关键帧之间的设定的旋转矩阵和设定的平移向量;
步骤608、计算机根据公式 得到第r(2)个相机位姿和第r(1)个相机位姿之间的位姿差值Cr(1),r(2);
步骤609、计算机根据公式 得到总误差函数Cz;
步骤6010、按照步骤二和步骤三所述的方法,得到第b+1个关键帧和第b个关键帧之间优化后的旋转矩阵 和优化后的平移向量 以及第r(1)个关键帧和第r(2)个关键帧之间优化后的旋转矩阵 和优化后的平移向量
步骤6011、设定第b个相机位姿Xb的初始值、第b+1个相机位姿Xb+1的的初始值、第r(1)个相机位姿Xr(1)的初始值和第r(2)个相机位姿Xr(2)的初始值均为4×4的单位矩阵;设定R″b+1,b的初始值取 t″b+1,b的初始值取 R″r(1),r(2)的初始值取t″r(1),r(2)的初始值取
步骤6012、计算机利用g2o求解器选择高斯牛顿法对位姿图进行优化,得到总误差函数Cz最小的各个相机位姿、R″b+1,b、t″b+1,b、R″r(1),r(2)和t″r(1),r(2)解,形成优化后的位姿图。
4.按照权利要求1所述的一种基于RGB‑D图像的SLAM方法,其特征在于:步骤七中计算机根据优化后的位姿图和关键帧构建三角化网格地图,具体过程如下:步骤701、计算机将B个关键帧转换分别转换为点云数据,并根据优化后的位姿图,将转换后的点云数据进行拼接,得到拼接后的点云数据;
步骤702、计算机采用三维体素栅格对拼接后的点云数据进行滤波,得到过滤后的点云3
数据;其中,三维体素栅格为立方体,且三维体素栅格的体积不大于27cm;
步骤703、计算机采用移动最小二乘法对过滤后的点云数据进行重采样,得到重采样后的点云数据;
步骤704、计算机调取计算点云法线模块对重采样后的点云数据计算点云法线,构建有向点云;
步骤705、计算机采用贪心投影三角化算法对构建的有向点云进行三角化,构建三角化网格地图。
5.按照权利要求1所述的一种基于RGB‑D图像的SLAM方法,其特征在于:步骤405中运动距离最小阈值Dmin的取值为0.07~0.15,运动距离最大阈值Dmax的取值为0.3~0.5;
步骤5010中特征匹配的内点数阈值的取值范围为40~50;
步骤507中相似度阈值系数Sth的取值为0.7~0.85;
步骤403中设定的最小内点数Inmin取值范围为25~40;步骤301中N的取值为70~100。