首页 > 其他分享 >Beginner:Client libraries-1 使用colcon编译包

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

时间:2023-06-01 20:56:03浏览次数:41  
标签:src colcon Beginner -- libraries 编译 install ros2

目标:用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

 

标签:src,colcon,Beginner,--,libraries,编译,install,ros2
From: https://www.cnblogs.com/gary-guo/p/17450182.html

相关文章

  • ROS2-Beginner:9-启动节点
    目标:使用命令行工具来启动多个节点背景在大多数入门教程中,您一直在为运行的每个新节点打开新的终端。当您创建越来越多节点同时运行的更复杂的系统时,打开终端和重新输入配置细节会变得乏味。launch文件允许您同时启动和配置包含ROS2节点的许多可执行文件。使用ros2-launch命......
  • ROS2-Beginner:10-记录和播放数据
    目标:记录发布到话题上的数据,可以任何时候回放和检查。背景ros2-bag是一个命令行工具,用于记录系统中主题发布的数据。它累积在任意数量的主题上传递的数据,并将其保存在数据库中。然后,您可以回放数据以重现测试和实验的结果。录制主题也是分享你的作品并允许他人重新创作的好方法......
  • ROS2-Beginner:8-使用rqt_console来浏览日志
    目标:了解rqt_console,用于查看日志消息的工具。背景rqt_console是一个图形化工具用于查看ROS2中的日志消息。通常,日志消息在你个终端显示。用rqt_console,可以统一浏览这些日志,过滤、保存以及从文件中加载。任务1、启动rqt_consoleros2runrqt_consolerqt_console启动turt......
  • AtCoder Beginner Contest 214 G Three Permutations
    洛谷传送门AtCoder传送门比较平凡的一个容斥。考虑把问题转化成,求\(\foralli\in[1,n],r_i\nei\landr_i\nep_i\)的\(r\)方案数。考虑到不弱于错排,所以容斥。设钦定\(i\)个\(r_i\)取了\(i,p_i\)中的一个的方案数为\(f_i\),其余任意,那么:\[ans=\sum\limi......
  • ROS2-Beginner:7-理解行为
    背景行为ROS2中的一种通信类型,用于长时间的运行任务。由三个部分组成:目标,反馈以及结果。行为建立在话题和服务之上的。他们的功能类似于服务,但可以取消操作。他们还提供了稳定的反馈,而不是返回单一的响应的服务。行为使用了一个客户端-服务器模型,类似于发布者和订阅者。一个行......
  • ROS2-Beginner:5-理解服务
    背景服务是rosgraph中另一种通信方法。服务是基于调用和响应相比话题是发布者和订阅者模式。话题允许节点来订阅数据流并获得连续的更新。服务只当被具体客户端调用时才提供数据。任务1、打开turtlesim仿真器ros2runturtlesimturtlesim_noderos2runturtlesimturtle......
  • ROS2-Beginner:3-理解节点
    目标:学习ROS2中节点的功能,以及与他们交互的工具背景1、ROS2graphROS图是ROS2元素同时一起处理数据的网络。它包含了所有可执行文件以及它们之间的连接,如果您要将它们全部映射出来并可视化的话。2、在ROS2中的节点在ROS中的每一个节点都应该负责单一的模块化目的,例如控制车轮......
  • AtCoder Beginner Contest 247 Ex Rearranging Problem
    洛谷传送门AtCoder传送门考虑我们如何判定一个排列是否能成为最终答案。连边\(i\top_i\),设环数为\(k\),那么最少交换次数为\(n-k\)。那么充要条件是,每个环所有点的\(c_i\)相同,并且\(n-k\leK\)且\(2\mid(K-(n-k))\)。\(K\)和\(n-k\)奇偶性相同是因为,......
  • AtCoder Beginner Contest 213 H Stroll
    洛谷传送门AtCoder传送门考虑一个朴素dp,\(f_{t,u}\)表示\(t\)时刻走到\(u\)点的方案数。有转移:\[f_{t,u}=\sum\limits_{(u,v)=E_i}\sum\limits_{k=0}^{t-1}f_{k,v}\timesp_{i,t-k}\]直接做时间复杂度\(O(mT^2)\),无法接受。发现转移是加法卷积形式......
  • AtCoder Beginner Contest 288(D,E,F)
    AtCoderBeginnerContest288(D,E,F)D(思维)D有一个数组,然后有\(q\)次询问,每一次输入一对\(l,r\),我们要判断这一段里面的数是不是好数组好数组,在进行下面任意次操作后可以把这一段数字都变成\(0\),那么这就是个好数组操作是选择一个\(i\)和一个\(c\),但是\(i+k-1\)要小于\(......