6.4.4 SLAM 建图
最新版本:2025/09/12
简介
SLAM(Simultaneous Localization and Mapping)即同时定位与建图,通过传感器数据对环境进行实时建模并构建地图,同时估计机器人的位置和姿态,为机器人导航提供感知信息。
本示例演示在仿真环境与实车运行两种场景下实现 SLAM 建图。
仿真建图
本小节基于仿真机器人小车模型,使用 SLAM 算法进行建图,并通过 Gazebo 与 rviz 观察机器人小车运行与建图效果。
其中 SLAM 算法运行在 SpacemiT RISC-V 系列板子上,仿真机器人小车模型、Gazebo仿真环境、rviz 可视化运行在与板子同一网段的PC上。
SpacemiT 板子上已配置了 slam_gmapping、slam_toolbox、cartographer 三种 SLAM 算法的一键启动流程,可任选其一实现建图功能。
三种SLAM算 法的对比:
对比项 | slam_gmapping | slam_toolbox | cartographer |
---|---|---|---|
建图精度 | 中 | 高 | 高 |
图优化/回环检测 | 无 | 有 | 有 |
重定位支持 | 无 | 有 | 有 |
资源占用 | 低 | 中等 | 高 |
适用地图范围 | 小 | 中等 | 大 |
适用机器人类型 | 小型 | 中/大型 | 中/大型 |
累计误差 | 高 | 低 | 低 |
准备工作
- SpacemiT 板子烧录 Bianbu ROS 系统镜像 。
- PC 端安装 ros-humble 及 Bianbu Robot SDK。
使用介绍
启动仿真环境
在 PC 端打开终端,输入以下命令安装机器人小车模型与 Gazebo 仿真环境。
sudo apt install ros-humble-gazebo*
sudo apt install ros-humble-turtlebot3
sudo apt install ros-humble-turtlebot3-gazebo
sudo apt install ros-humble-turtlebot3-bringup
sudo apt install ros-humble-turtlebot3-simulations
安装完毕后,输入以下命令加载机器人模型,并启动 Gazebo 仿真环境。
source /opt/ros/humble/setup.bash
source /usr/share/gazebo/setup.sh
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
成功启动后,仿真环境如下图所示:
PC 端打开另一个终端,输入以下命令启动 rviz 可视化运行。
source /opt/ros/humble/setup.bash
ros2 launch turtlebot3_bringup rviz2.launch.py
rviz2
按照下图所示顺序,依次点击add、选择map、修改话题格式为/map:
机器人仿真环境启动完毕后,在 SpacemiT 板子上根据需求选择任一 SLAM 算法进行建图,三种 SLAM 算法的启动方式如下。
slam_gmapping 建图
gmapping 是一种基于粒子滤波(Particle Filter)的 2D SLAM 算法,基于激光雷达数据在未知环境中构建地图,同时估计机器人位姿。
github地址:https://github.com/ros-perception/slam_gmapping
slam_gmapping 算法已预装在 SpacemiT 板子内,直接打开 SpacemiT 板子终端输入以下命令启动 slam_gmapping 建图
source /opt/bros/humble/setup.bash
ros2 launch br_localization slam_gmapping_sim.launch.py
slam_toolbox 建图
slam_toolbox 是一套用于 ROS 2 的 2D 同时定位与建图(SLAM)工具包,适合实时建图、离线优化、闭环检测和持久地图管理。
github地址:https://github.com/SteveMacenski/slam_toolbox
SpacemiT 板子打开终端输入以下命令安装 slam_toolbox 算法
sudo apt install ros-humble-slam-toolbox
输入以下命令启动 slam_toolbox 建图
source /opt/bros/humble/setup.bash
ros2 launch br_localization slam_toolbox_sim.launch.py
cartographer建图
Cartographer 是 Google 开源的一个可跨多个平台和传感器配置,以2D/3D 形式提供实时同时定位和建图的系统。
github地址:https://github.com/cartographer-project/cartographer
SpacemiT 板子打开终 端输入以下命令安装 cartographer 算法
sudo apt install ros-humble-cartographer
sudo apt install ros-humble-cartographer-ros
输入以下命令启动 cartographer 建图
source /opt/bros/humble/setup.bash
ros2 launch br_localization slam_cartographer_sim.launch.py
PC端可视化
使用以上任一算法启动 SLAM 建图,观察 PC 端 rviz 窗口,可以看到已经有了初始地图:
PC 端打开一个新终端,运行键盘控制节点
sudo apt install ros-humble-teleop-twist-keyboard
source /opt/ros/humble/setup.bash
ros2 run teleop_twist_keyboard teleop_twist_keyboard
使用u i o j k l m , .
控制小车运动,在 rviz 中可以观察到建图效果:
实车建图
本小节基于搭载了 SpacemiT RISC-V 系列板子的实车机器人进行 SLAM 建图,并通过 PC 端 rviz 可视化建图效果。