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,机器人将自动导航到指定目标位置。

七、总结流程图

相关推荐
ergevv1 天前
如何使用 NIS 判断观测是否可靠:从卡尔曼滤波推导到机器人实践
机器人·卡尔曼滤波·nis·观测可靠性
by209991 天前
Linux 基础指令与文件操作
linux·1024程序员节
Escalating_xu1 天前
【Linux 网络编程】手写序列化与反序列化:从 x op y 到能校验的文本协议
linux·运维·网络
todoitbo1 天前
在 Ubuntu ARM64 上运行 Q1 V3.0 MuJoCo 模型:加载、步进和单执行器响应
linux·运维·ubuntu·ai·机器人·仿真教程·启元
AR-26710-1 天前
Linux Day26——传输层与三次握手
linux·运维
dghongcheng1 天前
喷涂机器人品牌推荐:六轴 vs 协作机器人怎么选
机器人·喷涂·喷漆设备·自动喷涂线·自动喷涂
隔窗听雨眠1 天前
PostgreSQL单表从Windows迁移到Linux:差异剖析、方案对比与全流程实战
linux·windows·postgresql
xinruoqianqiu1 天前
记录Linux
linux
额额额对了1 天前
嵌入式 Linux 实战:i.MX6ULL 上的 CAN 通信与摄像头采集
linux·运维·服务器
牛马鸡niumasi1 天前
【Linux】进程替换
linux