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

树莓派5—Slam小车指令合集
yusialoneSLAM 小车指令合集
本文档汇集了在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 | # 键盘控制 |
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完全相同:
- 启动并连接代理:
sh ~/start_agent_rpi5.sh
- 进入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 | # 键盘控制 |
b. 控制小车移动
缓慢地控制小车移动,完成建图区域的探索。
c. 保存地图
建图完成后,在新的终端中执行以下指令:
1 | ros2 launch yahboomcar_nav save_map_launch.py |
地图文件将保存在路径:/root/yahboomcar_ws/src/yahboomcar_nav/maps
三、 Navigation2 导航
Navigation2是ROS2的官方导航框架,它利用已创建的地图,实现从A点到B点的路径规划、运动控制和动态避障。
1. 准备工作
步骤与建图部分相同:
- 启动并连接代理:
sh ~/start_agent_rpi5.sh
- 进入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. 多点导航(航点跟随)
- 在RViz左侧的“Panels”菜单中添加
Nav2
插件。 - 点击
Waypoint/Nav Through Poses Mode
模式。 - 使用
Nav2 Goal
工具在地图上依次设置多个目标点。 - 点击
Start Waypoint Following
,小车将按顺序巡航所有航点。
四、 常用检查工具
如果遇到问题,可以使用以下工具进行调试。
1. 查看节点通讯图
进入Docker环境后,执行以下指令:
1 | ros2 run rqt_graph rqt_graph |
2. 查看TF坐标变换树
进入Docker环境后,执行以下指令:
1 | ros2 run tf2_tools view_frames |
运行后,会在当前目录下生成一个PDF文件,其中包含TF树的可视化图形。