Burger Pro(ONAD)ROS2教程-7.SLAM
笔记:SLAM应该在远程PC上运行。
在执行任何操作之前,请确保在TurtleBot3上启动Bringup。
SLAM(同步定位与地图构建)是一种通过估计任意空间中的当前位置来绘制地图的技术。此处的视频向您展示了TurtleBot3使用SLAM技术绘制地图的准确性。
运行SLAM节点
如果TurtleBot3 SBC上的Bringup没有运行,请先启动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
运行遥控节点
一旦SLAM节点成功启动并运行,TurtleBot3将使用遥控操作探索地图上的未知区域。重要的是避免剧烈运动,例如过快改变线性和角速度。使用TurtleBot3构建地图时,扫描地图的每个角落是一种很好的做法。
[远程PC]
ros2 run turtlebot3_teleop teleop_keyboard

开始探索并绘制地图。

保存地图
地图是根据机器人的里程表、tf和扫描信息绘制的。这些地图数据是在 TurtleBot3 行驶时在RViz窗口中绘制的。在创建所需区域的完整地图后,将地图数据保存到本地驱动器以供以后使用。
启动nav2_map_server 包中的map_saver_cli
节点以创建地图文件。
地图文件保存在启动map_saver_cli节点的目录中。
除非提供特定文件名,map否则将用作默认文件名并创建map.pgm和map.yaml。
[远程PC]
ros2 run nav2_map_server map_saver_cli -f ~/map
该-f选项指定要保存文件的文件夹位置和文件名。
使用上述命令,map.pgm和map.yaml将保存在主文件夹~/(/home/${username}) 中。


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