树莓派5—Slam小车指令合集

SLAM 小车指令合集

本文档汇集了在ROS2环境下,操作SLAM小车进行Gmapping建图、Cartographer建图以及Navigation2导航的核心指令,旨在提供一份清晰、快速的查询手册。

重要提示:在开始所有操作前,请务必确保树莓派与microROS控制板的 ROS_DOMAIN_ID 保持一致。


一、 Gmapping 建图

Gmapping是一种基于粒子滤波的经典SLAM算法,适用于计算量要求不高的小场景建图。

1. 准备工作

a. 启动并连接代理
在树莓派终端中执行,启动microROS代理。

1
sh ~/start_agent_rpi5.sh

启动后,按一下microROS控制板的复位按键,等待连接成功。

b. 进入Docker环境
打开一个新的终端,执行以下指令进入ROS2 Docker容器。

1
sh ros2_humble.sh

c. 查看运行中的Docker容器
树莓派主机的终端(即未进入Docker环境的终端)中执行以下指令,可以查看当前正在运行的容器及其ID。

1
docker ps

此命令会列出当前正在运行的所有Docker容器,包括它们的CONTAINER ID、名称等信息,方便进行管理和确认。

1
docker exec -it <id> /bin/bash

2. 启动建图

注意:以下指令需要在不同的终端中(均在Docker环境内)分别执行。

a. 启动小车底层驱动

1
ros2 launch yahboomcar_bringup yahboomcar_bringup_launch.py

b. 启动RViz可视化界面

1
ros2 launch yahboomcar_nav display_launch.py

c. 启动Gmapping建图节点

1
ros2 launch yahboomcar_nav map_gmapping_launch.py

3. 控制小车与保存地图

a. 启动控制节点(键盘或手柄二选一)

1
2
3
4
5
6
# 键盘控制
ros2 run yahboomcar_ctrl yahboom_keyboard

# 手柄控制 (需要两个终端)
ros2 run yahboomcar_ctrl yahboom_joy
ros2 run joy joy_node

b. 控制小车移动
缓慢地控制小车移动,探索并覆盖所有需要建图的区域。

c. 保存地图
建图完成后,在新的终端中执行以下指令,地图将默认保存为 yahboom_map

1
ros2 launch yahboomcar_nav save_map_launch.py

地图文件(.pgm和.yaml)将保存在路径:/root/yahboomcar_ws/src/yahboomcar_nav/maps


二、 Cartographer 建图

Cartographer是Google开源的SLAM库,基于图优化,适合构建更精确、更大范围的地图,并支持多传感器融合。

1. 准备工作

步骤与Gmapping完全相同:

  1. 启动并连接代理: sh ~/start_agent_rpi5.sh
  2. 进入Docker环境: sh ros2_humble.sh

2. 启动建图

注意:以下指令需要在不同的终端中(均在Docker环境内)分别执行。

a. 启动小车底层驱动

1
ros2 launch yahboomcar_bringup yahboomcar_bringup_launch.py

b. 启动RViz可视化界面

1
ros2 launch yahboomcar_nav display_launch.py

c. 启动Cartographer建图节点

1
ros2 launch yahboomcar_nav map_cartographer_launch.py

3. 控制小车与保存地图

a. 启动控制节点(键盘或手柄二选一)

1
2
3
4
5
6
# 键盘控制
ros2 run yahboomcar_ctrl yahboom_keyboard

# 手柄控制 (需要两个终端)
ros2 run yahboomcar_ctrl yahboom_joy
ros2 run joy joy_node

b. 控制小车移动
缓慢地控制小车移动,完成建图区域的探索。

c. 保存地图
建图完成后,在新的终端中执行以下指令:

1
ros2 launch yahboomcar_nav save_map_launch.py

地图文件将保存在路径:/root/yahboomcar_ws/src/yahboomcar_nav/maps


三、 Navigation2 导航

Navigation2是ROS2的官方导航框架,它利用已创建的地图,实现从A点到B点的路径规划、运动控制和动态避障。

1. 准备工作

步骤与建图部分相同:

  1. 启动并连接代理: sh ~/start_agent_rpi5.sh
  2. 进入Docker环境: sh ros2_humble.sh

2. 启动导航

注意:以下指令需要在不同的终端中(均在Docker环境内)分别执行。

a. 启动小车底层驱动

1
ros2 launch yahboomcar_bringup yahboomcar_bringup_launch.py

b. 启动RViz可视化界面

1
ros2 launch yahboomcar_nav display_launch.py

c. 启动Navigation2节点

1
ros2 launch yahboomcar_nav navigation_dwb_launch.py

此时,RViz中应能看到之前保存的地图被加载进来。

3. 执行导航任务

a. 设置初始位姿
在RViz界面顶部工具栏中,点击 2D Pose Estimate 工具。根据小车在现实世界中的实际位置和朝向,在地图上点击并拖动箭头来设定初始位姿。

b. 单点导航
点击 2D Goal Pose 工具,在地图上选择一个目标点并指定朝向,小车将自动规划路径并前往该点。

c. 多点导航(航点跟随)

  1. 在RViz左侧的“Panels”菜单中添加 Nav2 插件。
  2. 点击 Waypoint/Nav Through Poses Mode 模式。
  3. 使用 Nav2 Goal 工具在地图上依次设置多个目标点。
  4. 点击 Start Waypoint Following,小车将按顺序巡航所有航点。

四、 常用检查工具

如果遇到问题,可以使用以下工具进行调试。

1. 查看节点通讯图
进入Docker环境后,执行以下指令:

1
ros2 run rqt_graph rqt_graph

2. 查看TF坐标变换树
进入Docker环境后,执行以下指令:

1
ros2 run tf2_tools view_frames

运行后,会在当前目录下生成一个PDF文件,其中包含TF树的可视化图形。