跳到主要内容

5.4.2 Navigation2

功能介绍

Nav2(Navigation2)是ROS2中自带的导航框架,旨在寻找一种安全的方式让移动机器人从A点移动到B点。Nav2也可以应用于其他机器人导航应用,例如动态点跟踪,在这个过程中需要完成动态路径规划、计算电机速度、避免障碍等。

SLAM建图介绍了如何运行SLAM算法进行建图,本章节介绍如何基于建立的地图使用Nav2进行导航。同样使用Gazebo在PC端创建虚拟环境和小车,使用Rviz2设置导航目的地,RDK运行Nav2程序导航。

支持平台

平台运行方式示例功能
RDK X3, RDK X3 ModuleUbuntu 20.04 (Foxy), Ubuntu 22.04 (Humble)PC端启动仿真环境,并在RDK启动导航功能,最后通过Rviz2展示导航效果
RDK X5Ubuntu 22.04 (Humble)PC端启动仿真环境,并在RDK启动导航功能,最后通过Rviz2展示导航效果

准备工作

RDK平台

  1. RDK已烧录好Ubuntu 20.04/Ubuntu 22.04系统镜像。

  2. RDK已成功安装tros.b。

  3. tros.b成功安装后,安装Nav2。

sudo apt update 
sudo apt install ros-foxy-navigation2
sudo apt install ros-foxy-nav2-bringup
  1. 和RDK在同一网段的PC,PC已安装Ubuntu 20.04/Ubuntu 22.04系统、ROS2桌面版和仿真环境Gazebo,数据可视化工具Rviz2。
  • Ubuntu 20.04系统和ROS2 Foxy桌面版
  • PC的ROS2安装成功后安装Gazebo和Turtlebot3相关的功能包,安装方法为:
sudo apt-get install ros-foxy-gazebo-*
sudo apt install ros-foxy-turtlebot3*
sudo apt install ros-foxy-navigation2
sudo apt install ros-foxy-nav2-bringup

使用介绍

RDK平台

本章节介绍如何在PC端搭建仿真环境,以及进行导航目的地设置,RDK运行导航功能,并查看导航效果。

  1. PC端启动gazebo仿真环境
source /opt/ros/foxy/setup.bash
export TURTLEBOT3_MODEL=waffle
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

仿真环境如下图所示:

  1. RDK启动导航功能

    # 配置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
  2. PC端启动Rviz2工具

source /opt/ros/foxy/setup.bash
ros2 launch nav2_bringup rviz_launch.py

Rviz2效果如下图:

  1. 在Rviz2上设置机器人起始位置和方向

    Rviz2启动后,机器人最初不知道它在哪里。默认情况下,Nav2会等待用户给机器人一个大致的起始位置。查看机器人在Gazebo中的位置,并在地图上找到该位置。通过点击Rviz2中的"2D Pose Estimate" 按钮,然后通过在地图上机器人预估的位置处点击来设置机器人初始位置 。可以通过向前拖动刚才单击的位置来设置机器人起始的移动方向。如下图所示:

    一旦设置好了机器人的初始位置,就会完成坐标变换树,同时Nav2将会完全激活并准备就绪。这时就可以看到机器人和点云了。

  2. Rviz2设置目的地

    点击 "Navigaton2 Goal" 按钮并选择一个目的地。

    现在就可以看到机器人在移动了。

结果分析

导航效果如下图所示: