使用 colcon
构建软件包 [4368]
目录 []
**目标:**使用``colcon``构建一个ROS 2工作空间。 [4369]
教程级别: 初学者 [3951]
这是一个简要教程,介绍如何使用``colcon``创建和构建ROS 2工作空间。它是一个实用教程,不旨在取代核心文档。 [4370]
背景 [16410]
colcon``是对ROS构建工具``catkin_make
、catkin_make_isolated
、``catkin_tools``和``ament_tools``的改进。有关colcon设计的更多信息,请参阅`此文档 <https://design.ros2.org/articles/build_tool.html>`__。 [4371]
源代码可以在`colcon GitHub组织 <https://github.com/colcon>`__中找到。 [4372]
先决条件 [16411]
基础知识 []
ROS工作空间是一个具有特定结构的目录。通常有一个 src
子目录。在该子目录下是ROS软件包的源代码所在位置。通常该目录开始时为空。 [4379]
colcon进行外部构建。默认情况下,它会创建以下目录作为 src
目录的同级目录: [4380]
build
目录将用于存储中间文件。对于每个软件包,将在其中创建一个子文件夹,例如在该子文件夹中调用 CMake。 [4381]install
目录是每个软件包将要安装到的位置。默认情况下,每个软件包将被安装到单独的子目录中。 [4382]log
目录包含有关每个 colcon 调用的各种日志信息。 [4383]
注解
与 catkin 相比,没有 devel
目录。 [4384]
创建一个工作空间 [4385]
首先,创建一个目录(ros2_ws
)来容纳我们的工作空间: [4386]
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
md \dev\ros2_ws\src
cd \dev\ros2_ws
此时,工作空间中只包含一个空目录 src
: [4387]
.
└── src
1 directory, 0 files
添加一些源文件 [4388]
将 examples 存储库克隆到工作区的 src
目录中: [4389]
git clone https://github.com/ros2/examples src/examples -b humble
现在工作区应该有 ROS 2 示例的源代码: [4390]
.
└── src
└── examples
├── CONTRIBUTING.md
├── LICENSE
├── rclcpp
├── rclpy
└── README.md
4 directories, 3 files
源目录 [4391]
很重要的是,我们已经为现有的 ROS 2 安装环境提供了所需的构建依赖项,以便为示例软件包提供支持。这可以通过对二进制安装或源码安装提供的设置脚本进行实现,即使用另一个 colcon 工作区提供的设置脚本(参见 Installation)。我们称这个环境为 源目录。 [4392]
我们的工作空间``ros2_ws``将作为现有ROS 2安装的**覆盖层**。一般而言,建议在计划迭代少量软件包时使用覆盖层,而不是将所有软件包放入同一个工作空间中。 [4393]
构建工作空间 [4394]
在工作空间的根目录下运行``colcon build``命令。由于``ament_cmake``等构建类型不支持``devel``空间的概念,而且需要安装软件包,因此colcon支持选项``--symlink-install``。这允许通过更改``source``空间中的文件(例如Python文件或其他非编译资源)来更改已安装文件,以便实现更快的迭代。 [4396]
colcon build --symlink-install
colcon build --symlink-install
colcon build --symlink-install --merge-install
Windows 不允许使用过长的路径,所以 merge-install
将会把所有路径合并到 install
目录中。 [4397]
在构建完成后,我们应该能够看到 build
、install
和 log
目录: [4398]
.
├── build
├── install
├── log
└── src
4 directories, 0 files
创建你自己的包 [4410]
colcon使用在`REP 149 <https://www.ros.org/reps/rep-0149.html>`__中定义的``package.xml``规范(也支持`format 2 <https://www.ros.org/reps/rep-0140.html>`__)。 [4411]
colcon支持多种构建类型。推荐的构建类型是``ament_cmake``和``ament_python``。还支持纯``cmake``包。 [4412]
``ament_python``构建的一个示例是`ament_index_python包 <https://github.com/ament/ament_index/tree/humble/ament_index_python>`__,其中setup.py是构建的主要入口点。 [4413]
诸如`demo_nodes_cpp <https://github.com/ros2/demos/tree/humble/demo_nodes_cpp>`__的包使用``ament_cmake``构建类型,并使用CMake作为构建工具。 [4414]
为了方便起见,您可以使用``ros2 pkg create``工具基于模板创建一个新的包。 [4415]
注解
对于``catkin``用户来说,这相当于``catkin_create_package``。 [4416]
设置 colcon_cd
[4417]
命令 colcon_cd
允许您快速将当前工作目录更改为包的目录。例如,colcon_cd some_ros_package
可快速将您导航到目录 ~/ros2_ws/src/some_ros_package
。 [4418]
echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
echo "export _colcon_cd_root=/opt/ros/humble/" >> ~/.bashrc
echo "source /usr/local/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
echo "export _colcon_cd_root=~/ros2_install" >> ~/.bashrc
尚未可用 [4419]
根据您安装 colcon_cd
的方式和工作空间的位置,上述说明可能有所不同,请参考 文档 以获取更多详细信息。要在Linux和macOS上撤消此操作,请找到系统的shell启动脚本并删除附加的source和export命令。 [4420]
设置 colcon
的选项自动补全 [4421]
如果已安装 colcon-argcomplete
包,则命令 colcon
支持命令补全,适用于 bash 和类似 bash 的 shell。 [4422]
echo "source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash" >> ~/.bashrc
echo "source $HOME/.local/share/colcon_argcomplete/hook/colcon-argcomplete.bash" >> ~/.bash_profile
尚未可用 [4419]
根据您安装 colcon
的方式和工作空间的位置,上述说明可能会有所不同,请参考 文档 获取更多详细信息。要在 Linux 和 macOS 上撤消此操作,请找到您系统的 shell 启动脚本并删除附加的源命令。 [4423]