TurtleBot3 ROS2入门教程-12.SLAM
笔记
ü SLAM应该在远程PC上运行。
ü 在执行任何操作之前,请确保在TurtleBot3上启动Bringup 。
SLAM(同步定位与地图构建)是一种通过估算任意空间中的当前位置来绘制地图的技术。本视频展示了TurtleBot3使用SLAM技术绘制地图的精确度。
运行SLAM节点
如果BringupTurtleBot3 SBC上未运行,请先启动Bringup。如果您之前已启动 Bringup,请跳过此步骤。
使用Ctrl+Alt+T从远程PC打开一个新终端,并使用其IP地址连接到Raspberry Pi。默认密码是ubuntu。
ssh ubuntu@{IP_ADDRESS_OF_RASPBERRY_PI}
请在burger、waffle、waffle_pi之间使用适当的关键字作为TURTLEBOT3_MODEL参数。
[TurtleBot3 SBC]
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_bringup robot.launch.py
使用Ctrl+Alt+T在远程电脑上打开一个新终端并启动SLAM节点。Cartographer是默认的SLAM方法。
[远程PC]
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_cartographer cartographer.launch.py
如何保存TURTLEBOT3_MODEL参数?
运行遥控节点
一旦SLAM节点成功启动并运行,TurtleBot3将使用远程操作探索地图上的未知区域。务必避免剧烈运动,例如过快地改变线速度和角速度。使用TurtleBot3 构建地图时,最好扫描地图的每个角落。
打开一个新终端,并从远程PC运行遥操作节点。请在burger、waffle、waffle_pi
之间使用适当的关键字作为TURTLEBOT3_MODEL参数。
[远程PC]
export TURTLEBOT3_MODEL=burger
ros2 run turtlebot3_teleop teleop_keyboard
Control Your TurtleBot3!
---------------------------
Moving around:
w
a s d
x
w/x : increase/decrease linear velocity
a/d : increase/decrease angular velocity
space key, s : force stop
CTRL-C to quit
开始探索并绘制地图。
调优指南
ROS2中的SLAM使用Cartographer ROS,它通过Lua文件提供配置选项。
文件中定义了以下选项turtlebot3_cartographer/config/turtlebot3_lds_2d.lua。有关每个选项的更多详细信息,请参阅Cartographer ROS 官方文档。
MAP_BUILDER.使用_trajectory_builder_2d
此选项设置SLAM的类型。
轨迹构建器_2D.最小范围
此选项设置激光雷达传感器的最小可用范围。
轨迹生成器_2D.max_range
此选项设置激光雷达传感器的最大可用范围。
TRAJECTORY_BUILDER_2D.缺失数据射线长度
在2D中,Cartographer用TRAJECTORY_BUILDER_2D.missing_data_ray_length替换超过 max_range 的范围。
轨迹生成器_2D.使用imu数据
如果您使用2D SLAM,则可以实时处理范围数据而无需额外的信息源,因此您可以选择是否希望Cartographer 使用IMU。
TRAJECTORY_BUILDER_2D.使用在线相关扫描匹配
本地SLAM:可以根据传感器的可靠性切换RealTimeCorrelativeScanMatcher 。
TRAJECTORY_BUILDER_2D.运动过滤器.最大角度弧度
局部SLAM:为了避免在每个子图上插入太多扫描,如果运动不超过某个角度,则会丢弃扫描。
POSE_GRAPH.优化每个n个节点
全局SLAM:将 POSE_GRAPH.optimize_every_n_nodes 设置为0是禁用全局 SLAM并专注于本地SLAM行为的便捷方法。
POSE_GRAPH.constraint_builder.min_score
全局SLAM:扫描匹配分数的阈值,低于该阈值则不视为匹配。分数低表示扫描结果与地图看起来不相似。
POSE_GRAPH.constraint_builder.global_localization_min_score
全局SLAM:低于该阈值的全局定位将不受信任。
注:约束可以在RViz中可视化,这对于全局SLAM的调优非常方便。您还可以切换POSE_GRAPH.constraint_builder.log_matches以获取以直方图格式呈现的约束构建器定期报告。
保存地图
地图是根据机器人的里程计、延时和扫描信息绘制的。这些地图数据是在 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)。保存的地图如下图所示,白色区域表示无碰撞区域,黑色区域表示已占用且无法进入的区域,灰色区域表示未知区域。此地图用于导航。
下图是使用TurtleBot3创建大地图的结果,创建一张行驶距离约350米的地图大约需要1个小时。
<< 上一篇
下一篇 >>