ros2学习笔记24--用colcon对包进行编译(代码片段)

鸿_H 鸿_H     2022-12-15     294

关键词:

概要:这篇内容主要介绍用colcon对包进行编译

环境:ubuntu20.04,ros2-foxy,vscode

最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现

3.6用colcon对包进行编译(原文:https://docs.ros.org/en/foxy/Tutorials/Colcon-Tutorial.html

>>教程>>colcon对包进行编译

你正阅读的是ros2较老版本(Foxy),但仍然支持的说明文档.想查看最新版本的信息,请看galactic版本链接( https://docs.ros.org/en/galactic/Tutorials.html

colcon对包进行编译

目录

1.背景
2.预备知识
2.1安装colcon
2.2安装ros2
3.基础
3.1创建工作空间
3.2添加源码
3.3source环境变量
3.4编译工作空间
3.5运行测试案例
3.6source环境变量
3.7测试demo
4.创建自己的包
5.小技巧

1.背景

colconros编译工具catkin_makecatkin_make_isolatedcatkin_toolsament_tools的迭代品.想了解更多colcon的设计信息,可以看这篇文档(https://design.ros2.org/articles/build_tool.html).

源码可以在colcon github组织(https://github.com/colcon)找到.

2.预备知识

2.1安装colcon

linux:

sudo apt install python3-colcon-common-extensions

2.2安装ros2

为了构建样例,你需要安装ros2.

跟着这个安装教程(https://docs.ros.org/en/foxy/Installation.html)进行安装.

注意:

如果从发行包安装,这个教程需要的是桌面安装版本(https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html#linux-install-debians-install-ros-2-packages).

3.基础

ros工作空间是一种具有独特结构的目录.一般情况下,会有一个叫src子目录.该子目录放着ros包的源码.一般情况下,目录一开始都是空的.

colcon是从源代码开始编译.默认情况下,会创建如下几个跟src同级的目录.

*build目录放的是中间文件.例如调用CMake时,每个包都会生成一个子文件夹.

*install目录是放包的安装文件.默认情况下,每个包会被安装到一个独立的子目录.

*log目录包含每次执行colcon的各种日志信息.

注意:

对比catkin,这里是没有devel目录的.

3.1创建工作空间

首先,创建一个目录(ros2_example_ws)覆盖我们工作空间:

linux:

mkdir -p ~/ros2_example_ws/src
cd ~/ros2_example_ws

此时,工作空间单纯只包含一个空目录src

.
└── src

1 directory, 0 files

3.2添加源码

拉取例子(https://github.com/ros2/examples)仓库到工作空间的src目录下:

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

现在,工作空间应该有一些ros2案例源码:

.
└── src
    └── examples
        ├── CONTRIBUTING.md
        ├── LICENSE
        ├── rclcpp
        ├── rclpy
        └── README.md

4 directories, 3 files

3.3source一下ros2环境变量

source一下ros2环境变量非常重要,这会为案例包提供必要的编译依赖.这步操作可以通过source一下二进制包或者源码安装提供的配置脚本来完成,即另外colcon一次工作空间(https://docs.ros.org/en/foxy/Installation.html).我们称这个环境为底层.

我们工作空间,ros2_examples_ws,是覆盖在已安装的ros2上面的.一般情况下,少量包放到一个工作空间是值得推荐的,把所有包都放到一个工作空间是不可取的.

3.4编译工作空间

注意

Windows上面构建包,你需要配置Visual Studio环境,可以看构建ros2代码课程(https://docs.ros.org/en/foxy/Installation/Windows-Development-Setup.html#windows-dev-build-ros2)获取更多细节.

在工作空间的根目录,运行colcon build进行编译.由于编译类型如ament_cmake并不支持devel空间概念和不保证包可被安装的,而colcon支持选项是--symlink-install.这得更改安装文件,通过修改源空间的文件(如Python文件或其他未编译的资源)可以更快实现.

linux:

colcon build --symlink-install

编译完成后,我们应该看到build, installlog目录:

.
├── build
├── install
├── log
└── src

4 directories, 0 files

3.5运行测试案例

为了运行测试方才我们创建的包.运行下面指令:

linux:

colcon test

3.6source环境变量

colcon已成功编译,这些输出会放在install目录.在你可以使用任何安装可执行文件或者库之前,colcon会在install目录生成bash/bat文件,目地是帮助配置环境.这些文件将所有必需的元素添加到你的路径和库路径,以及提供包导出的任何bashshell命令。

linux:

. install/setup.bash

3.7测试demo

source一下环境变量,我们可以运行使用colcon构建的执行文件.让我们运行案例里面的订阅器节点:

ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function

另一个终端,运行发布器节点(别忘了source一下配置脚本):

ros2 run examples_rclcpp_minimal_publisher publisher_member_function

你应该会看见发布器或订阅器消息数目不断增加.

4.创建自己的包

colcon使用了package.xml,其格式在REP 149有定义(https://www.ros.org/reps/rep-0149.html)(这格式(https://www.ros.org/reps/rep-0140.html)也是支持的).

colcon支持多编译类型,推荐的类型有ament_cmakeament_python,也支持纯cmake包.

ament_python编译的一个例子是ament_index_pythonhttps://github.com/ament/ament_index/tree/foxy/ament_index_python)包,文件setup.py是编译的入口点.

一个包,如demo_nodes_cpphttps://github.com/ros2/demos/tree/foxy/demo_nodes_cpp),采用ament_cmake编译类型,也使用CMake作为编译工具.

方便起见,在模板基础上,你可以使用ros2 pkg create工具创建一个新包.

注意:

对于catkin使用者,这(ros2 pkg create)指令等同于catkin_create_package指令.

5.小技巧

如果不想编译特定的包,在该包目录里面创建一个名为COLCON_IGNORE文件,这样子这包就不会被索引到了.

如果你想在CMake包避免配置和构建测试,你可以传入:--cmake-args -DBUILD_TESTING=0

如果你想对包运行一个特定的测试方案:

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

其他

个人认为重点:

colcon build --symlink-install,colcon test两个指令含义

这课程是在等毕业证那十几天搞的,室友问,现在在线翻译这么强大,为啥还在这里瞎折腾呢?我说,我的目地是好好认真看一下,了解一下,自己折腾,目前是我想到最好的办法来获得最佳效果,即使这翻译有点别扭,哈哈哈.

#####################
不积硅步,无以至千里
好记性不如烂笔头
感觉有点收获的话,麻烦大大们点赞收藏哈

ROS2 colcon 构建未在 Windows 中显示任何错误消息

】ROS2colcon构建未在Windows中显示任何错误消息【英文标题】:ROS2colconbuildnotshowinganyerrormessagesinwindows【发布时间】:2019-05-0903:15:06【问题描述】:在windows上使用colconbuild构建ROS2发布者时,没有显示调试错误消息,只显示失败或完... 查看详情

openeuler21.03ros2打包指南(代码片段)

...os1当中我们使用的catkin进行编译,在ros2当中我们使用colcon进行编译关于colcon参考的Bootstrapfromsource—colcondocumentation$mkdircolcon-from-source&&cdcolcon-from-source$curl--outputcolcon.reposh 查看详情

openeuler21.03ros2打包指南(代码片段)

...os1当中我们使用的catkin进行编译,在ros2当中我们使用colcon进行编译关于colcon参考的Bootstrapfromsource—colcondocumentation$mkdircolcon-from-source&&cdcolcon-from-source$curl--outputcolcon.reposh 查看详情

openeuler21.03ros2打包指南(代码片段)

...os1当中我们使用的catkin进行编译,在ros2当中我们使用colcon进行编译关于colcon参考的Bootstrapfromsource—colcondocumentation$mkdircolcon-from-source&&cdcolcon-from-source$curl--outputcolcon.reposh 查看详情

ros2学习笔记10--使用ros2bag进行录制和回放数据(代码片段)

概要:这篇主要介绍使用ros2bag进行录制和回放数据环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.1.10录制和回放数据(原文:https://docs.ros.or... 查看详情

ros2学习笔记25--ros2话题统计编写教程(c++)(代码片段)

概要:这篇内容主要介绍用c++编写能够统计话题的侦听器环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现4.1ros2话题统计教程(C++)(... 查看详情

ros2学习笔记12--创建ros2包(代码片段)

概要:这篇主要介绍如何创建ros2包环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.2创建自己第一个ros2包(原文:https://docs.ros.org/en/foxy/Tutor... 查看详情

ros2学习笔记16--详述ros2接口(代码片段)

概要:这篇主要进一步介绍ros2接口.环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.8拓展ros2接口(原文:https://docs.ros.org/en/foxy/Tutorials... 查看详情

ros2学习笔记19--探索ros2doctor工具(代码片段)

概要:这篇主要介绍ros2doctor工具环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.11探索ros2doctor工具(原文:https://docs.ros.org/en/foxy/Tutorials/Get... 查看详情

ros2学习笔记15--创建自定义ros2接口文件msg和srv(代码片段)

概要:这篇主要介绍如何创建定制型ros2接口文件msg和srv环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.7创建自定义ros2消息msg和srv文件(原文&#x... 查看详情

ros2学习笔记28--ros2环境下,多激光雷达启动的launch文件编写样式参考(代码片段)

背景:一次需要读取多个velodyne的雷达点云数据,但是ros2知识缺少,一番折腾终有成果.1.准备velodyne的ros2版本驱动链接:https://github.com/ros-drivers/velodyne/tree/ros22.launch文件编写2.1官方 查看详情

ros2学习笔记20--创建一个action(代码片段)

概要:这篇内容主要介绍如何创建一个action环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.3.1创建一个动作(原文:https://docs.ros.org/en/foxy/Tutori... 查看详情

ros2学习笔记11--工作空间的创建(代码片段)

概要:这篇主要介绍工作空间的创建环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.1创建工作空间(原文:https://docs.ros.org/en/foxy/Tutorials/Wor... 查看详情

ros2学习笔记29--项目从ros1迁移到ros2的经验参考(代码片段)

环境:ubuntu20.04,ros-foxy(ros2),vscode背景:项目需要,一直折腾把ros1下面的包升级到ros2版本.以下纯属个人查找资料摸索,自我理解所得,有错误的地方,望大佬们不吝赐教.1.消失的句柄ro... 查看详情

ros2学习笔记9--创建一个launch文件(代码片段)

概要:这篇主要介绍launch文件环境:ubuntu20.04,ros2-foxy,vscode最后没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.1.9创建一个launch文件(原文:https://docs.ros.org/en/foxy/Tutorials/Launch-Files... 查看详情

ros2学习笔记18-velodyne16雷达点云在ros2中可视化案例参考(代码片段)

环境:ubuntu20.04,ros-foxy,vscode,velodyne-16背景:练习如何将velodyne-16雷达点云数据在ros2中读取并可视化.折腾了很久,并没有找到类似案例,所以自己总结一下.1.修改电脑ip这里修改自己电脑ip,跟大多数... 查看详情

ros2学习笔记27--实现自定义内存分配器(代码片段)

概要:这篇内容主要介绍如何实现自定义内存分配器环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现4.3实现自定义内存分配器(原文:https://docs.ros.or... 查看详情

ros2学习笔记17--在类中使用参数(c++)(代码片段)

概要:这篇主要介绍在类中使用参数(C++)环境:ubuntu20.04,ros2-foxy,vscode最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常复现.2.2.9在类中使用参数(C++)(... 查看详情