CN110706248B - 一种基于slam的视觉感知建图方法及移动机器人 - Google Patents
一种基于slam的视觉感知建图方法及移动机器人 Download PDFInfo
- Publication number
- CN110706248B CN110706248B CN201910768775.6A CN201910768775A CN110706248B CN 110706248 B CN110706248 B CN 110706248B CN 201910768775 A CN201910768775 A CN 201910768775A CN 110706248 B CN110706248 B CN 110706248B
- Authority
- CN
- China
- Prior art keywords
- robot
- pose
- key frame
- image
- encoder
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000013507 mapping Methods 0.000 title claims abstract description 11
- 230000016776 visual perception Effects 0.000 title claims abstract description 10
- 230000003068 static effect Effects 0.000 claims abstract description 15
- 238000012216 screening Methods 0.000 claims abstract description 8
- 239000011159 matrix material Substances 0.000 claims description 47
- 238000012545 processing Methods 0.000 claims description 19
- 230000009466 transformation Effects 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 9
- 238000000605 extraction Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 claims description 7
- 230000004927 fusion Effects 0.000 claims description 6
- 238000009826 distribution Methods 0.000 claims description 5
- 238000012937 correction Methods 0.000 claims description 4
- 238000007781 pre-processing Methods 0.000 claims description 4
- 238000012549 training Methods 0.000 claims description 3
- 238000010276 construction Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 240000007651 Rubus glaucus Species 0.000 description 2
- 235000011034 Rubus glaucus Nutrition 0.000 description 2
- 235000009122 Rubus idaeus Nutrition 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000004438 eyesight Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000007499 fusion processing Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/80—Analysis of captured images to determine intrinsic or extrinsic camera parameters, i.e. camera calibration
Landscapes
- Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
- Manipulator (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种基于SLAM的视觉感知建图算法及移动机器人,所述的算法包括获取待建图区域环境的图像数据和驱动轮的转速数据;对图像数据中的彩色图像进行特征提取;转速数据根据运动学方程计算处理后,利用通过最小化编码器和重投影误差的方法,将转速数据与所述图像数据中的深度图像一起进行融合并优化,得到机器人的当前帧位姿;对机器人在待建图区域行走时获取的当前帧图像数据进行筛选,得到关键帧,利用关键帧的彩色图像对环境中的物体进行识别和分类,将分类出的动态物体从关键帧中进行删除,对静态物体进行稀疏化处理,并做局部回环进行校正;利用关键帧中彩色图像与对应的深度图像的像素点作为地图点,通过八叉树存储地图点并进行建图。
Description
技术领域
本发明涉及视觉感知及移动机器人领域,具体涉及一种基于SLAM的视觉感知建图方法及移动机器人。
背景技术
计算机视觉作为人工智能的重要分支,已经从理论逐步走到了实际生产应用中,广泛应用在人脸识别系统、无人驾驶汽车、无人机等高科技产品中。而SLAM技术极大促进了机器人视觉感知技术的发展,使得机器人能够像人类一样,用眼睛探索周围环境事物并捕捉信息,从而“认识”自己所处的环境。
现有技术中提出一些SLAM的改进算法或定位算法,但功能不够完善,比如,在实际的机器人及空间环境内,其方案不能做出大范围的地图构建,存在较大漂移,对位姿的估计也不够准确,同时,现有方案需要在完全是静态物体的环境中才能完成地图构建。
发明内容
本发明的目的是提供一种基于SLAM的视觉感知建图方法及移动机器人,利用SLAM技术实现机器人在位置环境中构造语义地图并实时定位,同时准确估算自己的位姿。
为了实现上述任务,本发明采用以下技术方案:
一种基于SLAM的视觉感知建图方法,包括:
利用深度相机获取待建图区域环境的图像数据,并通过编码器获取机器人驱动轮的转速数据;对所述图像数据中的彩色图像进行特征提取;
转速数据根据运动学方程计算处理后,利用通过最小化编码器和重投影误差的方法,将转速数据与所述图像数据中的深度图像一起进行融合并优化,得到机器人的当前帧位姿;
对机器人在待建图区域行走时获取的当前帧图像数据进行筛选,得到关键帧,利用关键帧的彩色图像对环境中的物体进行识别和分类,将分类出的动态物体从关键帧中进行删除,对静态物体进行稀疏化处理,并做局部回环进行校正;
利用关键帧中彩色图像与对应的深度图像的像素点作为地图点,通过八叉树存储地图点并进行建图。
进一步地,所述的转速数据根据运动学方程计算处理,具体包括:
根据机器人的中心在相邻时刻的移动距离,以及机器人相邻时刻的变化角度值,表示出任意时刻机器人的位姿;
给定机器人起始位置的初始协方差矩阵的初值,通过t时刻的协方差矩阵,计算出机器人的左、右驱动轮运动后产生的协方差矩阵,并通过传播误差定律,得出t+1时刻的位姿协方差矩阵,由此得到机器人从当前帧到关键帧的位姿变换表示形式。
进一步地,所述的利用通过最小化编码器和重投影误差的方法,将转速数据与所述图像数据中的深度图像一起进行融合并优化,得到机器人的当前帧位姿,包括:
定义不同的坐标系来表示机器人移动位姿变换,包括世界坐标系、机器人坐标系以及相机坐标系,并计算机器人坐标系中的坐标到世界坐标系中坐标的变换矩阵,由此可得到初始化的机器人位姿;
根据相机投影模型,得到投影像素点在图像中的位置表示;根据局部地图点以及其投影服从高斯分布,得到投影像素点的协方差矩阵;通过投影像素点的协方差矩阵可以得到匹配边界值,在边界值的范围内匹配到正确的2D点坐标,再利用当前帧图像数据中的深度图像中获取的深度值,将彩色图像中的2D点转换为3D点,以实现重投影过程;
将当前帧位姿的求解转化为最小化编码器误差和重投影误差,由此得到当帧的位姿。
进一步地,所述的将当前帧位姿的求解转化为最小化编码器误差和重投影误差,表示为:
其中,Eenc表示编码器误差,Ei,proj表示重投影误差,R指实数域,分别由以下公式计算:
其中,ρ(·)为Huber鲁棒性损失函数,F(·)是将矩阵转化向量的算子,是特征协方差矩阵,ee是编码器误差,上标e代表编码器数据,/>是重投影误差,上标v代表图像数据,下标i表示第i个重投影点;/>为编码器观测值的协方差矩阵,/>为编码器观测的机器人位姿,/>为机器人坐标系到世界坐标系的变换矩阵在关键帧下的描述,/>机器人坐标系到世界坐标系的变换矩阵在当前帧下的描述,wpi表示第i个局部地图点,u′i表示在边界值的范围内匹配到正确的2D点坐标。
进一步地,所述的对机器人在待建图区域行走时获取的当前帧图像数据进行筛选,得到关键帧,包括:
条件1:相机获取的当前帧与上一帧关键帧时间间隔有1秒时;
条件2:相机获取的当前帧相对上一帧关键帧移动0.2m或旋转0.5°。
满足上述条件之一的当前帧将作为关键帧保存。
进一步地,所述的利用关键帧的彩色图像对环境中的物体进行识别和分类,包括:
预先利用SegNet网络进行预训练,将训练好的模型导入SLAM系统,利用模型,将环境中的物体进行识别,以区分动态物体和静态物体;
利用二值化对动态物体进行处理,并进行膨胀处理和开、闭运算,以精准提取目标。
进一步地,所述的对静态物体进行稀疏化处理,包括:
记最新的一个关键帧观测方程记为:
z=h(x,y)
其中,h(·)表示观测方程,x表示此时相机的位姿,即相机位姿R,t,转化为对应的李代数为ξ;y表示路标,即三维点p,三维点由彩色图像的特征点加上对应的深度值组组成,观测数据是像素坐标[us,vs]T是观测点投影到平面图上的横纵坐标;由此,得出观测误差e:
e=z-h(ξ,p)
考虑不同时刻的观测量,对误差添加下标,设zij为在位姿ξi处观察路标pj产生的数据,eij为对应观测的误差,若步骤7处理后产生的所有关键帧记录有m个位姿,n个路标,则整体的代价函数为:
将上式记为Eij,稀疏化问题转化为利用最小二乘法求解Eij。
进一步地,对所述图像数据中的彩色图像进行特征提取,包括:
利用FAST角点提取算法找到彩色图像中的角点作为特征点,利用灰度质心法为特征点加上方向,使特征点具有旋转不变性形;再通过高斯金字塔算法,对彩色图像做不同尺度的高斯模糊并对彩色图像进行降采样处理,使特征点具有尺度不变性,再以每一个特征点为中心,15个像素为半径的圆内选取256个像素点对建立描述子,比较每组点对A和B的灰度值,A大于B则为1,A小于B则为0,256个点对构成二进制编码作为描述子,从而完成图像特征提取。
一种基于SLAM的视觉感知移动机器人,包括机器人本体,以及:
数据采集及预处理模块,用于利用深度相机获取待建图区域环境的图像数据,并通过编码器获取机器人驱动轮的转速数据;对所述图像数据中的彩色图像进行特征提取;
数据融合模块,用于将转速数据根据运动学方程计算处理后,利用通过最小化编码器和重投影误差的方法,将转速数据与所述图像数据中的深度图像一起进行融合并优化,得到机器人的当前帧位姿;
语义模块,用于对机器人在待建图区域行走时获取的当前帧图像数据进行筛选,得到关键帧,利用关键帧的彩色图像对环境中的物体进行识别和分类,将分类出的动态物体从关键帧中进行删除,对静态物体进行稀疏化处理,并做局部回环进行校正;
建图模块,用于利用关键帧中彩色图像与对应的深度图像的像素点作为地图点,通过八叉树存储地图点并进行建图。
进一步地,所述的机器人本体,包括:
机器人骨架,机器人骨架包括在竖直方向上依次设置的三块支撑板,相邻的支撑板之间通过螺杆连接;在骨架底部前端设置两个能灵活转动的驱动轮,驱动轮通过驱动单元驱动;骨架底部后端设置两个从动轮。
本发明具有以下技术特点:
1.本发明在搭建了自己的机器人装置基础上,对算法进行了优化,所搭建的机器人具有比其他已有机器人更为出色的运算能力,能够运行、调试并修改算法。
2.本发明构建了语义SLAM算法及系统,结合语义信息,实现了语义SLAM,能够实现在有动态物体的环境中,剔除动态物体,建立三维地图,在准确构建地图的基础上,对地图中不同物体进行识别标记。
附图说明
图1为机器人结构侧视示意图;
图2为机器人模块连接图;
图3为机器人实物图;
图4为算法流程示意图;
图5为目标识别过程;
图6为语义空间地图。
具体实施方式
第一部分,算法
本发明公开了一种基于SLAM的视觉感知建图方法,首先将机器人上搭载的深度相机采集的图像数据与机器人驱动轮处安装的编码器采集的转速数据进行数据融合;其中,所采用的Kinect2.0相机为深度相机,采集到的图像数据分为彩色图像与深度图像两部分,二者通过统一的时间戳建立对应关系,将彩色图像进行图像特征提取;转速数据根据运动学方程计算处理后,同深度图像一起进行融合并优化,通过最小化编码器和重投影误差,可以得到机器人在某一时刻的位姿,将位姿信息输出;对机器人在待建图区域行走时获取的当前帧图像数据进行筛选,得到关键帧,进行语义建图:首先对彩色图像进行识别,之后对图像整体分割,再对目标处理,即将不同的物体打上不同的标签,之后判断是否为动态物体,是动态物体则剔除,是静态物体则对静态物体稀疏化处理,并做局部回环进行校正,利用关键帧中彩色图像与对应的深度图像的像素点作为地图点,通过八叉树存储地图点并进行建图。具体步骤如下:
步骤1,数据采集
机器人位于待建图区域行走时,利用深度相机采集周围环境的图像数据,并利用编码器获取机器人驱动轮的转速数据。
本方案中采用的深度相机为Kinect2.0相机,深度相机和编码器采集的数据会以ROS话题的形式发布,则只需要通过监听编码器和深度相机的话题,即可得到图像数据和转速数据。通过ROS通讯机制,可以获取图像数据与转速数据进行下一步计算。
步骤2,图像特征提取
对深度相机采集的图像数据(包括深度图像和彩色图像)中每一张彩色图像按照时间顺序依次保存,对每张彩色图像进行特征提取,步骤包括:
利用FAST角点提取算法找到彩色图像中的角点作为特征点,利用灰度质心法为特征点加上方向,使特征点具有旋转不变性形;再通过高斯金字塔算法,对彩色图像做不同尺度的高斯模糊并对彩色图像进行降采样处理,使特征点具有尺度不变性,再以每一个特征点为中心,15个像素为半径的圆内选取256个像素点对建立描述子,比较每组点对A和B的灰度值,A大于B则为1,A小于B则为0,256个点对构成二进制编码作为描述子,从而完成图像特征提取。并将图像数据的第一帧初始化为关键帧。
步骤3,转速数据处理
对通过编码器从机器人两个驱动轮上提取的转速数据进行分析,包括:
记机器人左驱动轮处的编码器为l,右轮处编码器记为r,两驱动轮轴距记为b,以两驱动轮中点为原点,建立世界坐标系,其中机器人的正前方为x轴,水平面中垂直x轴的方向为y轴,z轴垂直于x、y轴,机器人移动时,z轴值为常量;记Δs表示机器人的中心在相邻时刻的移动距离,Δθ表示机器人相邻时刻变化的角度值,Δsl、Δsr表示机器人左驱动轮、右驱动轮的位移增量,在k时刻,机器人的位姿为ζk=[xk,yk,θk]T,xk,yk指第k时刻机器人移动到的位置在世界坐标系中的坐标,θk为不同时刻Δθ的累加,表示第k时刻机器人相对初始位姿旋转了多少角度,则k+1时刻机器人的位姿表示为:
其中:
记机器人起始位置的初始协方差矩阵给定初值为∑0,假设t时刻的协方差矩阵为∑t,kl和kr分别为左轮和右轮的误差常数,对左、右驱动轮运动(Δsl,Δsr)后产生的协方差矩阵∑Δ为:
由传播误差定律得出t+1时刻的位姿协方差矩阵∑t+1为:
Σt+1=GtΣt(Gt)T+GΔΣΔ(GΔ)T 式3
其中,Gt为式1服从机器人位姿变换的雅克比矩阵,GΔ为式1服从(Δsl,Δsr)T变换的雅克比矩阵。
假设机器人当前帧坐标为{rc},关键帧坐标为{rk},则机器人从当前帧到关键帧的位姿变换可由编码器观测得到且服从高斯分布:
其中,为由编码器观测的位姿变化的期望,/>为编码器观测的位姿变化协方差矩阵,由式3得出。
步骤4,数据融合与优化
本步骤通过最小化编码器和重投影误差来估计机器人当前位姿。
首先需要定义不同的坐标系来表述机器人移动位姿变换,其中,{w}为步骤3建立的世界坐标系,{r}为机器人坐标系,是以机器人自身中心为原点,机器人前进方向为x轴,垂直x轴为y轴建立的坐标系,z轴值为常量;{c}为相机坐标系,是以相机光心为原点,垂直相机平面为z轴,水平方向为x轴,竖直方向为y轴。则机器人在世界坐标系下的位姿可表示为其中[x,y]T为机器人在世界坐标系中的坐标,θ为机器人的偏航角,基于此机器人位姿表示方法,机器人坐标系中的坐标到世界坐标系中的坐标的变换矩阵/>可表示为:
初始化的机器人位姿为:
其中,初始化时将图像数据的第一帧设为关键帧,即有rk=rc=r,r表示机器人坐标系下的坐标,rk和rc分别表示此坐标系下的关键帧坐标和当前帧坐标,此时编码器开始记录数据,之后的关键帧根据机器人每前行0.2m或旋转超过0.5°不断保存,记录关键帧的时间戳对应图像数据与转速数据,则有即式5中的变换矩阵,rk即在机器人坐标系下对关键帧的表示,即式5中的r,下标k代表关键帧,/>为式4中得到。
根据相机投影模型,一个局部地图点wp投影到当前帧,是将一个3D点投影到2D平面点的过程,则投影像素点u在图像中的位置表示为:
其中,π(·)为相机针孔模型,为相机坐标到机器人坐标的转换矩阵,由标定可以得出;则局部地图点服从高斯分布,即:
其中,为局部地图点wp的期望,Σp为局部地图点的协方差矩阵,同理,其投影也服从高斯分布,即:
为投影像素点u的期望,Σu为投影像素点的协方差矩阵,表示为:
其中,Ge为式7服从编码器观测变化的雅克比矩阵,为式4中的位姿变化协方差矩阵,Gp为式7服从局部地图点wp位置变化的雅克比矩阵,Σp为局部地图点的协方差矩阵。
有了上述投影模型的计算,能够保证局部地图点在当前帧中正确、快速的匹配,式10中的Σu可以得到一个匹配边界值,在边界值的范围内匹配到正确的2D点坐标u′,再利用当前帧图像数据中深度图像中获取的深度值,将彩色图像中的2D像素点转换为3D点,从而实现重投影过程,u′深度值为z′,则有:
上述重投影过程中,理论上正确匹配的局部地图点wp和重投影后的局部地图点wp′不会有太大偏差;而对于差距较大的点,认为其是误匹配,须将其剔除。由于局部地图点距离相机的远近不一,即在相机坐标系下的z′值不同,则判别也不同。设wp和wp′之间的距离阈值为dth,若dth<0.2+0.025*z′,则认为合理,否则视为差距较大的点并删除。
通过上述步骤的计算,当前帧位姿的求解转化为最小化编码器误差和重投影误差:
其中,Eenc表示编码器误差,Ei,proj表示重投影误差,R指实数域,分别由以下公式计算:
其中,ρ(·)为Huber鲁棒性损失函数,F(·)是将4x4的矩阵转化为3x1向量的算子,是特征协方差矩阵,步骤2建立特征点后产生此矩阵。ee是编码器误差,上标e代表编码器数据,/>是重投影误差,上标v代表图像数据,下标i表示第i个重投影点。/>即式4中编码器观测值的协方差矩阵。/>为编码器观测的机器人位姿,/>即公式(5)中的变换矩阵在关键帧下的描述,/>即式5中的变换矩阵在当前帧下的描述,wpi表示第i个局部地图点,u′i表示在边界值的范围内匹配到正确的2D点坐标,边界值根据式10得出。
以上数据融合的过程是将编码器采集到的关于机器人坐标系下坐标变换到世界坐标系下的坐标,与相机采集到的相机坐标系下的坐标到世界坐标系下的坐标变换融合在一起,优化(式12)是对位姿的迭代调整。最终得出机器人在世界坐标系下某时刻的位姿和可以整合出关键帧的数据,即到上一帧关键帧的距离和角度值,并将位姿在地图中标示。
步骤5,关键帧选取
除去步骤2中提到的对关键帧初始化,其余关键帧的选取需要使两帧关键帧之间需要保留足够的时间进行下一步计算,但不能间隔太大,否则导致两帧关键帧之间无法匹配。若:
条件1:相机获取的当前帧与上一帧关键帧时间间隔有1秒时;
条件2:相机获取的当前帧相对上一帧关键帧移动0.2m或旋转0.5°。
满足上述条件之一的当前帧将作为关键帧保存;第一帧关键帧初始化后,步骤3、步骤4、步骤5循环执行。关键帧保存有该帧图像数据的彩色图像、深度图像、计算得出的位姿信息等数据。
步骤6,语义识别、图像处理及目标分割
对上述步骤5得到的关键帧中的彩色图像进行进一步处理,对彩色图像所拍摄的环境中的物体进行识别并分类,主要有语义识别、图像处理、目标分割三部分。需要预先利用SegNet网络,对VOC2012数据集进行训练,得到收敛的训练模型。本方案中,将SegNet训练好的模型导入SLAM系统,利用模型,将环境中的物体进行识别,可以对人、桌子、椅子等目标做到基本准确的识别。图像处理部分,利用二值化对动态物体,例如:人,进行提取,进行膨胀处理,对识别出的动态目标进行开、闭运算,进一步精准提取目标。
步骤7,动态物体的剔除
对步骤6处理过的关键帧,将已分类好的动态物体,如人等从关键帧中删除,将其他静态物体,例如椅子、桌子、背景等静态物体保留在关键帧中。
步骤8,静态物体稀疏化处理
对于步骤7处理后产生的所有关键帧,记最新的一个关键帧观测方程记为:
z=h(x,y) 式15
其中,h(·)表示观测方程,x表示此时相机的位姿,即相机位姿R,t,转化为对应的李代数为ξ;y表示路标,即三维点p,此点由步骤2提取的特征点加上对应的深度值组成,观测数据是像素坐标[us,vs]T是观测点投影到平面图上的横纵坐标。由此,我们得出观测误差e:
e=z-h(ξ,p) 式16
考虑不同时刻的观测量,对误差添加下标,设zij为在位姿ξi处观察路标pj产生的数据,eij为对应观测的误差,若步骤7处理后产生的所有关键帧记录有m个位姿,n个路标,则整体的代价函数为:
将上式记为Eij,稀疏化问题转化为利用最小二乘法求解Eij。最小化Eij的过程将不断迭代新插入关键帧的位姿ξ,将此数据优化后,所有存储的关键帧信息传入下一步骤。
步骤9,回环检测
虽然上述步骤已对机器人的位姿进行了修正,但在产生大量关键帧后,还是有可能出现位姿的累积误差,而机器人在室内不断移动,会走到之前的位姿附近,若得到的关键帧与上述模块传入的关键帧有相似的部分,此时触发回环检测,利用DBow2的词袋模型进行新插入关键帧与相似关键帧的匹配,并确定总体的位姿是否有偏移,若有,则修正。修正后的位姿等数据仍保存在关键帧中,进行下一步处理。
步骤10,语义地图构建
经过上述过程修正的关键帧数据已经满足建图要求,此时每一帧关键帧中存储的彩色图像与对应的深度图像的像素点构成世界坐标系下的地图点,即3D点。本算法采用八叉树存储3D点,将每个3D点用一个概率值来表示该像素是否被占据,同时每个3D点经过之前SegNet分割后具有颜色信息,不同的颜色表示不同的物体。假设有T=1,2,…,t个时刻,观测的数据为z1,z2,…,zt,那么第n个叶子节点记录的信息的概率为:
其中,P(n)是先验概率,为一个经验值常量,设为0.5,P(n|z1:t-1)是1:t-1时刻所有关键帧对第n个叶子节点的概率累积值,P(n|zt)是t时刻新插入关键帧的第n个叶子节点的概率值,若此节点被占据则为0.61,非占据则为0.45,P(n|z1:t)是1:t时刻所有关键帧对第n个叶子节点的概率累积值,此概率大于0.5则判定此时子节点为占据,并在三维空间中标记颜色,若小于0.5则标记透明,为简化计算,对上式两边取对数可得:
L(n|z1:t)=L(n|z1:t-1)+L(n|zt) 式19
经过如上计算后,所有3D点被分为被占据与非占据的状态,所有标示为被占据的3D点组成了空间地图。至此,建图完成。
本发明算法结合SegNet语义网络与编码器数据,并做一系列转换,对环境中的物体实现了较好的识别,从而为地图构建提供了准确的静态数据,以对人的识别为例,如图6所示;剔除人并建立语义地图后的空间地图如图6所示;图中所示为实时构建的空间八叉树语义地图,其中,红色部分为对椅子的识别并显示在场景中,此动态场景中的人作为动态物体已被识别剔除,受传感器影响,地图不完全稠密,具有一定稀疏性。地图中处于地板位置的彩色物体为机器人的轨迹及位姿。
第二部分,移动机器人
本发明进一步提出了一种对应于上述算法的移动机器人,如图1所示,包括:
在竖直方向上由三块支撑板平行设置构成的机器人骨架,相邻的支撑板之间通过螺杆连接;在骨架底部前端两侧设置两个驱动轮,驱动轮通过驱动单元驱动,并可以灵活转动,利用两个驱动轮差速转向。骨架底部后端设置两个从动轮,从动轮仅作为支撑用。
最底部的支撑板与中间支撑板之间设置有驱动单元、openCR板、充电电池;
中间支撑板和上部支撑板之间设置微型工作站和电源;
上部支撑板上方安装深度相机及电源线。
在两个驱动轮上各设置一个编码器。
机器人装置搭载ubuntu16.04+kinetic系统,工作站搭载有无线模块,可以在配置后通过网络对机器人进行远程控制,而且可以很方便的远程修改机器人算法。
其中,驱动单元通过杜邦线连接到openCR板引脚,openCR通过可充电电池供电,同时能够使驱动单元工作。openCR板与微型工作站通过USB连接,可以实现数据传递。最顶层的深度相机需利用带有USB3.0及以上接口的数据线连接到工作站。
本实施中,所述的驱动单元采用XM430-W210-T驱动单元,微型工作站采用HPZ2mini工作站,深度相机采用kinect2.0深度相机。底部支撑板与中间支撑板之间高度为35mm,中间支撑板和上部支撑板之间高度为105mm。
本装置的优势在于:目前普通的移动机器人大部分都是由树莓派等开发板作为运算主模块,但树莓派运算能力有限,在处理图像运算时,速度很慢,不能够很好的胜任视觉SLAM的相应运算,在进行了试验之后,发现运算模块可以用工作站来构建,这将极大提高运算能力,在进行了机器人总体架构设计、考虑机器人总体承重后设计了本发明所用的机器人装置。
本发明需要在linux的发行版:ubuntu16.04上运行,在此系统上安装ROS机器人操作系统,版本为kinetic利用其通讯架构实现机器人多传感器实时协同工作,同时,本发明算法需要利用GPU加速,本发明的机器人装置中安装有NVIDIA P1000显卡,安装CUDA10.0、cudnn7.6,利用ROS通信节点,使算法程序可以利用GPU加速,提升运算速率。
上述机器人结构,在实现本发明算法时,可划分为四大模块:
数据采集及预处理模块、数据融合模块、语义模块以及建图模块,其中数据采集及预处理模块用于实现上述的步骤1至3,数据融合模块用于实现上述的步骤4和5,语义模块用于实现上述的步骤6至9,建图模块对应于上述的步骤10。
Claims (3)
1.一种基于SLAM的视觉感知建图方法,其特征在于,包括:
利用深度相机获取待建图区域环境的图像数据,并通过编码器获取机器人驱动轮的转速数据;对所述图像数据中的彩色图像进行特征提取;
转速数据根据运动学方程计算处理后,利用通过最小化编码器和重投影误差的方法,将转速数据与所述图像数据中的深度图像一起进行融合并优化,得到机器人的当前帧位姿;
对机器人在待建图区域行走时获取的当前帧图像数据进行筛选,得到关键帧,利用关键帧的彩色图像对环境中的物体进行识别和分类,将分类出的动态物体从关键帧中进行删除,对静态物体进行稀疏化处理,并做局部回环进行校正;
利用关键帧中彩色图像与对应的深度图像的像素点作为地图点,通过八叉树存储地图点并进行建图;
所述的转速数据根据运动学方程计算处理,具体包括:
根据机器人的中心在相邻时刻的移动距离,以及机器人相邻时刻的变化角度值,表示出任意时刻机器人的位姿;
给定机器人起始位置的初始协方差矩阵的初值,通过t时刻的协方差矩阵,计算出机器人的左、右驱动轮运动后产生的协方差矩阵,并通过传播误差定律,得出t+1时刻的位姿协方差矩阵,由此得到机器人从当前帧到关键帧的位姿变换表示形式;
所述的利用通过最小化编码器和重投影误差的方法,将转速数据与所述图像数据中的深度图像一起进行融合并优化,得到机器人的当前帧位姿,包括:
定义不同的坐标系来表示机器人移动位姿变换,包括世界坐标系、机器人坐标系以及相机坐标系,并计算机器人坐标系中的坐标到世界坐标系中坐标的变换矩阵,由此可得到初始化的机器人位姿;
根据相机投影模型,得到投影像素点在图像中的位置表示;根据局部地图点以及其投影服从高斯分布,得到投影像素点的协方差矩阵;通过投影像素点的协方差矩阵可以得到匹配边界值,在边界值的范围内匹配到正确的2D点坐标,再利用当前帧图像数据中的深度图像中获取的深度值,将彩色图像中的2D点转换为3D点,以实现重投影过程;
将当前帧位姿的求解转化为最小化编码器误差和重投影误差,由此得到当帧的位姿;
所述的将当前帧位姿的求解转化为最小化编码器误差和重投影误差,表示为:
其中,Eenc表示编码器误差,Ei,proj表示重投影误差,R指实数域,分别由以下公式计算:
其中,ρ(·)为Huber鲁棒性损失函数,F(·)是将矩阵转化向量的算子,π(·)为相机针孔模型,是特征协方差矩阵,ee是编码器误差,上标e代表编码器数据,/>是重投影误差,上标v代表图像数据,下标i表示第i个重投影点;/>为编码器观测值的协方差矩阵,/>为编码器观测的机器人位姿,/>为机器人坐标系到世界坐标系的变换矩阵在关键帧下的描述,/>为相机坐标到机器人坐标的转换矩阵,/>为机器人坐标系到世界坐标系的变换矩阵在当前帧下的描述,wpi表示第i个局部地图点,u′i表示在边界值的范围内匹配到正确的2D点坐标;
所述的对机器人在待建图区域行走时获取的当前帧图像数据进行筛选,得到关键帧,包括:
条件1:相机获取的当前帧与上一帧关键帧时间间隔有1秒时;
条件2:相机获取的当前帧相对上一帧关键帧移动0.2m或旋转0.5°;
满足上述条件之一的当前帧将作为关键帧保存;
所述的利用关键帧的彩色图像对环境中的物体进行识别和分类,包括:
预先利用SegNet网络进行预训练,将训练好的模型导入SLAM系统,利用模型,将环境中的物体进行识别,以区分动态物体和静态物体;
利用二值化对动态物体进行处理,并进行膨胀处理和开、闭运算,以精准提取目标;
所述的对静态物体进行稀疏化处理,包括:
记最新的一个关键帧观测方程记为:
z=h(x,y)
其中,h(·)表示观测方程,x表示此时相机的位姿,即相机位姿R,t,转化为对应的李代数为ξ;y表示路标,即三维点p,三维点由彩色图像的特征点加上对应的深度值组成,观测数据是像素坐标[us,vs]T是观测点投影到平面图上的横纵坐标;由此,得出观测误差Δ0:
Δ0=z-h(ξ,p)
考虑不同时刻的观测量,对误差添加下标,设zkj为在位姿ξk处观察路标pj产生的数据,ekj为对应观测的误差,若所有动态物体剔除处理后的关键帧记录有m个位姿,n个路标,则整体的代价函数为:
将上式记为Ekj,稀疏化问题转化为利用最小二乘法求解Ekj;
对所述图像数据中的彩色图像进行特征提取,包括:
利用FAST角点提取算法找到彩色图像中的角点作为特征点,利用灰度质心法为特征点加上方向,使特征点具有旋转不变性形;再通过高斯金字塔算法,对彩色图像做不同尺度的高斯模糊并对彩色图像进行降采样处理,使特征点具有尺度不变性,再以每一个特征点为中心,15个像素为半径的圆内选取256个像素点对建立描述子,比较每组点对A和B的灰度值,A大于B则为1,A小于B则为0,256个点对构成二进制编码作为描述子,从而完成图像特征提取。
2.一种利用根据权利要求1所述方法的基于SLAM的视觉感知移动机器人,其特征在于,包括机器人本体,以及:
数据采集及预处理模块,用于利用深度相机获取待建图区域环境的图像数据,并通过编码器获取机器人驱动轮的转速数据;对所述图像数据中的彩色图像进行特征提取;
数据融合模块,用于将转速数据根据运动学方程计算处理后,利用通过最小化编码器和重投影误差的方法,将转速数据与所述图像数据中的深度图像一起进行融合并优化,得到机器人的当前帧位姿;
语义模块,用于对机器人在待建图区域行走时获取的当前帧图像数据进行筛选,得到关键帧,利用关键帧的彩色图像对环境中的物体进行识别和分类,将分类出的动态物体从关键帧中进行删除,对静态物体进行稀疏化处理,并做局部回环进行校正;
建图模块,用于利用关键帧中彩色图像与对应的深度图像的像素点作为地图点,通过八叉树存储地图点并进行建图。
3.如权利要求2所述的基于SLAM的视觉感知移动机器人,其特征在于,所述的机器人本体,包括:
机器人骨架,机器人骨架包括在竖直方向上依次设置的三块支撑板,相邻的支撑板之间通过螺杆连接;在骨架底部前端设置两个能灵活转动的驱动轮,驱动轮通过驱动单元驱动;骨架底部后端设置两个从动轮。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910768775.6A CN110706248B (zh) | 2019-08-20 | 2019-08-20 | 一种基于slam的视觉感知建图方法及移动机器人 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910768775.6A CN110706248B (zh) | 2019-08-20 | 2019-08-20 | 一种基于slam的视觉感知建图方法及移动机器人 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110706248A CN110706248A (zh) | 2020-01-17 |
CN110706248B true CN110706248B (zh) | 2024-03-12 |
Family
ID=69193410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910768775.6A Active CN110706248B (zh) | 2019-08-20 | 2019-08-20 | 一种基于slam的视觉感知建图方法及移动机器人 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110706248B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021035669A1 (zh) * | 2019-08-30 | 2021-03-04 | 深圳市大疆创新科技有限公司 | 位姿预测方法、地图构建方法、可移动平台及存储介质 |
CN113409368B (zh) * | 2020-03-16 | 2023-11-03 | 北京京东乾石科技有限公司 | 建图方法及装置、计算机可读存储介质、电子设备 |
CN113534786A (zh) * | 2020-04-20 | 2021-10-22 | 深圳市奇虎智能科技有限公司 | 基于slam方法的环境重建方法、系统与移动机器人 |
CN113835422B (zh) * | 2020-06-08 | 2023-09-29 | 杭州海康机器人股份有限公司 | 一种视觉地图构建方法和移动机器人 |
CN111679688A (zh) * | 2020-06-18 | 2020-09-18 | 小狗电器互联网科技(北京)股份有限公司 | 一种自走机器人的充电方法、装置、可读介质及电子设备 |
CN111832760B (zh) * | 2020-07-14 | 2023-09-29 | 深圳市法本信息技术股份有限公司 | 一种基于视觉算法的井盖自动巡检方法 |
CN111968176A (zh) * | 2020-07-17 | 2020-11-20 | 歌尔科技有限公司 | 头戴设备的位姿确定方法、装置、设备及存储介质 |
CN112041634A (zh) * | 2020-08-07 | 2020-12-04 | 苏州珊口智能科技有限公司 | 移动机器人的定位方法、构建地图的方法及移动机器人 |
CN112017259B (zh) * | 2020-08-27 | 2023-08-01 | 河北工业大学 | 一种基于深度相机与热像仪的室内定位与建图方法 |
CN112101145B (zh) * | 2020-08-28 | 2022-05-17 | 西北工业大学 | 基于svm分类器的移动机器人位姿估计方法 |
CN112132893B (zh) * | 2020-08-31 | 2024-01-09 | 同济人工智能研究院(苏州)有限公司 | 一种适用于室内动态环境的视觉slam方法 |
CN112416000B (zh) * | 2020-11-02 | 2023-09-15 | 北京信息科技大学 | 无人驾驶方程式赛车环境感知和导航方法及转向控制方法 |
CN112233221B (zh) * | 2020-11-10 | 2023-04-21 | 北京邮电大学 | 基于即时定位与地图构建的三维地图重建系统及方法 |
CN112558602B (zh) * | 2020-11-19 | 2024-06-14 | 许昌许继软件技术有限公司 | 基于影像特征的机器人定位的方法 |
CN112476433B (zh) * | 2020-11-23 | 2023-08-04 | 深圳怪虫机器人有限公司 | 一种基于识别阵列边界的移动机器人定位方法 |
CN112767482B (zh) * | 2021-01-21 | 2022-09-02 | 山东大学 | 一种多传感器融合的室内外定位方法及系统 |
CN113050665B (zh) * | 2021-03-24 | 2022-04-19 | 河海大学 | 一种基于slam架构的节能型水下机器人探测方法及系统 |
CN113155140B (zh) * | 2021-03-31 | 2022-08-02 | 上海交通大学 | 用于室外特征稀疏环境下的机器人slam方法及系统 |
WO2022252337A1 (zh) * | 2021-06-04 | 2022-12-08 | 华为技术有限公司 | 3d地图的编解码方法及装置 |
CN113298097B (zh) * | 2021-07-27 | 2021-10-26 | 电子科技大学 | 基于卷积神经网络的特征点提取方法、设备及存储介质 |
CN113447014A (zh) * | 2021-08-30 | 2021-09-28 | 深圳市大道智创科技有限公司 | 室内移动机器人、建图方法、定位方法以及建图定位装置 |
CN114613002B (zh) * | 2022-02-22 | 2023-06-27 | 北京理工大学 | 基于光线投影原理的运动视角下动态物体检测方法及系统 |
CN117612070B (zh) * | 2024-01-19 | 2024-05-03 | 福思(杭州)智能科技有限公司 | 静态真值数据的校正方法和装置、存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107833236A (zh) * | 2017-10-31 | 2018-03-23 | 中国科学院电子学研究所 | 一种动态环境下结合语义的视觉定位系统和方法 |
CN108733039A (zh) * | 2017-04-18 | 2018-11-02 | 广东工业大学 | 一种机器人室内导航定位的方法与装置 |
CN109648558A (zh) * | 2018-12-26 | 2019-04-19 | 清华大学 | 机器人曲面运动定位方法及其运动定位系统 |
CN109671120A (zh) * | 2018-11-08 | 2019-04-23 | 南京华捷艾米软件科技有限公司 | 一种基于轮式编码器的单目slam初始化方法及系统 |
-
2019
- 2019-08-20 CN CN201910768775.6A patent/CN110706248B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733039A (zh) * | 2017-04-18 | 2018-11-02 | 广东工业大学 | 一种机器人室内导航定位的方法与装置 |
CN107833236A (zh) * | 2017-10-31 | 2018-03-23 | 中国科学院电子学研究所 | 一种动态环境下结合语义的视觉定位系统和方法 |
CN109671120A (zh) * | 2018-11-08 | 2019-04-23 | 南京华捷艾米软件科技有限公司 | 一种基于轮式编码器的单目slam初始化方法及系统 |
CN109648558A (zh) * | 2018-12-26 | 2019-04-19 | 清华大学 | 机器人曲面运动定位方法及其运动定位系统 |
Non-Patent Citations (2)
Title |
---|
"DRE-SLAM:Dynamic RGB-D Encoder SLAM for a Differential-Drive Robot";Dongsheng Yang et al;《remote sensing》;20190213;第11卷(第4期);第1-29页 * |
"基于特征点法和直接法 VSLAM 的研究现状";邹雄等;《计算机应用研究》;20190312;第1-14页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110706248A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110706248B (zh) | 一种基于slam的视觉感知建图方法及移动机器人 | |
CN111258313B (zh) | 多传感器融合slam系统及机器人 | |
CN110097553B (zh) | 基于即时定位建图与三维语义分割的语义建图系统 | |
CN109307508B (zh) | 一种基于多关键帧的全景惯导slam方法 | |
CN112258618B (zh) | 基于先验激光点云与深度图融合的语义建图与定位方法 | |
CN111798475B (zh) | 一种基于点云深度学习的室内环境3d语义地图构建方法 | |
CN112634451B (zh) | 一种融合多传感器的室外大场景三维建图方法 | |
CN110349250B (zh) | 一种基于rgbd相机的室内动态场景的三维重建方法 | |
CN110852182B (zh) | 一种基于三维空间时序建模的深度视频人体行为识别方法 | |
CN105843223B (zh) | 一种基于空间词袋模型的移动机器人三维建图与避障方法 | |
Bazin et al. | 3-line RANSAC for orthogonal vanishing point detection | |
Yu et al. | Semantic alignment of LiDAR data at city scale | |
CN111275763A (zh) | 闭环检测系统、多传感器融合slam系统及机器人 | |
CN110176032B (zh) | 一种三维重建方法及装置 | |
CN107741234A (zh) | 一种基于视觉的离线地图构建及定位方法 | |
CN109270534A (zh) | 一种智能车激光传感器与相机在线标定方法 | |
CN105719352B (zh) | 人脸三维点云超分辨率融合方法及应用其的数据处理装置 | |
CN105045263A (zh) | 一种基于Kinect的机器人自定位方法 | |
CN112734765A (zh) | 基于实例分割与多传感器融合的移动机器人定位方法、系统及介质 | |
CN111998862B (zh) | 一种基于bnn的稠密双目slam方法 | |
CN112833892B (zh) | 一种基于轨迹对齐的语义建图方法 | |
CN114325634A (zh) | 一种基于激光雷达的高鲁棒性野外环境下可通行区域提取方法 | |
CN114677435A (zh) | 一种点云全景融合要素提取方法和系统 | |
CN113066129A (zh) | 基于动态环境下的目标检测的视觉定位与建图系统 | |
CN112101160A (zh) | 一种面向自动驾驶场景的双目语义slam方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |