Ubuntu 22.04 + ROS 2 Humble 下 SLAM 建图 + 导航(Nav2 + slam_toolbox) 的完整教程

一、准备工作(环境搭建)

1. 安装 ROS 2 Humble

Ubuntu 22.04 上支持 ROS 2 Humble 的二进制安装,先安装基础环境并更新系统(参考 ROS 官方说明)

复制代码
sudo apt update
sudo apt install ros-humble-desktop

确保环境变量在 shell 中自动加载:

复制代码
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

二、安装必要导航与 SLAM 软件包

在安装完成 ROS2 Humble 后,继续安装导航系统和 SLAM 工具:

复制代码
sudo apt update
sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup
sudo apt install ros-humble-slam-toolbox

上述命令会安装:

  • Navigation2(Nav2) --- ROS2 主流导航栈

  • slam_toolbox --- 实时 2D SLAM 建图工具

三、准备机器人模型(以 TurtleBot3 为例)

使用仿真结构(Gazebo),推荐安装 TurtleBot3:

复制代码
sudo apt install ros-humble-turtlebot3*

并设置机器人模型:

复制代码
echo "export TURTLEBOT3_MODEL=waffle" >> ~/.bashrc
source ~/.bashrc

四、SLAM 建图

1) 启动机器人仿真(Gazebo)

在一个终端中启动机器人仿真:

复制代码
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

此命令会启动 Gazebo、机器人模型,以及相关传感器仿真。

2) 启动 SLAM 工具

在另一个终端里运行 slam_toolbox 来实时建图:

复制代码
ros2 launch slam_toolbox online_sync_launch.py

这个节点将处理传入的 /scan 激光数据,增量生成地图(Occupancy Grid)。

3) 在 RViz2 可视化地图

在另一个终端启动 RViz2:

复制代码
rviz2

在 RViz 中:

  • 选择 Fixed Frame 为 map

  • 显示 LaserScan 映射(/scan)

  • 显示 OccupancyGrid(地图)

  • 使用 2D Pose Estimate 估计机器人初始位姿

这样你可以看到实时的地图在生成。

五、保存生成的地图

当你完成地图生成并且满意时,可以保存地图文件(包括 .pgm 和 .yaml):

复制代码
ros2 run nav2_map_server map_saver_cli -f ~/my_map

运行后,在你的主目录下会得到:

复制代码
my_map.pgm
my_map.yaml

地图被保存后可用于后续导航定位。

六、启动导航(定位 + 自动导航)

复制代码
ros2 launch nav2_bringup navigation_launch.py map:=~/my_map.yaml

该启动文件会启动:

  • AMCL 定位节点

  • 全局/局部规划

  • 生成速度控制指令

2) 在 RViz2 中发送目标导航命令

在 RViz2 中:

  1. 使用 2D Pose Estimate(初始定位)

  2. 使用 2D Nav Goal(目标位置)

此时 Nav2 会自动规划路径并发布 /cmd_vel,机器人将自动导航到指定目标位置。

七、总结流程图

相关推荐
草莓熊Lotso2 小时前
手搓工业级 C++ 线程安全日志系统:基于策略模式解耦,兼容 glog 使用风格
linux·运维·服务器·数据库·c++·安全·策略模式
minji...2 小时前
Linux 网络基础(一)认识协议,网络协议,网络协议分层框架搭建,网络传输基本流程,跨网络的数据传输
linux·运维·服务器·网络·c++·网络协议
我叫小白菜2 小时前
【Linux】Linux常用命令
linux·运维·服务器
秋风&萧瑟2 小时前
【Linux系统编程】进程间的通信-管道
linux·服务器·php
我的世界洛天依2 小时前
洛天依讲编程:调音教学|调性 ——MIDI 里的「钩子函数」
linux·前端·javascript
Full Stack Developme2 小时前
Hutool File 教程
linux·windows·python
汽车仪器仪表相关领域2 小时前
Kvaser U100:工业级单通道CAN/CAN FD转USB接口,恶劣环境下的可靠通信桥梁
linux·运维·服务器·人工智能·功能测试·单元测试·可用性测试
dapeng-大鹏2 小时前
Ubuntu 命令速查手册 v2.5
ubuntu·命令手册·速查手册
weyyhdke2 小时前
Java进阶-在Ubuntu上部署SpringBoot应用
java·spring boot·ubuntu