5.4.2 Navigation2
功能介绍
Nav2(Navigation2)是 ROS2 中自带的导航框架,旨在寻找一种安全的方式让移动机器人从 A 点移动到 B 点。Nav2 也可以应用于其他机器人导航应用,例如动态点跟踪,在这个过程中需要完成动态路径规划、计算电机速度、避免障碍等。
SLAM 建图介绍了如何运行 SLAM 算法进行建图,本章节介绍如何基于建立的地图使用 Nav2 进行导航。同样使用 Gazebo 在 PC 端创建虚拟环境和小车,使用 Rviz2 设置导航目的地,RDK 运行 Nav2 程序导航。
支持平台
| 平台 | 运行方式 | 示例功能 |
|---|---|---|
| RDK X3, RDK X3 Module | Ubuntu 20.04 (Foxy), Ubuntu 22.04 (Humble) | PC 端启动仿真环境,并在 RDK 启动导航功能,最后通过 Rviz2 展示导航效果 |
| RDK X5, RDK X5 Module | Ubuntu 22.04 (Humble) | PC 端启动仿真环境,并在 RDK 启动导航功能,最后通过 Rviz2 展示导航效果 |
| RDK S100, RDK S100P | Ubuntu 22.04 (Humble) | PC 端启动仿真环境,并在 RDK 启动导航功能,最后通过 Rviz2 展示导航效果 |
准备工作
RDK 平台
-
RDK 已烧录好 Ubuntu 系统镜像。
-
RDK 已成功安装 tros.b。
-
tros.b 成功安装后,安装 Nav2。
- Foxy
- Humble
# 配置tros.b环境
source /opt/tros/setup.bash
# 配置tros.b环境
source /opt/tros/humble/setup.bash
- Humble
# 配置tros.b环境
source /opt/tros/humble/setup.bash
sudo apt update
sudo apt install ros-${ROS_DISTRO}-navigation2
sudo apt install ros-${ROS_DISTRO}-nav2-bringup
如果 sudo apt update 命令执行失败或报错,请查看常见问题章节的 Q10: apt update 命令执行失败或报错如何处理? 解决。
如果 sudo apt update 命令执行失败或报错,请查看常见问题章节的 Q10: apt update 命令执行失败或报错如何处理? 解决。
如果 sudo apt update 命令执行失败或报错,请查看常见问题章节的 Q6: apt update 命令执行失败或报错如何处理? 解决。
- 和 RDK 在同一网段的 PC,PC 已安装 Ubuntu 系统、ROS2 桌面版和仿真环境 Gazebo,数据可视化工具 Rviz2。
- Foxy
- Humble
source /opt/ros/foxy/setup.bash
Ubuntu 20.04 系统和ROS2 Foxy 桌面版
source /opt/ros/humble/setup.bash
Ubuntu 22.04 系统和ROS2 Humble 桌面版
- Humble
source /opt/ros/humble/setup.bash
Ubuntu 22.04 系统和ROS2 Humble 桌面版
PC 的 ROS2 安装成功后安装 Gazebo 和 Turtlebot3 相关的功能包,安装方法为:
sudo apt-get install ros-${ROS_DISTRO}-gazebo-*
sudo apt install ros-${ROS_DISTRO}-turtlebot3*
sudo apt install ros-${ROS_DISTRO}-navigation2
sudo apt install ros-${ROS_DISTRO}-nav2-bringup
使用介绍
RDK 平台
本章节介绍如何在 PC 端搭建仿真环境,以及进行导航目的地设置,RDK 运行导航功能,并查看导航效果。
- PC 端启动 gazebo 仿真环境
- Foxy
- Humble
source /opt/ros/foxy/setup.bash
source /opt/ros/humble/setup.bash
- Humble
source /opt/ros/humble/setup.bash
export TURTLEBOT3_MODEL=waffle
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
如果启动失败,并且报错 [ERROR] [gzclient-2]: process has died ,请执行命令 source /usr/share/gazebo/setup.sh 后再启动。
仿真环境如下图所示:
- RDK启动导航功能
- Foxy
- Humble
# 配置tros.b环境
source /opt/tros/setup.bash
ros2 launch nav2_bringup bringup_launch.py use_sim_time:=True map:=/opt/ros/foxy/share/nav2_bringup/maps/turtlebot3_world.yaml
# 配置tros.b环境
source /opt/tros/humble/setup.bash
ros2 launch nav2_bringup bringup_launch.py use_sim_time:=True map:=/opt/ros/humble/share/nav2_bringup/maps/turtlebot3_world.yaml
- Humble
# 配置tros.b环境
source /opt/tros/humble/setup.bash
ros2 launch nav2_bringup bringup_launch.py use_sim_time:=True map:=/opt/ros/humble/share/nav2_bringup/maps/turtlebot3_world.yaml
- PC 端启动 Rviz2 工具
- Foxy
- Humble
# 配置tros.b环境
source /opt/tros/setup.bash
# 配置tros.b环境
source /opt/ros/humble/setup.bash
- Humble
# 配置tros.b环境
source /opt/ros/humble/setup.bash
ros2 launch nav2_bringup rviz_launch.py
Rviz2 效果如下图:
(1) 在 Rviz2 上设置机器人起始位置和方向
Rviz2 启动后,机器人最初不知道它在哪里。默认情况下,Nav2 会等待用户给机器人一个大致的起始位置。查看机器人在 Gazebo 中的位置,并在地图上找到该位置。通过点击 Rviz2 中的"2D Pose Estimate" 按钮,然后通过在地图上机器人预估的位置处点击来设置机器人初始位置 。可以通过向前拖动刚才单击的位置来设置机器人起始的移动方向。如下图所示:
一旦设置好了机器人的初始位置,就会完成坐标变换树,同时 Nav2 将会完全激活并准备就绪。这时就可以看到机器人和点云了。
(2) Rviz2 设置目的地
点击 "Navigaton2 Goal" 按钮并选择一个目的地。
现在就可以看到机器人在移动了。
结果分析
导航效果如下图所示: