Beginner:Client libraries-1 使用colcon编译包

发布时间 2023-06-01 20:47:00作者: gary_123

目标:用colcon编译一个ROS2工作空间。

这是一个关于如何使用colcon创建和构建ROS2工作区的简短教程。

背景

colcon是ROS编译工具catkin_makecatkin_make_isolatedcatkin_tools and ament_tools的替代。

安装colcon

sudo apt install python3-colcon-common-extensions

基本概念

一个ROS工作空间是一个有特殊结构的目录。有一个存放源码的src目录。

colcon会在与src同目录下创建如下目录:

build:编译过程的中间文件。

install:每个包被安装的地方,默认每个包都会安装到一个分开的子目录。

log:日志目录包含关于每个colcon调用的各种日志信息。

与catkin相比,没有了devel目录

创建一个工作空间

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws

添加源文件到src下

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

编译工作空间

在工作区的根目录中,运行colcon build。由于像ament_cmake这样的构建类型不支持devel空间的概念,并且需要安装包,所以colcon支持选项--symlink install。这允许通过更改源空间中的文件(例如Python文件或其他未编译的资源)来更改已安装的文件,以实现更快的迭代。

colcon build --symlink-install

Run tests

colcon test

source 环境

当编译成功之后,输出到install文件中,在使用之前需要添加路径,执行如下操作

source install/setup.bash

运行demo

ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function
ros2 run examples_rclcpp_minimal_publisher publisher_member_function

创建你自己的包

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

colcon支持多个build类型。推荐的编译类型是ament_cmake以及ament_python。也支持纯cmake包。

像demo_nodes_cpp这样的包使用ament_cmake构建类型,并使用cmake作为构建工具。

可以使用ros2 pkg create来构建新的包

 

快速进入某个功能包 colcon_cd

echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
echo "export _colcon_cd_root=/opt/ros/humble/" >> ~/.bashrc

 

命令补全

如果安装了colcon argcomplete包,则命令colcon支持bash和类似bash的shell的命令完成。

echo "source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash" >> ~/.bashrc

注意

如果您不想构建特定的包,请在目录中放置一个名为COLCON_IGNORE的空文件,该文件将不会被索引。

如果您想避免在CMake包中配置和构建测试,可以传递:--CMake args-DBUILD_TESTING=0。

如果要从包中运行单个特定测试:

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