Burger Pro(ONAD)ROS2教程-7.SLAM

笔记:SLAM应该在远程PC上运行。

在执行任何操作之前,请确保在TurtleBot3上启动Bringup  

SLAM(同步定位与地图构建)是一种通过估计任意空间中的当前位置来绘制地图的技术。此处的视频向您展示了TurtleBot3使用SLAM技术绘制地图的准确性。

运行SLAM节点

如果TurtleBot3 SBCBringup没有运行,请先启动Bringup。如果您之前已经启动过Bringup,请跳过此步骤。 

[TurtleBot3 SBC]

export TURTLEBOT3_MODEL=burger

ros2 launch turtlebot3_bringup robot.launch.py

使用Ctrl+Alt+T从远程PC打开一个新终端并启动SLAM节点。默认使用Cartographer建图方法。

[远程PC]

export TURTLEBOT3_MODEL=burger

ros2 launch turtlebot3_cartographer cartographer.launch.py

slam1.png 

运行遥控节点

一旦SLAM节点成功启动并运行,TurtleBot3将使用遥控操作探索地图上的未知区域。重要的是避免剧烈运动,例如过快改变线性和角速度。使用TurtleBot3构建地图时,扫描地图的每个角落是一种很好的做法。

[远程PC]

ros2 run turtlebot3_teleop teleop_keyboard

slam2.png

开始探索并绘制地图。

slam11.png

保存地图

地图是根据机器人的里程表、tf和扫描信息绘制的。这些地图数据是在 TurtleBot3 行驶时在RViz窗口中绘制的。在创建所需区域的完整地图后,将地图数据保存到本地驱动器以供以后使用。

启动nav2_map_server 包中的map_saver_cli

节点以创建地图文件。

地图文件保存在启动map_saver_cli节点的目录中。

除非提供特定文件名,map否则将用作默认文件名并创建map.pgmmap.yaml

[远程PC]

ros2 run nav2_map_server map_saver_cli -f ~/map

-f选项指定要保存文件的文件夹位置和文件名。

使用上述命令,map.pgmmap.yaml将保存在主文件夹~/(/home/${username}) 中。

slam4.png

slam5.png

地图

地图采用ROS常用的二维Occupancy Grid MapOGM),保存后的地图如下图所示,白色区域为无碰撞区域,黑色区域为被占用且无法进入的区域,灰色区域为未知区域,此地图用于导航。