掘金 人工智能 04月27日 12:43
ROS2 Jazzy:如何使用colcon创建并编译ROS2工作空间
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文是一篇关于使用 colcon 构建 ROS2 工作空间的简要教程,旨在为用户提供实用指南,而非替代官方文档。文章介绍了 colcon 的背景、安装方法、基础知识,以及如何创建、配置、编译和测试工作空间。此外,还涵盖了运行示例、创建自定义软件包、使用 colcon_cd 和 colcon tab 补全等实用技巧,并介绍了 colcon mixin 的使用,以简化命令行操作,帮助用户更高效地进行 ROS2 开发。

📦 Colcon 是 ROS2 的构建工具,是 catkin 系列工具的迭代升级,用于管理 ROS2 工作空间的构建过程。它采用源码外构建方式,创建 build、install 和 log 目录,分别用于存储中间文件、安装软件包和记录日志。

⚙️ 构建 ROS2 工作空间需要先安装 ROS2 及 colcon,并配置底层环境。通过克隆示例代码仓库到 src 目录下,然后使用 colcon build --symlink-install 命令编译工作空间,生成可执行文件。

🚀 编译完成后,通过 source install/setup.bash (Linux/macOS) 或 call install\setup.bat (Windows) 加载环境。之后,可以使用 ros2 run 运行编译后的可执行文件,如示例中的发布者和订阅者节点。

💡 colcon 支持多种编译类型,推荐 ament_cmake 和 ament_python。用户可以使用 ros2 pkg create 工具创建新的软件包,并利用 colcon_cd 和 colcon tab 补全等工具提高工作效率。colcon mixin 简化了命令行操作,如调试模式的配置。

这是一篇关于如何使用 colcon 创建并构建 ROS2 工作空间的简要教程。它是一个实用性教程,并非用于替代核心文档。

背景

colcon 是 ROS 构建工具 catkin_make、catkin_make_isolated、catkin_tools 和 ament_tools 的迭代升级。有关更多 colcon 的设计信息,请参阅此文档

源代码可在 colcon GitHub中找到。

前提条件

安装 colcon

sudo apt install python3-colcon-common-extensions
python3 -m pip install colcon-common-extensions
pip install -U colcon-common-extensions

安装 ROS2

如果想构建示例代码,首先需要安装 ROS2。如果是从 deb 包进行安装,本文需要进行桌面版安装。

基础知识

ROS 工作空间是一个具有特定结构的目录。通常会有一个 src 子目录,ROS 软件包的源代码就存放在这个子目录中。

colcon 采用源码外构建方式。默认情况下,它会在 src 目录同级创建以下目录:

注意:与 catkin 不同,这里没有 devel 目录。

创建工作空间

首先,创建一个目录(ros2_ws)来存放我们的工作空间:

mkdir -p ~/ros2_ws/srccd ~/ros2_ws
mkdir -p ~/ros2_ws/srccd ~/ros2_ws
md \dev\ros2_ws\srccd \dev\ros2_ws

此时,工作空间包含一个空的 src 目录:

.└── src1 directory, 0 files

添加一些源码

让我们将示例代码仓库克隆到工作空间的 src 目录中:

git clone https://github.com/ros2/examples src/examples -b jazzy

现在,工作空间应该包含 ROS2 示例的源代码:

.└── src    └── examples        ├── CONTRIBUTING.md        ├── LICENSE        ├── rclcpp        ├── rclpy        └── README.md4 directories, 3 files

配置底层环境(underlay)

首先需要先配置现有 ROS2 安装工作空间的环境变量,以便为示例包提供构建依赖。此环境称为"底层"(underlay)。

# Replace ".bash" with your shell if you're not using bash# Possible values are: setup.bash, setup.sh, setup.zshsource /opt/ros/jazzy/setup.bash

在使用 ROS2 之前,你必须要在你打算进行操作的终端中配置 ROS2 安装工作空间的环境变量。这样就能让 ROS2 的软件包在该终端中可供你使用。

