(SLAM) 建图时导航

概述

本文件阐述了如何使用Nav2与SLAM。下面的步骤向ROS 2用户展示了如何生成占据栅格图并使用Nav2来移动他们的机器人。本教程适用于仿真机器人和物理机器人,但在此将在物理机器人上完成。 [校准@混沌无形]

前完成本教程,如果你刚接触ROS Navigation2,极力推荐完成 入门[校准@混沌无形]

In this tutorial we'll be using SLAM Toolbox. More information can be found in the ROSCon talk for SLAM Toolbox

要求

You must install Navigation2, Turtlebot3, and SLAM Toolbox. If you don't have them installed, please follow 入门.

SLAM工具箱可以通过以下方式安装: [校准@greg]

sudo apt install ros-<ros2-distro>-slam-toolbox

或通过以下方式从工作区中的源编译: [校准@混沌无形]

git clone -b <ros2-distro>-devel git@github.com:stevemacenski/slam_toolbox.git [校准@混沌无形]

Tutorial Steps

0-启动机器人交互界面 [校准@混沌无形]

对于本教程,我们将使用turtlebot3。如果你有其他机器人,请用你的机器人专用接口替换。通常,这包括URDF的机器人状态发布者,仿真或物理机器人接口、控制器和安全节点等。 [校准@混沌无形]

Run the following commands first whenever you open a new terminal during this tutorial.

  • source /opt/ros/<ros2-distro>/setup.bash

  • export TURTLEBOT3_MODEL=waffle

启动机器人界面和机器人状态发布者, [校准@混沌无形]

ros2 launch turtlebot3_bringup robot.launch.py [待校准@1353]

1- Launch Navigation2

在没有nav2_amcl和nav2_map_server的情况下启动导航。假设SLAM节点将发布到/map话题并提供map->odom转换。 [校准@混沌无形]

ros2 launch nav2_bringup navigation_launch.py [待校准@1356]

2-启动 SLAM [校准@混沌无形]

调出你选择的SLAM实现。确保提供map->odom变换和/map话题。运行Rviz添加要可视化的话题,如/map, /tf, /laserscan等。本教程,我们将使用 SLAM Toolbox[校准@混沌无形]

ros2 launch slam_toolbox online_async_launch.py [待校准@1359]

3-与SLAM合作 [待校准@1360]

通过RViz或ROS 2命令行界面请求目标来移动机器人,即: [校准@混沌无形]

ros2 topic pub /goal_pose geometry_msgs/PoseStamped "{header: {stamp: {sec: 0}, frame_id: 'map'}, pose: {position: {x: 0.2, y: 0.0, z: 0.0}, orientation: {w: 1.0}}}"

你应该看到地图现场更新!保存此地图文件: [校准@混沌无形]

ros2 run nav2_map_server map_saver_cli -f ~/map [待校准@1363]

带SLAM的Navigation2 `[校准@混沌无形] <http://dev.nav2.fishros.com/calibpage/#/home?msgid=1364>`_

4-入门简化 [校准@混沌无形]

如果你只想在运行SLAM在turtlebot3开始沙箱世界,我们也提供简易方式使SLAM作为启动配置。而不是单独启动接口,导航,SLAM,你可以继续使用 tb3_simulation_launch.pyslam 配置设置为true。我们提供上述说明假定您想运行SLAM自己机器人会分离仿真/机器人接口和导航启动文件组合 tb3_simulation_launch.py 而言容易测试。 [校准@小鱼]

ros2 launch nav2_bringup tb3_simulation_launch.py slam:=True