基于ROS和视觉SLAM的室内导航机器人研究
2024-02-21方育鑫林盛鑫史礼帆任斌
方育鑫 林盛鑫 史礼帆 任斌
(东莞理工学院 国际微电子学院,广东东莞 523808)
随着科技的不断发展和人工智能的迅速进步,智能化机器人技术应用在生活中的逐渐普及,自主导航与环境感知成为机器人领域的重要研究方向。自主导航能够使机器人具备在未知环境中自主移动和完成任务的能力,广泛应用于无人车、无人机、服务机器人等领域。移动机器人的实时定位和地图构建是实现自主导航的关键。通过感知和理解环境信息,机器人可以进行路径规划、障碍物避障等操作。因此,研究自主导航与环境感知对于推动机器人技术发展具有重要的科学意义和应用价值。
国内外在自主导航与环境感知方面的研究取得了一系列重要成果。在自主导航方面,国外的ROS(Robot Operating System)系统成为广泛使用的开源平台,提供了强大的功能和工具支持。国内的相关研究也取得了许多进展,如无人车、智能家居等领域的应用逐渐增多。在环境感知方面,深度相机、激光雷达等传感器设备的发展和进步使得机器人能够获取更加准确和丰富的环境信息。
本研究旨在基于ROS系统和深度相机,实现小车的自主导航与环境感知功能。具体研究内容包括视觉SLAM(Simultaneous Localization and Mapping)技术、路径规划算法和定位算法。通过研究这些技术,设计合理的系统架构,实现小车在室内环境中的自主导航和定位。
1 系统设计
1.1 ROS介绍
ROS是一个开源的机器人操作系统,提供了一套功能丰富的工具和库,用于构建机器人的控制系统。ROS采用模块化的设计理念,利用ROS基于节点的通信模型和消息传递机制,使得不同模块之间可以进行高效的数据交换和协同工作。这为将视觉SLAM算法与移动机器人平台的集成提供良好的基础。在本研究中,选择ROS作为软件开发平台,以便快速开发和集成各个模块,并与深度相机进行数据交互和控制。
1.2 深度相机原理与选择
视觉传感器成为机器人系统中被广泛使用的感知设备,相比于激光雷达,具有获取丰富、高维度信息的优势。在本研究中,使用RGB-D相机作为主要的感知设备,RGB-D能够获取环境的RGB图像和图像深度信息。RGB-D获取深度信息的主要原理是利用结构光技术,相较于双目深度相机,RGB-D对计算机的计算性能要求较小。它具有功耗低、采集视角广的特点,支持2 m内的环境深度数据采集和最高1 280*960精度的RGB图像采集性能,基本满足室内测试要求。
1.3 硬件平台搭建
小车由三层金属板构成基本框架,上层通过固定件安装深度相机和激光雷达,以便更好地获取环境。中层装有树莓派4B、STM32、里程计、IMU传感器等核心器件,其中树莓派4B安装ROS系统作为控制核心,将树莓派安装于中层有利于和各个传感器进行连接,确保数据交互的稳定。小车底盘采用两轮差速驱动结构,该结构由两个驱动轮和一个支撑轮组成,其中两个驱动轮可以实现前进、后退和旋转功能,具有尺寸小巧、机动性高等优点,适应多样化的环境和任务需求。通过单独控制左右两个驱动轮的转速差异,可以实现精确的方向控制。
1.4 系统结构
移动机器人软件系统结构由三大模块组成,分别是控制模块、感知模块和驱动模块,系统结构图如图1所示。基于ROS的通讯机制——一种节点的分布式框架,每一个节点都可以独立运行,节点可以分布于主机和各个从机中,从而分散计算压力。各个模块之间可以独立工作,并通过消息传递进行数据交互。
图1 系统结构图
控制模块由树莓派4B和PC构成,树莓派4B作为主机,PC作为从机,在分布式通讯下进行通信,利用地图构建算法、路径规划算法和定位算法处理感知模块数据,并进行决策和控制小车的运动。感知模块由深度相机、激光雷达和里程计等传感器组成,负责获取环境信息,每一个传感器作为一个节点,节点和主机之间可以进行数据交互,为后续机器人实现自主导航和定位提供数据。执行模块驱动底盘,负责将控制模块的命令执行。
通过良好的软件系统架构设计,实现了各个模块的协同工作和功能整合。
2 RTAB-MAP算法
RTAB-Map(Real-Time Appearance-Based Mapping)算法是一种实时的基于外观的SLAM算法,是视觉SLAM算法的一种,主要使用RGB-D相机数据来实时定位和构建三维稠密地图。视觉SLAM基础框架包括:视觉里程计、位姿优化、闭环检测、制图,RTAB-MAP算法针对性地解决了视觉SLAM中闭环检测出现的问题。RTAB-MAP算法在2019年进行扩展升级的基于内存管理的闭环检测技术[1],该技术针对SLAM的实时性将定位点数据分为3个部分:STM(Short-Term Memory)、LTM(Long-Term Memory)、WM(Work Memory),在构建实时地图和同步定位有更高的精确性和实时性。
2.1 RTAB-MAP算法闭环检测技术原理
SLAM要求有实时性,但视觉传感器在实际获取数据时是源源不断的,将地图全部定位点数据称为“全部定位点”,将“全部定位点”进行闭环检测与匹配定位所需时间过长,不能满足实时性,所以在闭环检测时只使用“全部定位点”中的“部分定位点”。但有时需要对“全部定位点”进行访问,这时就需要对定位点数据进行管理,RTAB-MAP将这些数据分为3个部分,即LTM、STM、WM, RTAB-MAP会将那些不太可能形成闭环的定位点从WM转移到LTM中,这些转移的点将不参与下次闭环检测,因此选择哪些WM中的定位点转移到LTM中非常重要。RTAB-Map的思想是假设频繁访问的定位点比其他定位点更容易形成闭环,因此,一个定位点被连续访问的次数可以用来衡量它形成闭环的权重。当WM转移定位点到LTM时,优先选择具有最低权重的定位点,如果具有最低权重的定位点有多个,则选择存储时间最长的那个。对于具有形成闭环概率最高的那个定位点,将它的那些没有在WM中的邻接定位点重新从LTM中取出放回到WM中,通过“取回”和转移这两个操作灵活地管理不同数据库中存储的定位点[2]。
RTAB-Map闭环检测时不使用STM中的定位点。当STM定位点达到一定数量时,STM中存储时间最长的定位点移动到WM中。RTAB-Map使用离散贝叶斯滤波器估计闭环形成概率,将新的定位点与WM中的定位点进行比较。发现新旧定位点之间有高概率形成闭环时,就检测到一个闭环,并将它们连接在一起。
2.2 RTAB-MAP算法闭环检测技术基本流程
1)创建定位点:使用词袋法创建图像的签名,利用词袋法提取从相机取得的图像特征的视觉词汇向量[3]。词袋法具体步骤:首先提取图像特征,然后通过聚类算法(如K均值聚类)对大量图像特征描述子进行聚类,构建视觉词典,最后通过词典中的单词的关键点数量形成图像签名,以在线增量式的方法创建定位点。
2)权重更新:通过相似度s来更新定位点权重,相似度由公式(1)表示
(1)
Npair表示匹配定位点签名间的单词对个数,Nzt和Nzc分别表示签名Zt和Zc的总单词数目。
3)贝叶斯过滤器更新:估计当前定位点Lt和存储在WM中的定位点形成闭环的概率来记录闭环假设。
4)闭环假设选择:当一个闭环假设成立,新的定位点Lt则和旧的定位点建立起了闭环,并对定位点Lt的权重进行更新。
5)取回:对于具有形成闭环概率最高的那个定位点,将它的那些没有在WM中的邻接定位点,从LTM中取出放回到WM中。
6)转移:当图像数据处理时间超出一定阈值时,将WM中权重最低且存储时间最长的定位点转移至LTM。
2.3 地图构建
经过闭环检测后,RTAB-Map算法将构成闭环的定位点采用GTSAM(GeorgiaTech Smoothing and Mapping)地图优化策略进行处理[4]。这一步骤的目的是将局部地图拼接成全局地图,提升整体建图的准确性和一致性。在闭环重构过程中,每次产生回环时都会对全局地图进行重构,也就是将闭环中的帧和新的特征点集成到全局地图中,以便不断完善和更新整个地图。这样的重构过程将持续进行直到不再检测到新的图像帧时停止。
通过这样的闭环处理和全局地图拼接,RTAB-Map算法能够实现更准确、一致且完整的地图构建,适用于各种机器人应用场景,提供更可靠的导航和定位服务。
3 路径规划与定位
ROS小车的路径规划和定位是基于ROS的move_base和amcl功能包来实现的[5]。
move_base是ROS中一个重要的导航功能包,它通过全局路径规划和局部路径规划的组合,实现了机器人的自主导航和避障功能。
定位是指通过传感器获取机器人当前的位置,使机器人能够知道自己在哪里[6]。在ROS中,常用的定位算法是AMCL(Adaptive Monte Carlo Localization)。
路径规划和定位在ROS中是紧密结合的,路径规划需要依赖定位信息来获取机器人的当前位置,而定位则需要路径规划提供的地图等信息来更准确地估计位置。通过结合路径规划和定位,ROS小车可以在已知环境中进行导航和避障,实现自主移动功能。
3.1 路径规划算法
3.1.1 A*算法
A*(A-star)算法是一种有效的寻路算法,它结合了Dijkstra算法和BFS算法的算法优势[7]。有效地找到起始节点和目标节点之间的最短路径。原理图如图2所示,A*算法的基本流程如下:
图2 A*算法原理
1)初始化:从定义一个起始节点和一个目标节点开始,给起始节点赋一个0的代价值,创建OpenList和CloseList,并将起始点放入OpenList。
2)选定节点:从OpenList中选择总代价最小的节点,如果这个点是终点,那么得到最短路径;如果不是终点,将选定的节点从OpenList移动到CloseList,表明它已经被访问过。
3)扩展节点:生成当前选定节点的邻居节点,并计算它们的当前代价,如果邻居节点不在OpenList中或者其当前代价小于当前节点的当前代价,就将这个邻居节点加入OpenList。
4)重复步骤2)、3):继续选择总代价最小的节点,扩展其邻居节点,更新代价,将邻居节点添加到OpenList的过程,直到找到目标节点或OpenList中没有更多节点。
5)回溯路径:一旦到达目标节点,使用存储在每个节点中的父节点信息,每个节点都有一个父节点,表示当前节点是从哪个节点扩展而来的。回溯从目标节点到起始节点的路径,这条路径表示从开始节点到目标节点的最短路径。
A*算法背后的关键思想是使用启发式函数来估计从每个节点到目标的代价。代价计算公式为
f=g+h,
(2)
其中f为总代价、g为当前代价、h为预估代价。
这种启发式算法通过优先考虑估计代价较低的节点来引导搜索,使算法首先探索最有希望的路径。通过同时考虑实际成本和启发式成本,A*在寻找最优路径和计算效率之间取得了平衡。
3.1.2 DWA
DWA(Dynamic Window Approach)算法是一种用于移动机器人路径规划和局部避障的经典算法。DWA算法是在速度空间中采样多组数据,并模拟移动机器人以这些速度在下一时间段内的轨迹并对轨迹进行评价,选取最优轨迹对应的速度来驱动机器人运动[8]。DWA算法通过动态窗口的选择和评估函数的计算,实现了移动机器人在复杂环境中的安全导航和路径规划。
1)机器人模型:假设v(t)和w(t)分别表示机器人在世界坐标系下t时刻的线速度和角速度,Δt表示采样周期,机器人在Δt内,近似作直线运动。机器人运动模型如式(3)
(3)
其中x(t)、y(t)、θ(t)表示t时刻机器人在世界坐标系下的位姿。
2)速度采样:动态窗口法将避障问题描述为速度空间中带约束的优化问题[9],根据环境因素和硬件结构的速度空间中的多组速度进行约束。
机器人最大速度和最小速度的约束为
(4)
加减速度约束:受电机性能的约束,模拟机器人采样周期内的速度被约束在一定范围内[10]。
(5)
其中vc、wc表示当前速度,vb、wb表示最大减速度,va、wa表示最大加速度。
机器人安全距离约束:机器人在移动过程中需要考虑当前速度以最大减速度减速时是否会与障碍物发生碰撞,在这一背景下对机器人移动速度存在一定约束。
(6)
其中dist(v,w)是机器人以速度,(v,w)估计时离障碍物的最短距离。
3)评价函数:如果在速度空间中存在多组可行的采样速度,则需要使用适当的评价函数进行细致地评价以确定最优轨迹。DWA算法中采用的评价函数指标综合了多种因素,包括偏置角、线速度、仿真轨迹终点与遇到障碍物的最近距离。该算法通过对潜在轨迹的评估函数,识别出最适合机器人运动的路径,保证了机器人在复杂环境下的导航和移动的安全性。
评价函数为
G(v,w)=σ(αhead(v,w)+
γuel(v,w)+βdist(v,w)),
(7)
其中α、γ、β表示加权系数,head(v,w)表示轨迹终点和目标点的方向角偏差,uel(v,w)用于评价当前速度,dist(v,w)表示与当前路线障碍物的距离的最短距离。
3.2 全局定位
在地图中实现机器人的全局定位可以采用AMCL功能包。AMCL是一个在ROS中广泛使用的定位功能包,它基于自适应蒙特卡洛定位算法,能够实现机器人在地图中的定位。它结合了机器人传感器数据和已知地图信息,通过生成一组粒子来表示机器人在地图上的可能位置,并根据传感器数据的更新对这些粒子进行重采样,以提高定位的精确性和稳定性[11]。
使用AMCL功能包可以方便地在ROS中实现机器人的定位功能。它提供了参数配置、消息发布和订阅等接口,可以与地图构建、路径规划等其他功能包进行集成,实现完整的机器人导航系统。
4 实验结果与分析
4.1 室内建图实验
在一个室内场景中分别测试移动机器人用激光雷达和用深度相机进行建图。首先确保小车和PC连接到同一个TP-link wifi下,在PC端通过小车IP配置分布式通讯;然后启动雷达SLAM的launch文件,深度相机SLAM则启动rtabmap的launch文件,再启动键盘控制节点和rviz可视化界面,控制小车遍历实验场景完成建图,如图3所示。
图3 激光雷达建图
4.2 室内导航实验
分别测试移动机器人用激光雷达和用深度相机进行导航。利用上一个实验完成的建图进行导航,分别启动激光雷达和深度相机导航的launch文件,这里需要注意的是相机只有前向视野,所以在进行深度相机导航时只允许小车进行前向运动。在rviz可视化界面为小车指定目标点,小车进行自主导航顺利到达目标点,如图4所示。
图4 深度相机建图
4.3 实验分析
基于ROS系统,在室内建图实验中,激光雷达的建图(如图5所示)在精确度上优于用深度相机建图(如图6所示),深度相机所构建的三维深度图在地图轮廓上准确性。深度相机的优势在于它能够提供丰富的空间地图维度信息,包括物体的形状、纹理和颜色等。在室内导航实验中,运用激光雷达和深度相机进行导航移动机器人都能合理规划路径实现自主导航和避障,激光雷达导航得益于其建图的精确性,更适用于二维平面场景的使用。但是,如果对于空间维度信息的丰富性和感知能力更为重要,深度相机则提供了更多优势和可能性。
图5 激光雷达导航
图6 深度相机导航
5 结语
介绍了ROS作为一个灵活、强大的机器人开发框架的优势,并解释了其在导航系统中的重要性;然后,介绍了深度相机的工作原理和应用;接着讨论了建图算法和路径规划算法的原理与实现,通过将导航算法与深度相机数据结合起来,能够实现自主导航和动态避障;最后,进行了实验验证。实验结果表明,基于ROS和深度相机的导航小车能够完成导航和避障,具有广泛的应用潜力。
结合ROS的强大功能和深度相机的感知能力,随着技术的不断进步,这将为机器人导航领域带来更多可能性和创新;期待未来能够看到更多基于ROS和深度相机的智能导航解决方案的出现。