而我们的ros2_ws工作区将作为覆盖工作空间(overlay)叠加在现有 ROS2 环境上。这是一个辅助工作空间,在其中你可以添加新的软件包,而不会干扰你正在扩展的现有 ROS2 安装工作空间(也就是 “底层工作空间”,underlay)。你的底层工作空间必须包含覆盖工作空间中所有软件包的依赖项。覆盖工作空间中的软件包会覆盖底层工作空间中的软件包。也有可能存在多层的底层工作空间和覆盖工作空间,每一个后续的覆盖工作空间都会使用其父级底层工作空间中的软件包。建议在需要迭代少量包时使用覆盖层,而不是将所有包放在同一工作区。

编译工作空间

注意:要在 Windows 上编译软件包,你需要处于 Visual Studio 环境中。

在工作区根目录运行以下命令。由于像 ament_cmake 这样的编译类型不支持 devel 空间,并且需要安装包,建议使用--symlink-install选项。这允许通过修改源代码(如Python文件)快速迭代安装文件:

colcon build --symlink-install
colcon build --symlink-install
colcon build --symlink-install --merge-install

Build完成后,我们应该能看到 buildinstalllog 目录:

.├── build├── install├── log└── src4 directories, 0 files

运行测试

要对刚刚编译的软件包运行测试,请执行以下命令:

colcon test
colcon test
colcon test --merge-install

加载环境

当 colcon 成功完成编译后,输出文件会存放在 install 目录中。colcon 会在 install 目录中生成 bash/bat 脚本,这可以用来设置环境。这些文件会将所有必需的元素添加到你的路径和库路径中,并提供软件包导出的任何 bash 或 shell 命令。

source install/setup.bash
. install/setup.bash
call install\setup.bat

尝试运行示例

加载环境后,我们就可以运行 colcon 编译的可执行文件了。让我们运行示例中的一个订阅者节点:

ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function

在另一个终端中,让我们运行一个发布者节点(别忘了加载设置脚本):

ros2 run examples_rclcpp_minimal_publisher publisher_member_function

你应该会看到发布者和订阅者输出的消息,其中的数字会递增。

创建你自己的软件包

colcon 使用 REP149 中定义的 package.xml 规范(也支持format 2)。

colcon 支持多种编译类型。推荐的编译类型是 ament_cmakeament_python,同时也支持纯 CMake 软件包。

ament_python 编译的一个示例是 ament_index_python 软件包,其中 setup.py 是编译的主要入口点。

demo_nodes_cpp使用 ament_cmake 编译类型,并使用 CMake 作为编译工具。

为了方便起见,你可以使用 ros2 pkg create 工具根据模板创建一个新的软件包。

注意:对于 catkin 用户来说,这相当于 catkin_create_package

设置 colcon_cd

colcon_cd 命令可以让你快速将 shell 的当前工作目录切换到软件包所在的目录。例如,colcon_cd some_ros_package 会快速将你带到 ~/ros2_ws/src/some_ros_package 目录。

echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrcecho "export _colcon_cd_root=/opt/ros/jazzy/" >> ~/.bashrc
echo "source /usr/local/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrcecho "export _colcon_cd_root=~/ros2_install" >> ~/.bashrc

根据你安装 colcon_cd 的方式以及工作空间的位置,上述说明可能会有所不同,更多详情请参阅文档。若要在 Linux 和 macOS 上撤销此设置,请找到系统的 shell 启动脚本,并删除追加的 sourceexport 命令。

设置 colcon tab 补全

colcon 命令支持 bash 和类似 bash shell 命令补全功能。这必须安装 colcon-argcomplete 软件包,并且可能需要进行一些设置才能使其正常工作。

小贴士

colcon test --packages-select YOUR_PKG_NAME --ctest-args -R YOUR_TEST_IN_PKG

设置 colcon mixin

各种命令行选项写起来繁琐且难以记忆。

例如,要将 CMake 编译类型更改为调试模式,通常使用:

colcon build --cmake-args -DCMAKE_BUILD_TYPE=Debug

为了更方便地调用常用的命令行选项,这个代码仓库提供了这些“快捷方式”。

要安装默认的 colcon mixin,请运行以下命令:

colcon mixin add default https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yamlcolcon mixin update default

然后,尝试使用debug混合配置:

colcon build --mixin debug

更多详情,请参阅 colcon mixin


关注【智践行】公众号,发送 【机器人】 获得机器人经典学习资料

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

ROS2 Colcon 构建工具 工作空间
相关文章