在Ubuntu Linux上构建ROS 2

系统要求

目前基于Debian的Foxy Fitzroy目标平台是: [小鱼@5477]

  • 第1层: Ubuntu Linux - Focal Fossa (20.04) 64位 [Alyssa@5478]

  • 第3层: Debian Linux - Buster (10) 64位

其他支持级别不同的Linux平台包括:

系统设置

设置语言区域 [Alyssa@5485]

确保你有一个支持 UTF-8 的语言区域。如果您处于最小环境中 (例如docker容器),则区域设置可能是最小的,例如 POSIX 。我们使用以下设置进行测试。但是,如果您使用不同的UTF-8支持的语言区域也是没有问题的。 [Alyssa@5486]

locale  # check for UTF-8

sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

locale  # verify settings

添加ROS 2 apt仓库

您需要将ROS 2 apt仓库添加到您的系统中。为此,首先使用如下apt指令授权我们的GPG密钥: [Alyssa@5488]

sudo apt update && sudo apt install curl gnupg2 lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg

然后将仓库添加到源文件列表中:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

安装开发工具和ROS工具 [Alyssa@5490]

sudo apt update && sudo apt install -y \
  build-essential \
  cmake \
  git \
  libbullet-dev \
  python3-colcon-common-extensions \
  python3-flake8 \
  python3-pip \
  python3-pytest-cov \
  python3-rosdep \
  python3-setuptools \
  python3-vcstool \
  wget
# install some pip packages needed for testing
python3 -m pip install -U \
  argcomplete \
  flake8-blind-except \
  flake8-builtins \
  flake8-class-newline \
  flake8-comprehensions \
  flake8-deprecated \
  flake8-docstrings \
  flake8-import-order \
  flake8-quotes \
  pytest-repeat \
  pytest-rerunfailures \
  pytest
# install Fast-RTPS dependencies
sudo apt install --no-install-recommends -y \
  libasio-dev \
  libtinyxml2-dev
# install Cyclone DDS dependencies
sudo apt install --no-install-recommends -y \
  libcunit1-dev

获取ROS 2代码

创建工作空间并克隆所有仓库: [Alyssa@5492]

mkdir -p ~/ros2_foxy/src
cd ~/ros2_foxy
wget https://raw.githubusercontent.com/ros2/ros2/foxy/ros2.repos
vcs import src < ros2.repos

使用rosdep安装依赖项

sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-5.3.1 urdfdom_headers"

注意: 如果你使用的是一个基于Ubuntu的发行版 (比如Linux Mint),但没有标识自己的版本,你会收到一条错误信息,比如 Unsupported OS [mint] 。在这种情况下,将 “-- os = ubuntu: focal” 附加到上述命令中。 [Alyssa@5494]

安装额外的DDS实现 (可选) [待校准@5495]

如果你想使用除了默认的eProsima的快速RTPS,以外的DDS或RTPS供应商,你可以在 here 找到说明。 [Alyssa@5496]

在工作区中编译代码 [Alyssa@5497]

如果您已经以另一种方式安装了ROS 2 (通过Debians或二进制发行版),确保在没有其他安装源文件的新环境中运行以下命令。另外,请确保您的 .bashrc 中没有 “source /opt/ros/$ {ros_diso}/setup.Bash”。您可以使用命令 “printenv | grep -i ROS” 确定ROS 2还没有进行环境配置。输出应为空。 [Alyssa@5498]

有关使用ROS工作空间的更多信息,请参见 this tutorial[Alyssa@5499]

cd ~/ros2_foxy/
colcon build --symlink-install

注意: 如果您在编译所有示例时遇到问题,并且这使您无法成功完成编译,你可以像使用 CATKIN_IGNORE 的语法一样使用 COLCON_IGNORE 命令忽略子树或删除文件夹工作区。举个例子: 您希望避免安装大型的tcl库。那么简单地在 cam2image 例程目录中运行 touch COLCON_IGNORE ,把它排除在构建过程之外即可。 [小鱼@5500]

环境设置

获取安装脚本 [待校准@5502]

通过source以下文件来设置您的环境。 [Alyssa@5503]

. ~/ros2_foxy/install/local_setup.bash

尝试运行一些例子 [Alyssa@5504]

在一个终端中,source安装文件,然后运行一个c++ talker : [Alyssa@5505]

. ~/ros2_foxy/install/local_setup.bash
ros2 run demo_nodes_cpp talker

在另一个终端中,source安装文件,然后运行一个Python listener : [Alyssa@5506]

. ~/ros2_foxy/install/local_setup.bash
ros2 run demo_nodes_py listener

你应该看到了 talker 说这是 Publishing 消息 ,listenerI heard 这些消息。这证明了C++和Python的APIs都是正常工作的。万岁! [Alyssa@5507]

安装后的下一步

继续使用 教程和Demo 来配置您的环境,创建您自己的工作区和包,并学习ROS 2核心概念。 [小鱼@5509]

使用ROS 1 bridge

ROS 1bridge可以连接从ROS 1到ROS 2的话题,反之亦然。看看这个专门的文献 documentation 如何编译和使用ROS 1bridge。 [Alyssa@5511]

附加RMW实现 (可选)

ROS 2使用的默认中间件是 Fast-RTPS ,但中间件 (RMW) 可以在运行时进行替换。查看 guide 了解如何使用多个RMWs。 [Alyssa@5513]

备用编译器 [待校准@5514]

使用除gcc之外的其他编译器编译ROS 2也很容易。如果您将环境变量 CCCXX 分别设置为可用的C和C + + 编译器去生成可执行文件,并依次重新触发CMake配置 (通过使用 --force-cmake-config 或删除您想要重新编译的包),CMake将使用不同的编译器重新配置。 [Alyssa@5515]

Clang

检测并且使用Clang去配置CMake,请执行以下操作: [Alyssa@5517]

sudo apt install clang
export CC=clang
export CXX=clang++
colcon build --cmake-force-configure

了解最新情况 [Alyssa@5518]

请参阅 维护ROS 2Foxy源文件的检出 以定期的刷新安装源。 [Alyssa@5519]

故障排除

故障排除技术可以参考 这里[小鱼@5521]

卸载

  1. 如果你按照上面的指示用colcon安装了你的工作空间, "uninstalling" 可能只是打开一个新的终端,而没有source工作空间的 setup 文件。因此,您的环境就会表现得好像您的系统上没有安装Foxy。 [Alyssa@5523]

  2. 如果您还打算释放所有空间,则可以使用以下命令删除整个工作空间的目录: [Alyssa@5524]

    rm -rf ~/ros2_foxy