发布信息

一种基于即时外观建图算法的三维栅格地图构建方法

作者:admin      2022-10-01 06:07:05     943



测量装置的制造及其应用技术1.本发明属于视觉slam领域,具体为一种基于即时外观建图算法的三维栅格地图构建方法。背景技术:2.当前主流的vslam框架主要由以下几个模块组成:传感器数据采集、视觉里程计(visual odometry,vo)、后端优化(optimization)、回环检测(loop closing)与建图(mapping)。3.早在上个世纪slam技术发展过程中,人们就考虑到了使用摄像头作为传感器,基于视觉实现同步定位与建图。但是当时的计算机性能过于羸弱,图像存储的信息量过大,需要处理的信息量也过大,所以一直鲜有研究者们关注。直到2007年,伦敦帝国理工大学的davison教授提出首个实时单目视觉slam系统mono-slam,davison教授是视觉slam研究领域的先驱,他的许多奠基性的研究为后期的视觉slam产生了诸多影响。mono-slam为了适配当时计算机的性能,通过追踪前端非常稀少的特征点作为状态量,采用ekf为后端,实现了同步定位与导航,首次实现了移动机器人基于视觉slam技术在小场景下的实时平稳运行。2007年,牛津大学的klein与murray提出了基于跟踪与建图并行的视觉slam系统ptam(parallel tracking and mapping),这一算法有许多首创的概念与算法框架,并被沿用至今。比如它首次提出了跟踪与建图过程并行化,即图像跟踪与后端优化并行进行,首次区分出前后端的概念,如今的slam系统多半采用了这样的方法。同时摒弃了当时占据主导地位的后端滤波器滤波方案,而采用非线性优化进行后端优化,当时普遍采用ekf方法或其变种进行优化,因为当时人们普遍认为非线性优化无法实时处理大规模数据,而没有认识到后端优化本身的稀疏性。之后的视觉slam技术大多是在ptam的基础上进行不断改进。4.2014年,慕尼黑工业大学的engel等人提出了大规模直接视觉slam系统lsd-slam(large-scale direct monocular slam),提出将直接法应用到视觉slam系统上,以此减少在特征提取的过程中的时间损耗。lsd-slam提出了像素梯度与直接法的关系以及像素梯度与极线方向在稠密重建中的角度关系,可以在cpu上实现半稠密场景的重建。2015年,西班牙萨拉戈萨大学r.mur-artal等人提出了基于单目的orb-slam系统,并且分别于2017年和2021年迭代了两版。orb-slam继承了ptam,是基于特征点法的视觉slam技术的高峰。在orb-slam2之后它支持了单目、双目、rgb-d三种传感器模式,具有很好的泛用性。同时提出了一种基于词袋模型(bag of word,bow)的闭环检测和重定位方法,有着非常好的实时性、稳定性和鲁棒性,同样能够仅仅依靠cpu实时运行,被认为是当前最优秀的视觉slam算法。5.如今的视觉slam有两大主要的研究方向,一是视觉-惯性导航融合的slam方案,二是与深度学习相结合的语义slam方案。惯性传感器(inertial measurement unit,imu)可以测量本体的角速度和加速度,与相机传感器有明显的互补性,融合之后可以得到更加完整的slam系统。2018年,香港中文大学的沈邵劼教授等人提出了vins-mono系统,使用单目相机加imu实现了紧耦合的视觉与惯性联合状态估计,且最终实现效果理想。随着人工智能与机器学习在全球范围的流行,语义slam方案逐渐成为当前研究的热点话题之一。2018年,lianos等人提出的用语义信息建立约束的视觉里程计方法vso算法(visual semantic odometry);2019年,北京航空航天大学崔林艳等人提出的利用隐藏在语义和几何信息中的动态特征去除动态环境干扰的sof-slam算法(semantic optical flow slam)都是其中的代表成果。技术实现要素:6.发明目的:为了实现特定场景的三维导航,基于上述现有技术,提出一种基于即时外观建图算法的三维栅格地图构建方法。7.技术方案:一种基于即时外观建图算法的三维栅格地图构建方法,包括以下步骤:8.步骤1、在智能体上搭载rgb-d摄像头,使用遥控的方式在目标场景中移动,或是通过人手持rgb-d摄像头,扫描目标场景的数据,构建数据集;9.步骤2、基于步骤1所构建的数据集运行rtab-map算法,跟踪智能体的移动位置,最后生成点云地图信息;10.步骤3、对步骤2生成的点云地图信息使用下采样滤波来减少点云数据,之后使用点云滤波算法,过滤掉点云地图中的离群点或错误点,得到过滤后的点云地图;11.步骤4、创建八叉树数据结构,设定分辨率,之后将步骤3所得点云地图中的点插入八叉树数据结构中,实现点云地图向三维栅格地图的转换,所述三维栅格地图为八叉树地图。12.进一步的,所述智能体包括智能小车或无人机。13.进一步的,所述步骤1中,rgb-d摄像头通过红外结构光或time-of-flight(tof)原理测量物体与相机的距离,这种测量手段是纯物理的,所以不需要消耗额外的计算资源。而且这种测量方式相对于单目摄像头或双目摄像头这些通过计算得到的距离信息来说,结果更加可靠。14.进一步的,步骤1所述数据集信息包括图像同步信息,深度图像信息,彩色(灰度)图像信息与里程计信息中的一种或多种;15.所述里程计信息包括轮速里程计、惯导里程计、图像里程计中的一种或多种;如果没有可靠的里程计信息来源,则发送空里程计信息,rtab-map算法将捕捉到这种丢失状态,会基于图像信息通过算法计算出图像里程计信息。16.进一步的,为基于rtab-map算法实现相机位置的定位与点云地图的构建,相比于其他vslam算法,rtab-map算法的一大突破手段是使用wm与ltm的内存管理机制限制用于循环闭合检测和图形优化的位置数量,提升了在大数据集下的处理速度。17.具体内存管理机制是当rtab-map的更新时间超过固定的时间阈值时,wm中的一些节点被转移到ltm,转移到ltm的节点将不再适用于wm中的模块。除了时间阈值之外,还存在一个内存阈值,表示在wm中可容纳的最大节点数。新节点的权重初始化为0,并且和最后一个节点进行比较,观察是否发生回环,即通过词袋模型判断图像相似性,如果发生了回环,则新节点的权重为最后一个节点的权重加1,同时将最后一个节点的权重重置为0。当达到时间阈值或内存阈值时,最早的最小加权节点首先被转移到ltm。当wm中的某个定位点发生回环时,可以将该定位点的邻居节点从ltm带回wm,以进行更多的回环和相似性检测。当机器人在之前访问过的区域移动时,它可以逐渐记住过去的位置,以扩展当前构建的地图并使用过去的位置进行定位。18.步骤2所述rtab-map算法具体的执行步骤为,19.21)首先将数据集中的信息共同传递给rtab-map框架中的同步模块(synchronization),由同步模块对各个类型的信息的时间戳进行同步;20.22)然后将同步后的传感数据传递给stm模块,stm模块观察连续图像在时间上的相似性,进而更新定位点的权重;21.23)之后对彩色图像数据进行回环检测,消除累计误差。22.回环检测采用词袋算法,即stm从彩色图像中提取到视觉特征点,并将其量化为一个可以循环增加的视觉词汇表,这些词汇表通常包括像素值的大小与邻近点的特征。基于词汇表,每张图像都可以用一个向量表示,其中向量的维数等于词汇表中单词的个数。将词汇表中的单词记为w1,w2,w3…,那么对于图像a,基于该词汇表可以表示为23.a=n1w1+n2w2+n3w3+…24.其中nx为在图像中该单词出现的次数,所以该图像可以表示为[n1,n2,n3…]。由于该种表示方式只表示单词出现的数目,而不表示单词出现的位置,所以当相机位置发生少量变化时依旧可以检测到相似图像。假设有两幅图像a,b,基于同一词汇表得到向量a,b,对于他们的相似性可以表示为[0025][0026]其中w表示向量a,b中元素的数目,也就是词汇表中单词的个数;范数取l1范数,当两个向量相同时值为1,此时表示两幅图像可以视作在同一位置拍摄;当两个向量完全相反时值为0,此时表示两幅图像完全不相干;设定一个回环阈值,便可以判断在一定误差的情况下,智能体是否发生了回环;[0027]24)之后采用图优化算法,将里程计信息,回环检测信息统一进行优化,所述优化的策略是gtsam;[0028]25)最后进行点云地图的构建。[0029]进一步的,步骤25)所述点云地图的构建具体包括以下步骤:[0030]假设需要建模的某个密闭空间由一个点云地图x表示,在x中有若干点云数据,描述为:每一个点云数据都由6个分量组成,分别是其所在的空间位置x、y、z和此处的颜色r、g、b;rgb-d相机运行时会从中读取到两种数据,分别是彩色图像和深色图像,其中彩色图像可以提供点云的颜色数据,空间数据则需要由两张图像和相机模型、姿态一起计算出来;[0031]对于针孔相机模型来说,一个空间点[x,y,z]与其对应在图像中的坐标[x',y',d]有如下对应关系,其中d表示空间点的深度数据,相机处为空间点坐标原点;[0032][0033]其中fx和fy指的是相机在x和y轴上的焦距,cx和cy指的是相机的光圈中心;[0034]将fx、fy、cx和cy定义为相机的内参矩阵c,每个点的空间位置和像素坐标用以下的矩阵模型表示:[0035][0036]其中[0037][0038]对图像中的每一像素按照上述矩阵公式进行变换,在空间中显示出来,得到一张图像对应的3d点云地图;在slam中由于里程计与后端优化的存在,能够很方便的知道相邻两帧图像之间的运动,那么从原点开始,下一帧图像对应的点云坐标为[0039][0040]其中r与t代表相机的位姿变换,r是旋转变换矩阵,t是位移矢量,随着相机的运动,点云数据不断丰富并拼接起来,最终得到目标空间的所有点云数据,形成目标空间的点云地图。[0041]进一步的,步骤3所述下采样滤波主要通过体素滤波算法实现,体素滤波的主要目的是减少点云数量,具体为:[0042]首先将点云地图分为若干体素格,然后计算每个体素格的质心,最后用质心点去替代改体素格的所有点云数据,达到在不破坏点云本身机械结构的前提下实现下采样的功能。进一步的,步骤3所述点云滤波算法包括直通过滤算法或统计滤波算法;[0043]直通过滤(pass through)主要目的是快速过滤掉自定义区间之内的点,主要手段是设定一个坐标系的范围值,然后检测文件中的点云数据,如果点云数据的坐标在这个范围之内(或不在这个范围之内),就直接去除这一个点云数据。[0044]统计滤波算法(statistical outlier removal)的主要目的是剔除掉点云地图中的离群点,它通过计算每个点距离k个临近点的距离的均值来判断该点是否是离群点;如果均值较大,那么判断该点为离群点,然后删掉这个点云数据。[0045]进一步的,步骤4中所述八叉树地图是一种用八叉树的方式表示的地图,具体为:[0046]首先将整个待建模的环境抽象为一个大的方块,然后将该方块分为八个小的方块,这八个方块通过八叉树的形式组织起来;并继续递归的划分下去,直到到达事先限制的层级或极限的层级;其中所有子节点被占据的概率都相同时,将子节点剪掉,只保留父节点,此时父节点的层级达到极限;相比于点云数据来说,八叉树是一种更加高效的建模方法,耗费的空间也更小。[0047]八叉树中的每个节点都存储了一个浮点数据x∈[0,1],用来表示它被占据的概率信息;具体的实现过程如下:[0048]设为概率对数值,它与x之间的变换由logit变化描述:[0049][0050]其反变换为:[0051]如此便实现了(-∞,+∞)到[0,1]的映射;[0052]将步骤3得到的点云地图导入到八叉树地图中,初始时y取0,此时x为0.5,当节点对应的空间出现点云数据时,增加y的值,否则减小y的值,从而间接实现了对于x也就是概率的变化。[0053]有益效果:本发明提出了一种基于即时外观建图算法的三维栅格地图构建方法,通过对原有的rtab-map算法进行优化与补充,构建出了基于八叉树数据结构的三维栅格地图。实现了在空间结构基本保持的前提下,耗费的内存空间的减小,使得在后续三维导航中,碰撞检测的复杂度大幅度降低,算法效率的大幅度提高。附图说明[0054]图1为总体方法结构图;[0055]图2为针孔相机模型图;[0056]图3为八叉树地图示意图。具体实施方式[0057]下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出。下面通过参考附图描述的实施方式是实例性的,仅用于解释本发明,而不能解释为对本发明的限制。[0058]步骤1、首先构造目标场景的数据集,数据集中应该包含图1中输入信息部分的内容,包括图像同步信息,深度图像信息,彩色(灰度)图像信息与里程计信息(可选)。如果没有其余可靠的里程计信息如轮速里程计、惯导里程计等,可以直接通过图像产生图像里程计信息。同样也可以通过信息融合算法如扩展卡尔曼滤波等实现多传感器信息的融合。同时为了实现回环检测,消除累计误差,这里的数据集信息采集必须要实现数据的闭环。[0059]步骤2、之后基于数据集,通过rtab-map算法实现相机位置的轨迹定位与点云地图的构建。每一帧图像上的像素点对应于世界坐标为[0060][0061]其中r和t表示相机的位姿变换,r是旋转变换矩阵,t是位移矢量。c是相机的内参矩阵,只与相机本身的结构有关,与外部环境无关,由下式表示:[0062][0063]将图像中每个像素点与空间中的点一一对应,然后对整个目标场景进行扫描,便可以得到整个目标场景的三维点云地图。所以点云地图构建准确的前提条件是相机轨迹定位的准确。[0064]相机轨迹定位信息可以由两种方式获得,一是被动定位、二是主动定位。其中被动定位指通过卫星、路标等方式实现定位,对环境要求比较高,同时通常情况下精度较低,无法用于自主导航。所以一般采用主动定位的方式实现相机的轨迹定位,也即基于里程计信息来实现相机的定位。这里的里程计信息包括轮速里程计、惯导里程计等或多种里程计信息的融合。[0065]但是单纯的里程计信息缺少反馈,但是随着时间推移,上一时刻的误差会不可避免的累积到下一时刻,使得整个系统出现累积误差,导致最终的位置信息变得不可靠。为了解决这一问题,rtab-map算法引入了回环检测的方法。其主要思想是当相机检测到与之前检测过的相似或相同的图片,那么系统便认为智能小车运动到了之前到达过的地方或之前到达过的地方附近,此时进行重新定位,这样便可以一次消除累积误差。在rtab-map算法中,通过词袋模型来判断图像之间的相似性。[0066]21)首先将数据集中的信息共同传递给rtab-map框架中的同步模块,由同步模块对各个类型的信息的时间戳进行同步;[0067]22)然后将同步后的传感数据传递给stm模块,stm模块观察连续图像在时间上的相似性,进而更新定位点的权重;[0068]23)之后对彩色图像数据进行回环检测,回环检测采用词袋算法,即stm从彩色图像中提取到视觉特征点,并将其量化为一个可以循环增加的视觉词汇表,这些词汇表通常包括像素值的大小与邻近点的特征;基于词汇表,每张图像都能用一个向量表示,其中向量的维数等于词汇表中单词的个数;将词汇表中的单词记为w1,w2,w3…,那么对于图像a,基于该词汇表表示为[0069]a=n1w1+n2w2+n3w3+……[0070]其中nx为在图像中该单词出现的次数,所以该图像表示为[n1,n2,n3…];由于该种表示方式只表示单词出现的数目,而不表示单词出现的位置,所以当相机位置发生少量变化时依旧可以检测到相似图像;假设有两幅图像a,b,基于同一词汇表得到向量a,b,对于他们的相似性表示为[0071][0072]其中w表示向量a,b中元素的数目,也就是词汇表中单词的个数;范数取l1范数,当两个向量相同时值为1,此时表示两幅图像可以视作在同一位置拍摄;当两个向量完全相反时值为0,此时表示两幅图像完全不相干;设定一个回环阈值,便可以判断在一定误差的情况下,智能体是否发生了回环;[0073]24)之后采用图优化算法,将里程计信息,回环检测信息统一进行优化,所述优化的策略是gtsam;[0074]25)最后进行点云地图的构建;[0075]假设需要建模的某个密闭空间由一个点云地图x表示,在x中有若干点云数据,描述为:每一个点云数据都由6个分量组成,分别是其所在的空间位置x、y、z和此处的颜色r、g、b;rgb-d相机运行时会从中读取到两种数据,分别是彩色图像和深色图像,其中彩色图像可以提供点云的颜色数据,空间数据则需要由两张图像和相机模型、姿态一起计算出来;[0076]对于针孔相机模型来说,一个空间点[x,y,z]与其对应在图像中的坐标[x',y',d]有如下对应关系,其中d表示空间点的深度数据,相机处为空间点坐标原点;[0077][0078]其中fx和fy指的是相机在x和y轴上的焦距,cx和cy指的是相机的光圈中心;[0079]将fx、fy、cx和cy定义为相机的内参矩阵c,每个点的空间位置和像素坐标用以下的矩阵模型表示:[0080][0081]其中[0082][0083]对图像中的每一像素按照上述矩阵公式进行变换,在空间中显示出来,得到一张图像对应的3d点云地图;在slam中由于里程计与后端优化的存在,能够很方便的知道相邻两帧图像之间的运动,那么从原点开始,下一帧图像对应的点云坐标为[0084][0085]其中r与t代表相机的位姿变换,r是旋转变换矩阵,t是位移矢量,随着相机的运动,点云数据不断丰富并拼接起来,最终得到目标空间的所有点云数据,形成目标空间的点云地图。[0086]步骤3、得到目标场景的点云地图之后,需要对点云地图进行过滤,过滤方式包括下采样与离散点去除。[0087]其中下采样滤波主要通过体素滤波算法实现,体素滤波的主要目的是减少点云数量,它首先将点云地图分为若干体素格,然后计算每个体素格的质心,最后用质心点去替代改体素格的所有点云数据,达到在不破坏点云本身机械结构的前提下实现下采样的功能。[0088]为了过滤掉离群点或错误点,可以通过直通过滤算法(pass through)或统计滤波算法(statistical outlier removal)实现,直通过滤主要目的是快速过滤掉自定义区间之内的点,主要手段是设定一个坐标系的范围值,然后检测文件中的点云数据,如果点云数据的坐标在这个范围之内(或不在这个范围之内),就直接去除这一个点云数据。统计滤波算法的主要目的是剔除掉点云地图中的离群点,它通过计算每个点距离k个临近点的距离的均值来判断该点是否是离群点。如果均值较大,那么判断该点为离群点,然后删掉这个点云数据。[0089]步骤4、最后将过滤后的点云地图数据转换为八叉树地图,八叉树地图是三维栅格地图的一种构建方式,主要基于八叉树的数据结构,基本思想是首先将整个待建模的环境抽象为一个大的方块,然后将该方块分为八个小的方块,这八个方块通过八叉树的形式组织起来;并继续递归的划分下去,直到到达事先限制的层级或极限的层级;其中所有子节点被占据的概率都相同时,将子节点剪掉,只保留父节点,此时父节点的层级达到极限;相比于点云数据来说,八叉树是一种更加高效的建模方法,耗费的空间也更小。[0090]八叉树中的每个节点都存储了一个浮点数据x∈[0,1],用来表示它被占据的概率信息;具体的实现过程如下:[0091]设为概率对数值,它与x之间的变换由logit变化描述:[0092][0093]其反变换为:[0094]如此便实现了(-∞,+∞)到[0,1]的映射;[0095]将步骤3得到的点云地图导入到八叉树地图中,初始时y取0,此时x为0.5,当节点对应的空间出现点云数据时,增加y的值,否则减小y的值,从而间接实现了对于x也就是概率的变化。[0096]实施例:[0097]步骤一、手持rgb-d摄像头,通过步行的方式,构建实验室的数据集。数据集时长16分钟41秒,相机以30hz的频率发布图像相关信息,里程计信息为空。实验室为一间约10m*10m的密闭室内空间,为了保证可以实现回环,绕行实验室行驶一周半。[0098]步骤二、基于数据集运行rtab-map算法,得到实验室的原始点云地图,共有3570万个点云数据。[0099]步骤三、对上述原始点云地图进行下采样,并剔除离群点,最终得到点云地图,内含166万个点云数据。[0100]步骤四、基于上述过滤后的点云地图构建三维栅格地图。[0101]以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部