警告
您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.
在 Linux 上构建 ROS 2
系统要求
Crystal Clemmys 的目标平台是(见 REP 2000):
第 1 层:Ubuntu Linux - Bionic Beaver (18.04) 64 位
第 2 层:Ubuntu Linux - Xenial Xerus (16.04) 64 位
第 3 级平台(未主动测试或支持)包括
系统设置
设置本地语言
确保设置支持 UTF-8 的 locale。如果你所处的是 Docker 容器等最小化环境,locale 可能会设置为 POSIX 等最小化环境。
下面是一个设置本地语言的示例。不过,如果你使用的是不同的 UTF-8 支持的本地语言,也没有问题。
苏都 本地生成 en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 朗=en_US.UTF-8
出口 朗=en_US.UTF-8
添加 ROS 2 apt 软件仓库
您需要在系统中添加 ROS 2 apt 仓库。为此,首先像这样用 apt 授权我们的 GPG 密钥:
苏都 适切 更新 &&; 苏都 适切 安装 卷曲 撮影2 lsb-release curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | 苏都 apt-key 增加 -
然后将资源库添加到来源列表中:
苏都 吁 -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list';
安装开发工具和 ROS 工具
苏都 适切 更新 &&; 苏都 适切 安装 -y \
基本建设 \
cmake \
笨蛋 \
python3-colcon-common-extensions \
python3-lark 解析器 \
python3-pip \
python-rosdep \
python3-vcstool \
wget
# 安装一些测试所需的 pip 包
python3 -m 核心 安装 -U \
argcomplete \
flake8 \
鳞片8-盲点-例外 \
flake8-builtins \
flake8-class-newline \
flake8-comprehensions \
flake8-deprecated \
flake8-docstrings \
flake8-import-order \
flake8-quotes \
重复 \
PETEST-RERUNFILLS \
测试 \
pytest-cov \
跃马 \
设置工具
# 安装 Fast-RTPS 依赖项
苏都 适切 安装 --不安装--推荐 -y \
libasio-dev \
libtinyxml2-dev
获取 ROS 2 代码
创建工作区并克隆所有软件仓库:
mkdir -p ~/ros2_crystal/src
CD ~/ros2_crystal wget https://raw.githubusercontent.com/ros2/ros2/crystal/ros2.repos vcs 舶来品 来源 <; ros2.repos
使用 rosdep 安装依赖项
苏都 rosdep 启动 更新
# [Ubuntu 18.04]
rosdep 安装 --从路径 来源 --忽略源代码 --rosdistro 水晶 -y --跳键 "console_bridge fastcdr fastrtps libopensplice67 libopensplice69 rticonnext-dds-5.3.1 urdfdom_headers";
# [Ubuntu 16.04]
rosdep 安装 --从路径 来源 --忽略源代码 --rosdistro 水晶 -y --跳键 "console_bridge fastcdr fastrtps libopensplice67 libopensplice69 python3-lark-parser rti-connext-dds-5.3.1 urdfdom_headers";
python3 -m 核心 安装 -U 云雀解析器
安装其他 DDS 实现(可选)
除了默认的 eProsima 快速 RTPS 之外,如果您还想使用其他 DDS 或 RTPS 供应商,可以查看相关说明 这里.
在工作区中构建代码
注:要搭建 ROS 1 桥接器,请阅读 ros1_bridge 说明.
有关使用 ROS 工作区的更多信息,请参阅 本教程.
CD ~/ros2_crystal/
# 在 Ubuntu Linux Bionic Beaver 18.04 上
胶管 构建 --symlink-install
# 在 Ubuntu Linux Xenial Xerus 16.04 上
胶管 构建 --symlink-install --packages-ignore qt_gui_cpp rqt_gui_cpp
注意:如果在编译所有示例时遇到困难,导致无法成功完成编译,可以使用 反对派
与 CATKIN_IGNORE 来忽略子树或从工作区中删除文件夹。举个例子:你想避免安装大型 OpenCV 库。那么只需 $ 触摸 反对派
在 cam2image
演示目录,使其不参与构建过程。
可选择将所有软件包安装到一个合并目录中(而不是将每个软件包安装到一个单独的子目录中)。在 Windows 系统中,由于环境变量长度的限制,当构建的工作区中有很多(~ >> 100 个软件包)软件包时,应使用此选项。
此外,如果您已经从 Debian 安装了 ROS 2,请确保运行 构建
命令。您可能需要确保没有 消息来源 /opt/ros/${ROS_DISTRO}/setup.bash
在你的 .bashrc
.
胶管 构建 --symlink-install --合并安装
之后 local_setup.*
从 安装
文件夹。
环境设置
源设置脚本
通过获取以下文件来设置环境。
. ~/ros2_crystal/install/setup.bash
安装 argcomplete(可选)
ROS 2 命令行工具使用 argcomplete 自动完成。
因此,如果想要自动完成,安装 argcomplete 是必要的。
苏都 适切 安装 python3-argcomplete
举例说明
在一个终端中输入设置文件,然后运行 C++ 话匣子
:
. ~/ros2_crystal/install/local_setup.bash ros2 运行 演示节点 话匣子
在另一个终端中输入设置文件的源代码,然后运行 Python 听众
:
. ~/ros2_crystal/install/local_setup.bash ros2 运行 演示节点 听众
您应该看到 话匣子
说它是 出版
信息和 听众
成语 I 听说
这些信息。这就验证了 C++ 和 Python API 都能正常工作。万岁
参见 教程和演示 其他尝试。
备用编译器
除了 gcc 之外,使用其他编译器编译 ROS 2 也很简单。如果设置环境变量 CC
和 CXX
分别转换为可运行的 C 和 C++ 编译器的可执行文件,并重新触发 CMake 配置(通过使用 --force-cmake-config
或删除希望受影响的软件包),CMake 将重新配置并使用不同的编译器。
铛
配置 CMake 以检测并使用 Clang:
苏都 适切 安装 铛
出口 CC=铛
出口 CXX=Clang++ colcon 构建 --cmake-force-configure
TODO: 使用线程消毒器、内存消毒器
了解最新信息
参见 维护 ROS 2 的源检查 定期刷新源安装。
故障排除
可以找到故障排除技术 这里.
卸载
如果您按照上述说明使用 colcon 安装了工作区,那么 "卸载 "可能只是打开一个新终端,而不是从工作区的
设置
文件。这样,您的环境就会像系统中没有安装 Crystal 软件一样运行。如果你也想释放空间,可以用以下方法删除整个工作区目录:
rm -rf ~/ros2_crystal