< >
Home » ROS2与Navigation2入门教程 » ROS2与Navigation2入门教程-构建和安装Nav2

ROS2与Navigation2入门教程-构建和安装Nav2

说明:

  • 介绍如何构建和安装Nav2

安装

  • Nav2软件包及其依赖包都发布了二进制文件。可以通过以下命令安装它以获得最新的稳定发行版:
sudo apt install ros-<distro>-navigation2 ros-<distro>-nav2-bringup ros-<distro>-turtlebot3*
  • 对于Ubuntu 20.04,请使用下面这个命令,因为其通配符的解析已更改:
sudo apt install ros-<distro>-navigation2 ros-<distro>-nav2-bringup '~ros-<distro>-turtlebot3-.*'

构建

  • 有3种构建Nav2的方式:

    • 为特定的ROS 2发行版(例如eloquent、foxy)构建Nav2
    • 使用快速启动安装脚本在主分支上构建Nav2
    • 在主分支上手动构建Nav2。

为特定ROS 2发行版构建Nav2

  • 安装ROS,请按照您所需发行版的常用构建说明安装ROS 2。

  • 构建Nav2

  • 首先要新建一个工作空间nav2_ws,将NAV2分支克隆到该工作空间中并进行构建。

  • 可以使用rosdep工具获取ROS 2特定发行版中Nav2依赖包的二进制文件。

  • 具体命令如下:

mkdir -p ~/nav2_ws/src
cd ~/nav2_ws/src
git clone https://github.com/ros-planning/navigation2.git --branch <ros2-distro-branch>
cd ~/nav2_ws
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro <ros2-distro>
colcon build --symlink-install
  • 需要将--branch后的<ros2-distro-branch>更改为所选的分支(例如 eloquent-devel、foxy-devel、galactic、humble)
  • 需要将--rosdistro后的<ros2-distro>更改为所选的ROS 2发行版名称(例如 eloquent、foxy、galactic、humble)。

在主分支上快速启动构建Nav2

  • 构建步骤
  • 从ROS 2安装页面安装ROS 2的所有依赖包。
  • 在执行以下步骤之前,请确保终端或.bashrc文件中没有设置ROS环境变量。
mkdir <directory_for_workspaces>
cd <directory_for_workspaces>
wget https://raw.githubusercontent.com/ros-planning/navigation2/main/tools/initial_ros_setup.sh
chmod a+x initial_ros_setup.sh
./initial_ros_setup.sh

主分支上快速启动构建小结:

  • 脚本initial_ros_setup.sh会下载三个ROS 工作空间,然后按照正确的顺序构建它们。

  • 这三个工作空间分别是:

    • ROS 2发行版:为最新的ROS 2发行版,由此处的存储库文件定义;
    • ROS 2依赖包:为一组未包含在ROS 2发行版中的ROS 2软件包。但是需要这些软件包才能构建Nav2。还包括组成ROS 2发行版的一些软件包,因为Nav2要使用这些软件包的不同版本;
    • Nav2:即本存储库。
  • 下载所有工作空间后,运行navigation2/tools/build_all.sh脚本。

  • 脚本build_all.sh使用colcon build --symlink-install命令按照上面列出的顺序构建每个存储库。

  • 脚本initial_ros_setup.sh可以接受以下选项:

    • --no-ros2:这会跳过下载和构建ROS 2发行版。相反,它会使用安装在/opt/ros/<ros2-distro>目录中的二进制软件包和setup.sh脚本;

    • --download-only:这会跳过构建步骤。

在主分支上手动构建Nav2

  • 构建ROS 2主分支

  • !警告信息:在从源代码编译构建ROS2时,请确保ros2.repos文件来自主分支。

  • 按照ROS 2文档中提供的构建说明对ROS 2主分支进行编译构建。

  • 构建Nav2依赖项

  • 由于不是为已发布的发行版构建Nav2,因此必须自己构建依赖包而不是使用这些依赖包的二进制文件。

  • 首先,在ROS 2构建工作空间中对setup.bash 脚本文件进行source,命令为:

source ~/ros2_ws/install/setup.bash
  • 接着要从Nav2获取underlay.repos文件。
  • 然后,使用vcs工具将其中的存储库和版本克隆到工作空间中。
  • 具体命令如下:
source ros2_ws/install/setup.bash
mkdir -p ~/nav2_depend_ws/src
cd ~/nav2_depend_ws
wget https://raw.githubusercontent.com/ros-planning/navigation2/main/tools/underlay.repos
vcs import src < underlay.repos
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro <ros2-distro>
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
  • 构建Nav2主分支
  • 终于有了ROS 2 主分支和必要的依赖包,现在可以构建Nav2主分支本身了。
  • 下面会对nav2_depend_ws工作空间进行source,这也会同时对ROS 2主分支构建工作空间的软件包进行source,以使用依赖包进行Nav2构建。
  • 具体命令为:
source ~/nav2_depend_ws/install/setup.bash
mkdir -p ~/nav2_ws/src
cd ~/nav2_ws/src
git clone https://github.com/ros-planning/navigation2.git --branch main
cd ~/nav2_ws
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro <ros2-distro>
colcon build --symlink-install

用Docker构建Nav2

  • 官方Dockerhub条目主要用于Nav2 CI(持续集成),但也可用于开发。
  • 拥有一个跟踪Nav2主(main)分支的docker 镜像很有用。
  • 建议将存储库根目录中的Dockerfile用于生产用途,设置成您选择的发行版。
  • 如果想使用发布的二进制文件,通常建议从容器内的apt存储库安装Nav2发行版。

构建Docker容器

  • 为从Nav2文件夹中的Dockerfile构建映像,需要执行以下操作:首先,将存储库克隆到本地系统(或参阅上面的从源代码构建部分),命令为:
sudo docker build -t nav2/latest .
  • 如果需要代理,则命令为:
sudo docker build -t nav2/latest --build-arg http_proxy=http://proxy.my.com:### --build-arg https_proxy=http://proxy.my.com:### .
sudo docker pull rosplanning/navigation2:main
sudo docker build -t nav2/latest --cache-from rosplanning/navigation2:main .

使用DockerHub容器

  • 允许用户随时从主分支拉取最新的docker镜像。
  • 随着新版本和标签(tag)的发布,docker hub上的docker容器也将被版本化以供选择。
  • 该docker镜像不会包含构建好的叠加层,必须自己构建Nav2叠加层 工作空间(请参阅上面的构建Nav2主分支部分内容)。
  • 命令为:
sudo docker pull rosplanning/navigation2:main
  • 生成Doxygen

  • 在Nav2存储库的根目录中运行doxygen。 这会生成一个包含文档的/doc/*目录。浏览器中该文档的入口点是index.html。

  • 实际上,如果采用默认选项,用二进制软件包或者从源代码编译构建安装ROS 2 Foxy发行版时,都会自动安装Navigation 2软件包。

  • 上述教程可以用于安装ROS 2 Foxy发行版时没有安装Navigation 2的情况下参考使用。

参考:

  • https://navigation.ros.org/build_instructions/index.html

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2与navigation2入门教程