基于ROS的室内移动机器人自主导航技术

摘   要

随着机器人技术的发展,近些年来室内移动机器人的研究热度越来越高。本文主要利用ROS操作系统对室内移动机器人的建图定位与自主导航关键技术进行研究。

ROS是目前开发较为完整具有广阔应用前景的开源机器人操作系统,具有分布式、模块化、代码复用等优良特点。同时ROS还提供了许多开源库,在这些库的基础之上研究同时定位与地图构建和机器人自主导航技术可以节省大量时间。

ORB-SLAM2是比较优秀的视觉SLAM算法之一,它具有计算量比较小、能够实时运行等优点。在介绍ORB-SLAM2的框架之前,首先会介绍视觉SLAM的一些基础知识,在此基础之上简要介绍ORB-SLAM2的前端和后端,最后在ROS环境下对该算法进行验证并和VINS-MONO进行对比。

机器人自主导航的核心可以归结为机器人的定位和路径规划。机器人定位解决机器人在环境中的位置问题,知道机器人的位置后利用路径规划技术寻找一条代价最小的路线完成机器人的自主导航。本文利用蒙特卡洛完成机器人定位,结合A*全局路径规划算法验证移动机器人的导航效果并和Dijkstra算法进行对比。

关键词ROS、自主导航、视觉SLAM、路径规划

Abstract

In recent years, with the development of robot technology, research on indoor mobile robots has become increasingly popular. This article focuses on the key technologies of mapping, localization, and autonomous navigation of indoor mobile robots using the ROS operating system.

ROS is currently the most complete open source robot operating system with broad application prospects. It has excellent features such as distributed computing, modularity, and code reuse. At the same time, ROS also provides many open source libraries, which can save a lot of time in research on simultaneous localization and mapping (SLAM) and robot autonomous navigation technology based on these libraries.

In recent years, research on visual SLAM has become increasingly popular. Among the algorithms, ORB-SLAM2 is one of the better ones, as it has the advantages of low computational complexity and real-time operation. Before introducing the framework of ORB-SLAM2, some basic knowledge of visual SLAM will be discussed. On this basis, the front-end and back-end of ORB-SLAM2 will be briefly introduced. Finally, this algorithm will be validated in the ROS environment and compared with VINS-MONO.

The core of robot autonomous navigation can be attributed to robot localization and path planning. Robot localization solves the problem of the robot's position in the environment, and then uses path planning to find a path from the starting point to the endpoint to complete the robot's autonomous movement. This article uses Adaptive Monte Carlo in ROS for robot localization, and combines A* global path planning algorithm to verify the navigation effect of mobile robots and compare it with Dijkstra's algorithm.

Keywords: ROS,autonomous navigation, VSLAM, path planning

目录

第一章 绪论

1.1 课题研究背景和意义

1.2 国内外研究现状

1.2.1 视觉SLAM国内外发展现状

1.2.2 室内移动机器人国内外发展现状

1.2.3 存在问题与不足

1.3 可行性分析

1.4 本文主要研究内容

第二章 ORB-SLAM2原理及框架

2.1 视觉SLAM基础

2.1.1 刚体运动及其优化

2.1.2 相机模型

2.1.3 非线性优化

2.2 跟踪线程

2.2.1 引言

2.2.2 特征提取

2.2.3 特征匹配

2.2.4 运动估计

2.3 后端算法

第三章 基于A*算法的移动机器人路径规划技术

3.1 ROS基础

3.1.1 ROS简介

3.1.2 ROS通信方式

3.2 ROS下ORB-SLAM2验证

3.3 机器人定位

3.3.1 机器人定位问题分类

3.3.2 蒙特卡洛定位

3.4 路径规划与导航

3.4.1 基于Dijkstra的全局路径规划算法

3.4.2 基于A*的全局路径规划算法原理及实现

3.5 ROS下A*算法仿真验证

3.5.1 基于代价地图的路径规划环境模型

3.5.2 A*算法及其性能验证

结 论

致 谢

参 考 文 献

  • 绪论
    1. 课题研究背景和意义

移动机器人已经成为人类社会中重要的一员,它们可以用于许多领域,如工业自动化、医疗护理、环境监测等。室内移动机器人是移动机器人的一种,可以在人类活动的场所自主移动,并且执行任务。它们已经广泛应用于各种环境,如医院、办公室、仓库和家庭等。然而,室内环境的复杂性和不确定性对机器人的自主移动构成了一定的挑战。由于复杂的室内环境,机器人需要具有高精度的定位和导航能力,才能避免碰撞和完成任务。解决机器人室内自主导航问题的一种重要方法之一就是视觉SLAM技术视觉SLAM的主要工作就是利用摄像头等传感器为机器人的导航提供必要的地图信息。作为一个开放式机器人操作系统,ROS提供了完整的机器人软件框架,包括通信、控制、导航等功能,方便机器人的开发和部署。ROS中有许多开源的包,因此利用ROS进行开发可以极大缩短开发时间。本论文的研究目的是利用视觉SLAM技术研究对室内环境的建图和定位,并探索基于ROS的室内移动机器人自主导航技术。主要完成的工作是在ROS环境下对ORB-SLAM2和A*全局路径规划算法进行验证。本文的研究成果可能会为机器人软件系统的开发提供实践经验,为室内移动机器人的自主导航技术提供进一步参考。

    1. 国内外研究现状
      1. 视觉SLAM国内外发展现状

(1)国外研究现状

视觉SLAM是一种利用相机和图像信息实现实时定位和地图构建的技术。在国外,视觉SLAM领域得到了广泛的研究和发展,涌现出许多创新的方法和算法。

特征提取和匹配:特征提取和匹配是视觉SLAM的关键步骤之一。国外的研究者提出了多种高效的特征描述子,例如SIFT、SURF和ORB,用于提取图像特征点。同时,他们还研究了各种特征匹配算法,包括基于描述子相似度、几何约束和局部一致性等方法,以提高匹配的精度和鲁棒性。

视觉里程计:视觉里程计是视觉SLAM中的核心任务之一,用于估计相机在连续图像序列中的运动信息。国外的研究者提出了多种视觉里程计算法,这些方法利用多视几何等必要的数学知识,通过代码的方式来实现,从而实现定位和地图构建。

地图构建和优化:国外的研究者提出了多种地图构建和优化算法,用于将相机观测到的特征点或像素映射到三维空间,并优化地图的精度和一致性。常用的方法包括基于滤波器(如扩展卡尔曼滤波器和粒子滤波器)的实时地图构建和基于图优化的离线地图优化。这些方法能够处理环境中的动态物体、误匹配和重投影误差等问题,提高地图的准确性和稳定性。

语义SLAM:近年来,国外的研究者开始关注将语义信息与视觉SLAM相结合,以实现更加丰富的地图构建。语义SLAM方法可以用于智能导航、场景理解和交互式系统等领域。

多传感器融合:为了提高定位和地图构建的准确性和鲁棒性,国外的研究者在近些年将视觉传感器和一些其他的惯性传感器进行融合。多传感器融合能够利用各个传感器的优势,提供更准确和稳定的定位和地图信息。

(2)国内研究现状

在国内,视觉SLAM作为一项重要的研究领域得到了广泛的关注和发展。国内研究者在视觉SLAM算法优化、硬件平台搭建、应用拓展等方面取得了一系列重要进展。

算法优化与创新:国内研究者在视觉SLAM算法优化和创新方面进行了大量的工作。他们优化了一系列高效的特征提取和匹配算法以加快特征提取和匹配的速度。

实时性和鲁棒性:国内研究者注重提高视觉SLAM系统的实时性和鲁棒性。他们通过算法优化、硬件加速和并行计算等手段,提高了算法的运行效率和实时性能。同时,他们还研究了鲁棒的特征提取和匹配算法,以应对光照变化、动态物体和遮挡等复杂环境条件,提高系统的鲁棒性和稳定性。

多传感器融合:在国内也有许多学者研究多传感器的融合,例如将惯性测量单元、激光雷达等与视觉传感器相结合,通过融合多源数据来提高定位和地图构建的准确性。同时,国内研究者还探索了基于多传感器融合的SLAM算法在无人车、智能交通等领域的应用。

      1. 室内移动机器人国内外发展现状

(1)国外研究现状

自主导航和路径规划:移动机器人的关键技术之一就是自主导航。国外致力于开发高效的自主导航算法,使机器人能够在未知环境中实现自主移动。其中,SLAM(Simultaneous Localization and Mapping)技术是常用的方法,通过结合传感器数据和地图信息,实现机器人的自我定位和地图构建。此外,路径规划算法也是关注的热点,研究者通过优化算法和学习方法,使机器人能够在复杂环境中规划最优路径,并避免障碍物。

环境感知和感知技术: 为了使机器人能够感知和理解周围的环境,国外研究者提出了各种先进的感知技术。机器人主要通过传感器来感知周围的世界,包括相机,激光雷达和一些惯性传感器等。这些传感器可以获取环境中的物体位置、形状、颜色等信息,以支持机器人的决策和行为规划。此外,近年来深度学习技术的兴起,为机器人的感知能力带来了巨大的提升。通过深度学习算法,机器人能够进行物体识别、目标跟踪和场景理解等任务,从而更好地适应复杂多变的环境。

协作机器人和人机交互: 随着机器人技术的发展,研究者开始关注多个机器人之间的协作和与人类的交互。协作机器人可以在任务执行中相互合作,提高效率和灵活性。另外,人机交互也是一个重要研究方向。研究者致力于开发机器人与人类之间自然和有效的交互方式,如语音识别、姿态识别和情感识别等。这样的研究有助于实现人机共生和智能服务机器人的应用。

(2)国内研究现状

近些年国内对移动机器人的研究也越来越多,在研究开发新技术的基础之上,国内的学者同时注重应用层面的开发。

应用领域的拓展: 国内研究者将移动机器人技术广泛应用于各个领域。例如,在物流仓储领域,研究者开发了自动导航的AGV(自动导引车)系统,提高了物流仓储的效率。在医疗领域,研究者利用移动机器人进行康复训练和辅助手术。

教育与研究: 在教育和研究领域,国内研究者积极探索移动机器人的应用。移动机器人被应用于学校和科研机构中,作为教学辅助工具和研究平台。通过与学生和研究人员的互动,移动机器人不仅能够提供实验和演示的机会,还能促进学生对科学和技术的兴趣培养,并激发创新思维。

社会服务与辅助功能: 国内研究者也将移动机器人应用于社会服务和辅助功能领域。例如,在老年照护中,机器人可以提供日常生活的帮助,如智能导航、药物提醒和紧急呼叫等。此外,移动机器人还可以在灾害救援和环境监测等领域发挥重要作用,通过携带传感器和执行任务,为人类提供更安全、高效的服务。

工业自动化: 国内的工业自动化领域也是移动机器人应用的重要领域之一。机器人在工业生产线上的应用,可以提高大大提高生产效率。例如,自动导航的移动机器人可以在工厂内物料搬运和装配过程中发挥重要作用。同时,国内研究者也致力于开发更智能、灵活的工业机器人,通过与其他自动化设备和系统的集成,实现协作生产和智能制造的目标。

总体而言,近些年室内移动机器人在各个领域实现了广泛的应用。随着人工智能和机器人技术的不断发展,移动机器人将继续在未来发挥重要的作用,为人类的生活和工作带来更多的便利和创新。

      1. 存在问题与不足

在室内移动机器人和视觉SLAM的发展过程中,存在一些问题和不足,这些问题可能限制了其应用范围和性能。

环境感知和建模的挑战:在室内环境中,为了进行精准的导航和路径规划,机器人往往需要建立十分精确的地图。然而,复杂的室内环境、动态物体和光照变化等因素会对感知和建模造成挑战,导致误差和不完整的地图,影响路径规划的准确性和可靠性。

实时性和计算复杂度:移动机器人需要在实时性要求下进行路径规划和导航。然而,视觉SLAM算法通常需要大量的计算资源和时间来处理图像数据和构建地图,这可能限制了其在实时应用中的使用。解决这个问题需要对算法进行优化,或者结合其他传感器和技术来提高实时性和效率。

鲁棒性和鲁邦性:在复杂的室内环境中,机器人需要具备良好的鲁棒性和鲁邦性,以应对各种挑战和干扰。例如,光照变化、遮挡物、不可预测的动态物体等可能导致传感器数据的不稳定和误差,进而影响路径规划的性能。改善鲁棒性和鲁邦性是进一步提升室内移动机器人和视觉SLAM系统的关键问题。

长期自主导航:长期自主导航是指机器人在长时间的运行中能够持续更新地图和路径规划,以适应环境的变化。然而,由于传感器的漂移、定位误差和地图的更新问题,机器人在长期运行中可能存在累积误差和路径规划失效的情况。解决这个问题需要开发新的方法和技术,如视觉惯性融合、闭环检测和增量式地图更新等。

多机器人协同和冲突避免:在多机器人系统中,机器人之间的协同和冲突避免是一个复杂的问题。在室内环境中,多个机器人共享同一空间,需要避免碰撞并有效地协调任务。解决这个问题需要研究多机器人路径规划和协同算法,以实现安全和高效的多机器人协同。

    1. 可行性分析

(1)经济可行性:

成本:研制室内移动机器人需要大量的资金投入,涉及到硬件、软件以及人工成本,例如视觉传感器、SLAM算法、ROS机器人导航技术、框架结构等费用。此外,还要考虑生产制造、销售渠道和服务支持等方面的成本。

市场需求:当前市场对室内移动机器人的需求逐渐增加,可以应用于物流仓储、地图绘制、家庭保洁等领域。但是,在推广和普及过程中,需要花费大量的时间和精力打开市场。

可持续发展:考虑长远利益,在室内移动机器人设备的研究过程中,需要注重可持续发展,例如采用环保材料、低功耗设计等措施。

(2)技术可行性:

视觉SLAM技术:是实现机器人室内定位和导航关键技术,可以室内环境中自主完成定位和导航。但是,其在复杂室内环境中的定位精度和稳定性仍面临挑战。

室内移动机器人自主导航技术:自主导航技术可以为室内机器人提供路径规划和避障等基础功能。该技术需要硬件和软件相结合,并能够实时获取机器人传感器信息,保证机器人导航的有效性。

在室内移动机器人研究方面,除了经济可行性,还应注重技术可行性。当前,由于技术水平、需求及产业因素等问题,室内移动机器人尚未广泛应用,我们需要在不断完善基础设施,推广市场的同时,不断优化技术,提升其应用价值和竞争力。

    1. 本文主要研究内容

本文主要研究室内移动机器人自主导航的关键技术,主要包括视觉SLAM(ORB-SLAM2)和移动机器人的自主导航两个大的方面。

首先在第一章绪论部分会对视觉SLAM和移动机器人的国内外发展的现状做一个研究,紧接着提出当前研究存在的问题,并对本文研究的内容可行性的分析。

在第二章中,首先会探讨一些与视觉SLAM相关的基础知识。这些知识包括用于SLAM中描述相机位置和方向的三维刚体运动以及进行位姿优化的李群和李代数。还会介绍一些常见的相机模型,例如针孔相机模型、双目相机模型和RGBD相机模型。此外,还会介绍一些在SLAM中用于求解非线性最小二乘问题的方法,包括高斯-牛顿方法和列文伯格-马夸尔特方法。通过这些知识的介绍,可以对SLAM的基本原理和相关技术有一个清晰的了解。引出基础知识之后着重ORB-SLAM2的跟踪线程,包括特征提取特征匹配和位姿估计等知识,最后简要介绍了ORB-SLAM2后端的回环检测。

在本文的第三章先是对ROS进行了简要的介绍,紧接着在ROS下对ORB-SLAM2进行验证,并和另一主流的视觉SLAM方法VINS-MONO进行对比。接下来,会介绍移动机器人的自主导航技术,其中包括机器人的定位方法和A*全局路径规划算法。将会着重探讨机器人如何确定自身在环境中的位置,并展示A*算法在全局路径规划中的应用。最后,通过搭建ROS机器人系统来验证A*算法的性能,并将其与Dijkstra算法进行比较。通过这一实验,我们可以对A算法在路径规划中的有效性进行评估,并与传统的Dijkstra算法进行对比分析。

  • ORB-SLAM2原理及框架
    1. 视觉SLAM基础
      1. 刚体运动及其优化

(1)三维刚体运动

视觉 SLAM 中的位姿估计是基于三维刚体运动,三维刚体运动用于描述不同坐标系之间的变换关系。坐标系是相对于某一参考系建立的,通常包括世界坐标系和相机坐标系等多种类型。三维刚体运动描述了一个点在初始坐标系中的位置,并经过旋转、平移等操作后,在新坐标系中的位置发生了哪些改变。因此,通过三维刚体运动学,结合位姿估计算法,可以有效地实现对不同坐标系之间的精确定位。假设世界坐标系为

,相机坐标系为

,我们假设相机是刚体,进而把研究的对象转为三维的刚体运动。这里所指的刚体不仅仅有位置,也就是相机具体处于空间的什么地方,也有具体的姿态,也就是相机的朝向。通过一次三维的旋转可以使得两个坐标系的姿态是一样的,再通过一次平移使得两个坐标系完全重合,此时两个坐标系的位姿是一样的。在用详细的数学语言进行描述之前首先引入向量,空间中的两个点连成按一个方向连成的一条线就是一个向量,他只是空间中存在的东西,并不具有坐标这一说法,只有在引入了坐标系之后才可以谈某个向量在该坐标系下的坐标

假设三维空间中有一组三维的相互正交的基向量

,对于向量

有:

则称

在此基下的坐标。假设世界坐标系和相机坐标系的单位正交基分别为

则有:

 

 

对式(2-2)两边左乘一个

则有:

中间的矩阵称作旋转矩阵,把任意

维的旋转矩阵的集合定义为:

在完成旋转的变换之后我们在此基础之上加入平移。假设向量

在经过旋转化

后加入了平移变换

,则有:

式(2-5)

被称作平移向量,的作用很简单,就是把一个坐标系平移使得其和另一个坐标系完全重合,从而完成一整个坐标系的变换。但是这种表达方式存在一定的缺陷,经历过旋转和平移之后的变换并不是线性变换。假如进行了两次变换:

根据式(2-6),从

的变换可以写成:

但是这样的描述非常的繁冗,在引入了变换矩阵之后,重写为式(2-8):

式(3-8)中的T 称为变换矩阵,这样通过一个矩阵描述了旋转和平移两个变换。同时这种矩阵又被称为特殊欧式群,即

(2)李群与李代数

视觉SLAM中,李群和李代数是非常重要的数学工具,用于描述相机的位姿变换和其它的变换。

李群和李代数都是数学上的概念,可以用于表示旋转和平移的变换。李群是一个连续的群,它可以被看作是一个由无穷小变换组成的集合。而李代数是一个与李群相关的切向量空间,它可以用来描述李群的无穷小变换。

在视觉SLAM中,相机的位姿变换可以使用李群表示。一般情况下,我们使用特殊欧氏群(Special Euclidean group,SE)来表示相机的位姿变换,因为它包括了旋转和平移两个变换,而且具有良好的代数性质。在三维空间中,SE(3)代表了平移和旋转的变换。

李代数则是用于计算李群的无穷小变换的。在二维空间中,SE(2)的李代数为三维向量,包括平移向量和旋转角度。在三维空间中,SE(3)的李代数是一个六维的向量,包括平移向量和旋转矩阵的无穷小表示。

利用李群和李代数,能够实现在视觉SLAM中的位姿估计、优化和滤波等操作。通过应用李代数,我们能够进行基于李代数的优化算法,以提升相机位姿和地图点位置的准确性。在视觉SLAM领域,这种方法常被用于优化相机位姿和地图点位置,从而获得更加精确的结果。

      1. 相机模型

(1)单目相机

目前,单目相机模型存在多种形式,其中最常见的是针孔模型。该模型的主要原理是基于小孔成像,将相机视作一个小孔,将三维世界的影像投影到相机平面上,从而得到二维图像。下面将对小孔成像模型进行数学建模,以详细描述其工作原理。

2-1单目相机模型

首先定义两个坐标系:相机坐标系和物理成像平面的坐标系,

。其中相机的光心o可以被视作是针孔模型的小孔。假设有一个三维世界坐标点

,其坐标为

,当这个点通过相机成像时,它在物理成像平面上对应的坐标为

。根据相似三角形原理有:

其中焦距f表示物理成像平面到相机成像平面的距离,由于现实中的三维世界到物理平面的像是倒立的,通常会在比例前加负号来表明这种倒像的关系,但是由于最后相机呈现的相片经过处理后旋转到了正常的角度,并且为了模型建立的方便,把负号去掉,同时把

整理到左侧可得:

由于计算机处理图片都是以像素的形式处理,还需要引出像素坐标系

,像素坐标系和物理成像平面的关系是缩放和平移的关系。

轴定义为原点向右,

轴定义为原点向下。假设物理成像到像素坐标在

轴上缩放了

倍,在

轴上缩放了

倍,原点偏移了(

),则像素坐标为:

将式(2-12)写成矩阵的形式为:

上式中间的矩阵成为相机的内参矩阵K,一般一个相机生产出来之后其内参就已经是确定的,通过各种手段去确定相机的内参矩阵就叫相机内参的标定。相机内参描述的是相机自身固有的参数和属性,与相机内参对应的是相机的外参数,相机外参数表示是世界坐标系到相机坐标系的变换。设点P在世界坐标系下的坐标为

,在相机坐标系下的坐标为

,则有:

(2)双目相机

由于单目相机无法确定物体的深度信息,在后来的发展中诞生了双目相机和深度相机。双目相机也不可以直接测量物体的深度,但是可以根据左右目来计算三维空间中点的深度。模型如下图所示。

2-2: 双目相机模型

L为左光圈中心,R为右光圈中心,f为焦距,

为成像平面上像素坐标,根据相似三角形的原理可以得到:

整理(2-14)得到:

d被称作是视差,代表的含义是空间中的点在成像平面上的横坐标之差,视差越大则距离越近,反之越远。

(3)RGB-D深度相机

按照深度相机的测量原理目前可以分为两大类:

(1)结构光型,通过红外结构光测量像素深度,这种相机是采用结构光产生的编码投射到目标物体上,通过相机接收目标物体反射回来的编码图案,进而计算出目标物体在空间中的深度信息。它具有精度高、测量范围大和速度快等特点。例如:Kinect、Intel RealSense等。

(2)TOF型,通过飞行时间测量像素深度,这种相机是采用飞行时间原理,在拍摄目标物体时发射光子,并通过接收器回收反射光信息,计算出物体到相机的距离。它具有精度高、测量范围较大和速度快等优点,但成像质量相对较差。例如:Kinect2和一些TOF传感器等。

      1. 非线性优化

在视觉SLAM中,往往会遇到优化问题,这些问题可以建模成一个包含高斯噪声的非线性最小二乘问题,解决非线性最小二乘的常用方法有阶梯度法,高斯牛顿法(GN)和列文伯格-马夸尔特法(LM,本章介绍使用最为广泛的GN和LM法。

(1)高斯牛顿法

首先考虑一个最小二乘的问题:

需要注意的是目标函数是

而不是

,对

进行一阶泰勒展开可得:

其中

是一个列向量,可以通过求解

关于

的导数得到,于是可以将问题转化为寻找一个增量

,使得

最小,将问题转化为线性最小二乘问题的求解:

对式(2-18)展开平方项可得:

的导数等于0:

根据式(2-20)可以得到如下方程组:

上面这个公式称为高斯牛顿方程(Gauss-Newton equation)或者正规方程(Normal equation)定义系数H和g,式(2-21)可以写成:

高斯牛顿法的求解步骤可以总结为:

    1. 首先给定初始值

    2. 对于第n次迭代,计算

      和误差

    3. 求解方程

    4. 如果

      足够小则停止,否则,

      ,继续返回第二步。

(1)列文伯格-马夸尔特法

LM法选择给

添加一个信赖区域,因而这个方法也叫信赖区域方法,只有在信赖区域内才认为二阶的泰勒展开在展开点附近有良好的效果,在区域外近似可能会出现问题。

为了描述近似程度的好坏,定义指标

来刻画:

式(2-22)的分母是近似模型的下降值,分子是实际函数的下降值。如果计算得到

接近1,表示近似是良好的,如果

太大,说明实际减少的值远大于近似减少的值,应该要增大信赖区域,否则如果

较小,则需要缩小信赖区域。

LM法的具体实现步骤如下:

  1. 给定初始值

    以及初始的半径

  2. 对于第m次迭代,求解:

(3)按照公式求解

,如果

>0.75,则

=2

,若

<0.25,则

=0.5

(4)如果

大于某个确定的阈值,则认为可行,令

(5)判断算法是否收敛,收敛则结束,否则继续进行第二个步骤。

    1. 跟踪线程
      1. 引言

ORB-SLAM2跟踪线程主要完成的工作是视觉里程计、重定位,局部地图跟踪和关键帧判断。

视觉里程计是比较关键的部分,其核心问题是怎么样根据已知的图形去估计未知的相机运动。但是如果但从整张图片来看,想要恢复相机的运动是十分困难的,因此一般会选择先从图中找出特征点,再从特征点中寻找方法恢复相机的运动。特征点是可以体现图像特征的一个个点的集合(经典SLAM中也叫路标)关于特征点我们希望他可以有许多良好的性质,比如在提取的时候可以不受光照影响,可以不受相机旋转和相机前后平移的影响,也就是可以保证旋转不变性和尺度不变性。为了解决这些问题不少学者提出了解决的方法,比如SIFT、SURF、ORB等等。ORB-SLAM2采用的是ORB提取特征点的方法。

      1. 特征提取

一个特征点由关键点和描述子两部分组成。关键点就是能够表征图像一些关键部位的信息点,一般采用角点作为关键点,提取角点的方法有Harris角点、FAST角点、GFTT角点等。ORB-SLAM2采用FAST方法提取关键点,FAST和其他方法相比具有不可替代的优点:计算速度快,实时性强。因而ORB-SAM2也具有较好的实时性。FAST关键点提取的原理十分简单,只需要比较像素大小,找出像素差大的点即可。他的检测过程如下:

(1)首先在假设选中的像素点为a点,他的亮度为

(2)然后设置一个检测的阈值

(3)以a点为圆心画一个半径为3的圆,选取圆上的16个点作为比较点

(4)假如这十六个点中存在点a,其周围有连续N个亮度大于

+

或者小于

-

,则a点可以被认为是特征点。

N的数量可以为12、9、11。常用的一般为11。

为了解决尺度不变性的问题,通常采用图像金字塔的方法。图像金字塔是一种常见的处理尺度不变性的技术,其主要思想是对图像进行多尺度缩放,构建不同大小的图像来进行特征提取和匹配。这种方法可以确保即使在相机前后平移的情况下,仍能匹配到相同的特征点。通过构建图像金字塔,我们能够在不同尺度下进行特征提取,提高了算法的鲁棒性和稳定性。

为了解决旋转不变性可以计算特征点的图像灰度质心,计算的步骤如下:

首先定义区域图像的矩:

式子中

表示在坐标

处的图像的灰度值,沿着

,

方向的图像的矩分别为:

区域内所有像素灰度总和为:

图像的质心为:

关键点的方向为该点指向质心C的方向,记关键点的旋转方向为:

      1. 特征匹配

在选取好特征点之后需要进行特征匹配来进行后续的相机位姿的估计。在两个缓慢的连续帧之间,可以得到两帧之间看到一些相同的特征点,特征匹配的任务就是判断哪些特征点属于同一个特征点。

首先介绍BRIEF描述子,在得到一个特征点之后可以用BRIEF描述子计算这个特征点周围的一些信息以便进行后续的特征匹配。BRIEF描述字是一组二进制的矩阵或者序列,他在关键点附近随机选取两个点A和B,如果A点的灰度大于B点则取1,反之则为0,ORB-SLAM2采取256位的BRIEF描述子,这样对于每个特征点都可以得到一个横向量,对于N个特征点可以得到N*128的矩阵。

得到关键点周围的信息矩阵之后可以计算两个点的相似程度来进行特征匹配,常见的手段是计算两个特征点的汉明距离。对于两个点得到的两个描述子,对比它们相同的位,如果这个位的值一样则不变,否则汉明距离加一,这样下来就能得到256位描述子的汉明距离,一般而言汉明距离越小那么可以认为这两个点越相似。常见的匹配方法有暴力匹配和快速近似最邻法。暴力匹配就是比较该特征点和另一张图中的所有特征点,找到距离较小的。FLANN核心思想是通过构建一个能够快速定位到目标点附近区域的数据结构,比如KD树(K-dimensional Tree)或LSH哈希(Locality Sensitive Hashing),来加速最近邻搜索。ORB-SLAM2主要采用FLANN法进行特征匹配。但是由于光线和一些噪声的存在,往往会存在误匹配,可以采用RANSAC等方法来优化,减少误匹配。

      1. 运动估计

(1)对极几何

假设已经在两张图像中找到了特征点

,三维空间中对应的点为p点。假设相机旋转矩阵为

,相机的平移矩阵为

,由相机的内参公式可得:

由相机的外参公式可得:

将式(2-27)带入式(2-28)可得:

对式(2-29)左右两边叉乘

可得:

由于向量叉乘自身结果为0,因而等式右边为0,同时对等式(2-30)左边叉乘

可得:

由叉乘的性质式(2-31)可以写成:

由此定义本质矩阵E和基础矩阵F:

求解出本质矩阵或者基础矩阵就可以得到相机的位姿,常见的求解方法有五点法和八点法。ORB-SLAM2采用八点法求解。

(2)三角化

即使已经通过对极几何求解得到相机的位姿,但是特征点的深度信息在整个空间当中仍然是未知的。可以利用三角化求解得到关键点的具体深度信息。三角化又叫三角测量,是在不同位置观察同一个路标推测路标深度的算法。

图2-3: 三角化

图中

是一对事先匹配好的特征点,他们在空间中对应点p,

是两个位置相机的光心,图像

的旋转矩阵和平移矩阵分别为R和t。不考虑误差

会相交于空间中的p点,但是由于噪声的存在他们往往不会交于p点。假设

分别是

对应的归一化坐标,则有:

其中R和t已经在三角化中求得,只需要求解尺度因子

,在等式两边同时乘上

可得:

由上式可以求得

    1. 后端算法

机器人在移动过程中,由于相机误差等原因,可能会产生位姿估计误差,这些误差会随着时间的推移而积累,最终导致系统的位姿估计不准确。为了解决这个问题,需要对误差进行优化。局部建图的主要任务是把前端获得的关键帧和地图点插入到地图中,然后对临近地图点进行选择和剔除生成新的地图点。除了利用优化方法进行位姿调整外,回环检测也是一种常用的位姿优化方法,特别适用于较大尺度地图的构建。

回环检测的过程包括以下几个步骤:

提取关键帧:系统会将场景中的所有图像都进行处理,筛选出一些具有代表性的关键帧。这些关键帧通常包含场景中的重要结构和特征,可以帮助系统进行位姿估计和建图。

构建词袋:ORB-SLAM2使用DBoW2库来构建词袋。该库将所有关键帧的特征描述子进行聚类,得到一个词袋,用于表示场景中的所有特征。

回环检测:当机器人在探索场景时,如果它返回到先前已经访问过的区域,系统可以利用回环检测来优化机器人的位姿估计。回环检测的目的是比较当前关键帧与之前访问过的关键帧之间的相似性,以确定是否发生了回环。通过比较关键帧之间的特征描述子或其他相似性度量,系统能够判断是否回到了已经探索过的位置。回环检测的应用可以帮助改进位姿估计的准确性,提高整个SLAM系统的鲁棒性。

位姿优化:当系统检测到回环时,会使用回环检测得到的相似关键帧来进行位姿优化,以减少误差的累积。

ORB-SLAM2使用的DBoW2(Bags of Binary Words for Fast Place Recognition in Image Sequence)库是一种常用的基于二维图像的回环检测算法。该算法的核心是词袋模型(Bag of Words),它是一个特征描述的词典,可以离线训练,不需要在系统运行时进行训练,降低了系统运行的内存占用和提高了时效性。

回环检测可以大大提高机器人的定位和建图的精度和鲁棒性,尤其是在长时间运行的系统中。但是回环检测也有一些挑战和限制,例如当场景中存在相似结构或纹理时,可能会出现误判回环的情况。此外,回环检测的计算量较大,需要进行优化和加速,以满足实时性的要求。

  • 基于A*算法的移动机器人路径规划技术

机器人自主导航的关键在于机器人自身的定位和路径规划。机器人定位描述了到了一个陌生的环境机器人自身处于环境何处的问题,只有在知道了自身的位置才能进行路径规划进而完成导航的功能。在移动机器人中,路径规划和导航技术是至关重要的核心技术之一。路径规划是指在已知地图信息的基础上,寻找从起点到终点或目标位置最佳或者代价最小的路径;而导航则是实现机器人按照规划路径自主运动行驶并到达目标位置的过程。这两个技术密切关联,并对移动机器人的性能、稳定性和效率产生着重要影响。其中对最优和代价最小的定义是比较灵活的,可以是路径最短,占用内存少,还可能是综合其他因素来达到时间最短的效果。路径规划包含全局路径规划和局部路径规划,全局路径规划是综合全局的地图来规划一条从A到B的整体线路,常见的全局路径规划算法有Dijkstra、A*等,局部路径规划是在A到B的过程之中可能存在一些障碍和突发情况,需要实时处理而规划出来的一条局部路径,常见的局部路径规划算法有DWA、TEB等。

    1. ROS基础
      1. ROS简介

ROS(Robot Operating System)是一个开放式的操作系统,是一个集成了很多软件的工具集合。这个工具集集成了很多功能强大的软件库和工具,这些工具们可以帮助机器人开发者实现各种不同的功能,例如控制、感知、模拟等。ROS倡导以分布式系统架构的方式设计和编写机器人软件,在分布式系统中,各个组件之间的数据交换可以通过ROS提供的通信机制实现,并且在不同的计算机集群中运行ROS节点可以根据设计需要进行灵活组装。

在2007年,斯坦福大学人工智能实验室发起ROS。最初的概念就是希望可以构建一个统一的软件平台,让机器人研究人员和开发人员可以共享代码和知识,用来降低机器人开发的复杂度和成本,并且推动机器人应用的普及。当初ROS的设计也是基于视觉和激光传感器技术的,但是随着时间的推移,ROS已经变成是更为综合的机器人软件框架,涵盖了从硬件控制、运动规划、仿真、感知到高层行为决策等方面的内容。

ROS目前已经被广泛应用于机器人领域,包括教育、科研和商业应用。ROS社区的规模也在不断扩大,吸引了来自全球各地的机器人学家、软件工程师和机器人制造商的参与。不仅如此,ROS的生态系统也非常丰富多样,支持各种不同的硬件平台,例如常见的机器人控制器、嵌入式硬件、传感器、各种工具等等。同时ROS社区也提供了大量的开源软件包、教程和文档,让开发机器人的人们可以充分利用这些资源快速构建各种不同类型的机器人系统。

ROS有以下几个核心特性:

  1. 分布式架构:ROS采用分布式系统的架构方式,使得不同的组件之间可以采用不同的计算机进行运算,并利用ROS的通信机制进行信息交换。这种设计方式能够使得系统的耦合度较低,对扩展性、复用性和协作性都有很好的支持。
  2. 模块化和插件化:ROS的软件设计也是非常模块化和插件化的,这意味着各个模块之间的交互和接口设计都非常清晰明了,用户可以很轻松地添加、移除或者替换系统中不同的组成部分。这样的设计使得机器人开发和试验变得更加方便和快捷。
  3. 丰富的软件库:ROS自带了很多功能强大的开源软件库和工具,这些库和工具包括机器人感知和环境建模、运动规划和控制、可视化和仿真等各个方面。ROS社区也充满了创新和活力,不断有新的软件包和工具不断涌现。
  4. 功能强大的通信机制:ROS采用了基于消息传递和服务调用的通信机制,这种设计非常灵活和高效,可以被广泛用于机器人系统的控制和信息交换,同时其也支持多种不同类型的通信方式。
  5. 应用广泛:ROS是一个开源软件工具集,它被广泛应用在教育、科研和商业领域,且有越来越多的机器人制造商和硬件供应商将ROS作为其机器人产品的默认软件平台。

ROS是一个功能强大且非常灵活的机器人软件开发工具集,其应用已经被广泛采用于全球各种机器人系统的开发和运行。通过 ROS,机器人开发者可以轻松地实现各种不同的功能需求,且能够通过开源社区共享不同的代码和知识,这样的系统将有望实现机器人普及和应用到更多的领域和行业,以实现人类的社会和个人需求。

      1. ROS通信方式

ROS具有功能强大的通信机制,其通信方式包括发布/订阅模式和服务/客户端模式。在发布/订阅这种模式下,ROS节点可以发布数据到指定主题,其他节点可以订阅该主题以接收数据。而在服务/客户端模式下,节点可以提供服务供其他节点调用,或者向其他节点请求服务。此外,ROS还支持参数服务器,可以用于分布式系统的参数管理。在ROS的通信机制下,节点之间可以实现快速、可靠的数据交换,为ROS的广泛应用提供了坚实的基础。

        1. 话题通信

ROS的发布/订阅模式是一种基于消息机制的通信方式,它能够实现多个节点之间的信息交换。在这种模式下,节点可以发布消息到指定的主题(topic),同时其他节点也可以订阅该主题以接收消息。发布节点和订阅节点之间的通信交互采用异步方式进行,各节点之间没有直接关联。因此,发布者只需要发布数据到指定主题,而不需要关心其他节点是否接收到该数据。而订阅者也只需要订阅相应主题,当主题的数据更新时,ROS会自动通知订阅者。这种发布/订阅模式灵活、高效,由于其高度解耦,能够支持并行、分布式计算,是ROS中非常重要和常用的通信方式之一。

        1. 服务通信

ROS的服务/客户端模式也是一种基于消息机制的通信方式,相对于发布/订阅模式,它更加灵活,支持节点之间的双向通信。在这种模式下,节点可以提供服务供其他节点调用,或者向其他节点请求服务。当一个节点调用服务时,它会向服务节点发送请求消息(request),服务节点接收到消息后进行相应处理,并返回响应消息(response)给调用节点。服务节点和调用节点之间的通信采用同步方式进行,通信双方之间需要协商好请求和响应的格式,并且需要确定请求的参数和响应的数据类型。因此,服务/客户端模式也是ROS中非常重要和常用的通信方式之一,常见的应用场景包括机器人控制、传感器数据获取和图像处理等。

        1. 参数服务器

ROS的参数服务器是一种用于节点间消息传递和参数管理的机制。它可以让ROS中的各个节点共享和管理参数,支持实时访问和修改这些共享参数。ROS参数服务器是一个键值对(key-value)存储的数据库,包含了全局参数、节点参数和私有参数等多个级别的参数。参数可以用命令行工具(如rosparam)进行操作,也可以在ROS程序中通过API进行访问和修改。节点可以向参数服务器读写参数,也可以监听参数变化事件。这些参数的值可以用于程序中的各个部分,以控制机器人系统的行为。例如,参数服务器可以存储机器人的速度、位置等状态信息,一旦信息发生变化,消息将被广播到整个系统。这种参数管理机制非常方便,能够最大程度地提高程序灵活性和可重用性。

    1. ROS下ORB-SLAM2验证

为了验证ORB-SLAM2算法的性能,在ROS下对该算法的性能进行测试,并且采用另一个主流的视觉SLAM算法VINS-Mono和ORB-SLAM2进行对比。ORB-SLAM2和VINS-Mono是当前领先的视觉SLAM算法,都具有优秀的定位和地图构建能力,但其内部原理不同,各自存在一些局限性和优缺点。ORB-SLAM2基于特征点的方法,可以适用于多种类型的摄像头,并且运行速度较快;而VINS-Mono采用了IMU与单目视觉的融合技术,在数据质量较差、运动状态不稳定等极端情况下表现更加出色。

为了深入分析这两个算法的性能,我们在ROS平台下实现它们,并使用公开数据集进行测试。Evo是一个由ETH Zurich机器人感知团队开发的用于SLAM算法评估的工具,它的主要功能是计算和可视化SLAM算法的轨迹误差指标,包括APE(绝对位姿误差)和RPE(相对姿态误差)。

APE(Absolute Pose Error)指的是真实轨迹与估计轨迹之间的绝对误差。利用APE指标可以计算出整个轨迹中真实轨迹位姿与估计轨迹位姿之间欧氏距离的均值、中误差以及众数等信息,该指标广泛应用在SLAM系统性能评估中。

RPE(Relative Pose Error)则是相对姿态误差,这是一种用于衡量相邻帧间位姿误差的指标。它计算相邻帧间真实位姿和估计位姿之间的欧氏距离均值、中位数等,并可提供直观的可视化结果。

本文采用Euroc下的MH_01_easy.bag对这两种算法进行测试,MH_01_easy.bag数据集是Euroc提供的一个简单的视觉惯性数据集,因其具有较大的旋转位移,适用于一些初步的轨迹重建与SLAM算法的验证。如下图3-1为算法运行时的图片。

图3-1:ORB-SLAM2和VINS-MONO运行

由evo分析APE指标可以得到表3-1,RPE指标可以得到表3-2

RPE

VINS-MONO

ORB-SLAM2

Max

0.349640

0.024895

Mean

0.144195

0.011542

Median

0.140682

0.010196

Min

0.034505

0.002100

Rmse

0.154704

0.012960

Sse

43.487094

0.037121

Std

0.056047

0.005894

表3-1:APE指标

RPE

VINS-MONO

ORB-SLAM2

Max

0.021243

1.468995

Mean

0.002940

0.098319

Median

0.002484

0.067398

 Min

0.000002

0.003346

Rmse

0.003855

0.162463

Sse

0.026982

5.806728

Std

0.002493

0.129335

表3-2:RPE指标

可以看出在单帧图像的位姿估计上,对于MH_01_easy这一数据集,ORB-SLAM2是明显优于VINS-MONO,在二者的轨迹对比图如下图(3-2)也可以看出。但是对于连续帧之间的累计误差,VINS-MONO的表现要好于ORB-SLAM2。当然这两个算法的性能受限于各种环境的影响,例如当摄像头受到遮挡的时候或者数据较差的时候带IMU的视觉方法是要优于单纯的视觉方法的。

图3-2:ORB-SLAM2和VINS-MONO轨迹对比

    1. 机器人定位

机器人定位可以简单理解为:在周围环境已经知道的条件下去判断机器人在当前环境中的位置。机器人的定位问题是进行后续路径规划和导航的基础,只有明确机器人当前所处的位置才能做出下一步的决策。机器人定位问题可以用下图的模型描述。

图3-3:机器人定位模型

图中的

代表当前的环境,

为在

时刻机器人的控制输入量,

分别是机器人在

时刻在世界坐标系中的位姿,

时刻机器人观察到的环境信息。从图中可以看出机器人的当前位姿

是基于上一个时刻

,在输入了控制量

之后得到的,同时机器人当前时刻的观测信息

可与地图

进行比较从而估算定位的准确度。

      1. 机器人定位问题分类

机器人定位问题可以大致分为以下几大类,全局定位,局部定位,和重定位等。

如果机器人的初始位姿是位置的,这类定位问题可以归结为全局定位,在地图中机器人可能出现在任何一个位置,机器人获取信息的来源是自身所携带的传感器。

如果机器人的初始位姿是已知的,这类问题则可以归结为局部定位,同样机器人通过自身的传感器获取周围局部的信息从而实现局部定位。

如果在运动或者是自主导航过程当中,机器人丢失了当前的位置信息,则需要重定位来重新定位自身在地图中的位置。

      1. 蒙特卡洛定位

在SLAM建立好周边的环境之后,如下公式,机器人的位姿可以表示为过去所有时刻的观测量

和控制量

的后验分布:

上述后验分布的求解方法为:首先根据当前的

和上一刻的后验

可以求解出当前时刻的先验分布

,然后结合当前时刻的观测量求解:

可得:

其中

为归一化的系数。在机器人定位中,常用蒙特卡洛定位算法(MCL)来实现机器人定位。蒙特卡洛定位是一种基于粒子滤波算法的定位方法,他成功的把运动模型和观测模型融入到粒子滤波算法中以实现定位功能,主要分为三个步骤。

首先第一步要初始化粒子群,把M个粒子在地图上进行均匀分布。假如机器人的初始位姿已知,也就是进行局部定位,那么只需要设定好种群的大小,并复制相同数量的个初始位置作为初始种群即可。假如机器人的初始位姿是未知的,也就是进行全结局定位,可以采用高斯分布随机分配M个粒子。

分配好粒子之后需要模拟粒子运动,计算粒子的权重。模拟粒子运动又叫粒子采样,在采样的过程中,机器人按照运动模型进行运动,同时在运动过程中,传感器会测量当前的各个参数,这些参数反应当前位置和机器人真实位置的匹配程度,在此基础之上计算第

个粒子的权重

,其含义是任意粒子

在地图m中观测到

的概率,即

最后需要进行粒子重采样,对于已经采集好的粒子,各自都对应一个权重,对于那些权重比较大的会被重新抽取放入一个新的粒子集。因而重采样之后的粒子群会发生变化,那些被重新采样到的是与机器人真实位姿更为接近的,相反那些权重比较低的,也就是与机器人真实位姿相差大的会被剔除新的粒子集。

对粒子群重采样之后需要重复上述步骤一直到机器人的运动结束便可以得到最后机器人的位置。

    1. 路径规划与导航
      1. 基于Dijkstra的全局路径规划算法

迪杰斯特拉算法是常用的用于寻找两点之间最优路径的算法,是一种基于图理论的算法,主要思想是贪心的思想,在搜索的过程中会以原点中中心点不断向外扩展直至找到终点。在搜索的过程中,会将当前要访问的节点的相邻的节点放入待访问的集合,在当前节点访问完毕之后,选取待访问集合中从起点出发实际代价最小的节点作为下一个访问节点。这种搜索方式以起点作为参考点,但是毫无方向性,虽然能够找出最短的路径,但是需要一直遍历到终点才能找到这条最短路径,搜索空间相对较大,效率低下。

      1. 基于A*的全局路径规划算法原理及实现

A算法是一种常用的全局路径规划算法,是从Dijkstra算法发展而来的,但是又和Dijkstra算法不同,它是一种启发式搜索算法,基于启发式函数评估搜索过程中的候选路径的优先级。相比其他的路径规划算法, A算法能够更快速、更精确地找到最优路径,特别适用于大规模的地图和高维的状态空间。

在搜索的过程中A*算法会充分利用自己已知的信息,例如当前位置到目标位置的代价做出选择,而不是无方向性地进行搜索。A*考虑的代价主要包含两个方面,一个是当前栅格到目标栅格的代价距离,以及起点栅格到当前栅格的代价距离,其主要思想是定义当前栅格M的估价函数

,估计函数的定义如下:

其中G(M)表示从起始栅格X到当前栅格M的实际代价距离,H(M)表示从当前栅格单元M到终点栅格Y的最小估计代价距离。H(M)的定义当时有很多种,当前也有许多学者根据不同的环境研究不同的H(M)来适应不同的应用场景,但是H(M)必须满足一个条件:不能小于当前栅格到目的地栅格的实际代价距离。算法搜索从起始的栅格开始,每次搜索的方向是F(M)最小的方向,直至搜索到终点栅格找到最优路线。

估计函数H(M)有两种重要的定义方法,分别是曼哈顿距离和欧几里得距离,在实际计算中各有优劣,需要根据使用场景灵活选用。

(1)欧几里得距离:

欧几里得距离(Euclidean distance)表征的含义就是两点之间的直线距离,是通过计算两个点之间的直线距离来衡量它们的距离。在二维空间中,欧几里得距离公式为:

其中,

表示两个点的坐标。欧几里得距离的计算是基于直角三角形的斜边长度,它表示了两个点之间的最短直线路径。

(2)曼哈顿距离:

其中,(x1, y1)和(x2, y2)表示两个点的坐标。欧几里得距离的计算是基于直角三角形的斜边长度,它表示了两个点之间的最短直线路径。曼哈顿距离的计算公为:

在A算法中,这两种距离函数都可以用作启发式函数(heuristic function),用于估计两个节点之间的距离。启发式函数是A算法中的一个关键部分,它提供了一个估计值,帮助算法决定搜索方向和优先级。选择合适的启发式函数可以有效地引导搜索过程,加快路径搜索速度并找到最优解。

在选择欧几里得距离或曼哈顿距离作为启发式函数时,需要考虑地图的特点和搜索的要求。欧几里得距离适用于地图中没有障碍物或障碍物分布均匀的情况,因为它是基于直线路径的最短距离。曼哈顿距离适用于地图中存在大量障碍物或障碍物分布不均匀的情况,因为它能够沿着垂直和水平方向避开障碍物,提供更准确的路径长度估计。

    1. ROS下A*算法仿真验证
      1. 基于代价地图的路径规划环境模型

在获取移动机器人所需要的栅格地图之后就可以对移动机器人进行路径规划。但是移动机器人的路径规划不仅仅需要静态的全局地图,由于环境中可能存在移动的障碍物,因为还需要动态的全局地图,根据实时的场景不断调整规划的路径来实现动态的路径规划,基于上述的需求,引入ROS路径规划中的代价地图(costmap)。

代价地图的表示基于栅格地图,每一个栅格都有其对应的代价值,这些代价值的作用在路径规划中会得到体现。代价值的数值从0到255之间,根据其数值的大小可以将每一个栅格分为未知区域,占用区域和自由区域。未知区域表示该区域并没有被SLAM探测到,机器人是否可以通过未知区域可以根据实际情况自由设定,占用区域代表的含义就是障碍物,在路径规划中是要严格避开的,也就是机器人严禁通过该区域,自由区域表示在之前的SLAM建图过程中已经被探测到是没有障碍物的,可以理解为机器人能够通过的区域。

为了满足机器人实时导航的功能,代价地图被分为全局代价地图和局部代价地图。全局代价地图的作用是结合用全局路径规划算法计算出一条从出发点到目的地的全局代价最小的路线。而局部代价地图的作用则是根据传感器实时测量的障碍物信息,在机器人周围规划出一条局部最优路线。虽然这两个地图生成的目的不同,但是他们都是基于栅格地图,并且都由多个图层叠加。

代价地图主要由三个图层组成:静态层(static layer)、障碍物层(obstacle layer)和膨胀层(infla layer)。如下图(3-3)静态层就是SLAM建图的时候由机器人传感器采集建立的地图,一旦建立好之后就确定不变,这样意味着这张图层包含的就是一些静态的信息。障碍物层是在进行路径规划和导航的时候机器人的传感器根据周围信息实时测量得到的信息图层,他的主要作用就是在机器人移动的时候为机器人实时提供障碍物信息。膨胀层的定义更为灵活,可以理解在机器人周围自动加一层保护壳,这些保护壳为了保护机器人也不可以和障碍物进行接触,因为在路径规划的时候也会被绕开。膨胀层的一个重要参数是膨胀半径,代表的含义就是机器人周围保护壳的半径大小,可以根据实际需求自行设置,保证机器人和障碍物之间有一定的缓冲区,减少行驶过程中意外的发生。

图3-4:代价地图模型

      1. A*算法及其性能验证

针对A*算法,我们在ROS下对其进行验证并用Dijkstra算法的性能和A*对比。本次实验测试采用ROS系统下的Gazebo机器人仿真环境,利用生成的地图数据,分别运行A算法和Dijkstra算法,并统计这两种算法在不同情况下的搜索路径长度和运行时间和执行时间。

在仿真过程中采用两个大小不一样的地图,分别为20*20的小地图和100*100的大地图。每次测试取三次实验数据的平均值以减少误差,最终得到以下表格。

地图大小

指标

A*

Dijkstra

20*20

路径长度(m)

19

27

运行时间(ms)

0.16

0.23

执行时间(s)

16

26

100*100

路径长度(ms)

67

128

运行时间(s)

0.59

1.28

执行时间(s)

84

143

对于小规模地图来说(20x20),A算法和Dijkstra算法的运行时间相差不大,但是A算法找到的路径更短。

随着地图规模的增加,A算法与Dijkstra算法寻路的时间增长速度都会呈指数级别上升,但是A算法始终保持较低的运行时间,且找到的路径更短。

尽管A算法和Dijkstra算法均为最短路径问题提供了有效解决方案,但是在实际应用中,由于A算法具有更低的运行时间和更短的路径长度,在寻找最短路径问题中表现得更加出色。

因而可以得到如下结论;在相同输入条件下,A算法在搜索路径长度和运行时间方面均优于Dijstra算法。不仅如此,随着地图规模的增加,A算法的性能表现进一步突出,其表现远胜于Dijkstra算法。这表明A*算法在解决实际问题中具有更高的效率和精度。

结 论

ORB-SLAM2具有计算量小实时性强等优点是主流视觉SLAM中较为优秀的算法,在条件良好的情况下ORB-SLAM2的建图与定位性能也比较突出,但是ORB-SLAM2也存在一定的缺陷,在环境恶劣的条件下ORB-SLAM2的表现不如带有惯导的视觉SLAM算法。A*算法作为一种启发式的搜索方法应用十分的广泛,他的搜索范围和搜索时间要由于Dijlstra算法,并且在后期也有许多可以开发和优化的地方。

致 谢

感谢中国共产党。

参 考 文 献

[1]Cesar, Cadena, Luca,等. Past, Present, and Future of Simultaneous Localization and Mapping: Toward the Robust-Perception Age[J]. IEEE Transactions on Robotics, 2016.

[2]陈星筑. 基于ORB视觉SLAM半稠密三维建图方法研究[D].电子科技大学,2021.DOI:10.27005/d.cnki.gdzku.2021.004966.

[3]韩波. 面向动态环境的视觉SLAM技术研究[D].浙江大学,2021.DOI:10.27461/d.cnki.gzjdx.2021.000351.

[4] Mur-Artal R , JD Tardós. ORB-SLAM2: An Open-Source SLAM System for Monocular, Stereo, and RGB-D Cameras[J]. IEEE Transactions on Robotics, 2017.

[5] Rublee E ,  Rabaud V ,  Konolige K , et al. ORB: an efficient alternative to SIFT or SURF[C]// IEEE International Conference on Computer Vision, ICCV 2011, Barcelona, Spain, November 6-13, 2011. IEEE, 2011.

[6] Calonder M ,  Lepetit V ,  Strecha C , et al. BRIEF: Binary Robust Independent Elementary Features[J]. Springer, Berlin, Heidelberg, 2010.

[7]饶尊煜. 基于ORB-SLAM2的特征提取与建图技术研究[D].宁夏大学,2021.DOI:10.27257/d.cnki.gnxhc.2021.001283.

[8]杭程. 面向动态场景的视觉SLAM系统研究[D].南京邮电大学,2022.DOI:10.27251/d.cnki.gnjdc.2022.001719.

[9]石庠. 双目SLAM导航智能小车[D].南京航空航天大学,2020.DOI:10.27239/d.cnki.gnhhu.2020.000919.

[10] Mur-Artal R ,  Montiel J M M ,  Tardos J D . ORB-SLAM: A Versatile and Accurate Monocular SLAM System[J]. IEEE Transactions on Robotics, 2015, 31(5):1147-1163.

[11] Tong Q ,  Li P ,  Shen S . VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator[J]. IEEE Transactions on Robotics, 2017, PP(99):1-17.

[12] Sturm J ,  Engelhard N ,  Endres F , et al. A benchmark for the evaluation of RGB-D SLAM systems[J]. IEEE, 2012.

[13] Kerl C ,  Sturm J ,  Cremers D . Robust Odometry Estimation for RGB-D Cameras[C]// Robotics and Automation (ICRA), 2013 IEEE International Conference on. IEEE, 2013.

[14]朱大奇,颜明重.移动机器人路径规划技术综述[J].控制与决策,2010,25(07):961-967.DOI:10.13195/j.cd.2010.07.4.zhudq.014.

[15] Guan R P ,  Ristic B ,  Wang L . Combining KLD-sampling with Gmapping proposal for grid-based Monte Carlo localization of a moving robot[C]// International Conference on Information Fusion. IEEE, 2017.

[16]王辉. 基于ROS的机器人路径导航系统的设计与实现[D].中国科学院大学(中国科学院沈阳计算技术研究所),2019.

[17]宋凯. 基于激光SLAM的室内移动机器人定位可靠性增强策略研究[D].山东大学,2022.DOI:10.27272/d.cnki.gshdu.2022.003326.

[18]张文. 基于多传感器融合的室内机器人自主导航方法研究[D].中国科学技术大学,2017.

[19]赵宏昊. 基于激光SLAM的移动机器人自主导航技术研究[D].山东大学,2022.DOI:10.27272/d.cnki.gshdu.2022.004105.

[20]钟敏. 基于视觉与激光雷达融合的移动机器人自主导航研究[D].哈尔滨工业大学,2021.DOI:10.27061/d.cnki.ghgdu.2021.001327.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值