还在用AMCL定位吗?快试试这个SLAM工具
-
大家好,我是爱学习的小鱼,今天推荐一个ROS2中的开元SLAM库,大家知道Nav2的默认定位模块是AMCL,它根据已知地图,雷达Scan数据和里程计完成定位,虽然可以利用静态地图作Scan-To-Map 来提高定位精度,但现实世界中的地图往往是动态更新的,显然一直使用某一张地图并不能满足我们的需求,SLAM-Toolbox就提供了一个动态的SLAM解决方案(以前在公司的时候都是修改Cartography来实现的),下面是详细介绍。
SLAM Toolbox:动态世界的SLAM解决方案
SLAM Toolbox 是一个强大的开源库,专为动态环境中的二维SLAM(同时定位与地图构建)而设计。该项目由 Steve Macenski 在 Simbe Robotics 创立,并在他在三星研究院的期间以及业余时间进行了维护和更新。SLAM Toolbox 不仅提供了常规的移动机器人所需的 2D SLAM 功能,如启动、绘图、保存地图等,还包括了一些高级特性,如地图的连续细化、重映射、以及基于优化的定位模式等。
核心功能与AMCL对比
SLAM Toolbox 的设计目标是提供一个比其他SLAM库(无论是免费还是付费的)更全面的解决方案。其核心功能包括:
- 基础2D SLAM:允许用户启动地图构建,保存为PGM文件,同时提供了地图保存等实用工具。
- 序列化和反序列化:能够在任何时间点加载已保存的位姿图(pose-graph),继续地图的绘制或修改。
- 终身映射:加载已保存的位姿图,继续在空间中绘图,同时从新加入的扫描中删除多余的信息。
- 优化基定位模式:在没有先验地图的情况下,通过位姿图进行“激光里程计”模式定位,支持本地闭环。
与AMCL(自适应蒙特卡罗定位方法)相比,SLAM Toolbox 提供了更为动态和灵活的地图处理能力。AMCL主要用于在已知地图中进行定位,而SLAM Toolbox 则允许用户不仅进行定位,还可以继续更新和优化地图。此外,SLAM Toolbox 支持的“终身映射”功能使得它可以在长时间内持续更新地图,这是AMCL所不支持的。
高级应用
除了基础的地图绘制和保存功能,SLAM Toolbox 还提供了几种高级应用:
- 生命周期管理:在多次会话中对同一区域进行映射,允许用户创建和更新现有地图,并将数据序列化以供其他映射会话使用。
- 动态本地化:将现有的序列化地图加载到节点中,维护最近扫描的滚动缓冲区,并在缓冲区过期后移除扫描,但不影响底层地图。
支持和贡献
SLAM Toolbox 在多种环境(如零售、仓库、图书馆和研究环境)中已被广泛应用。对于在生产环境中使用的机器人,建议使用SLAM Toolbox的Snap版本,其进行了优化,速度提升约10倍。此外,如果遇到使用或配置问题,可以在 ROS Answers 上发帖求助,或在GitHub上提交问题和功能请求。
安装和配置
SLAM Toolbox 支持通过ROS2进行安装和运行,具体的安装命令如下:
rosdep install -q -y -r --from-paths src --ignore-src apt install ros-$ROS_DISTRO-slam-toolbox
运行时,可以通过
ros2 launch slam_toolbox online_sync_launch.py
命令启动在线同步模式。结语
SLAM Toolbox 不仅为研究人员和工程师提供了一个功能丰富的SLAM库,还通过其开源的方式,鼓
励了更广泛的社区合作和知识共享。无论是在工业应用还是学术研究中,SLAM Toolbox 都展现了其卓越的性能和灵活性,使其成为当前最受推荐的ROS2-SLAM库之一。