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:### .
可能还需要配置您的docker以使DNS工作。有关详细信息,请参阅下面这篇文章
如果想从dockerhub缓存构建以加快构建速度,则其命令为:
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
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号