【ROS2笔记02】ROS2功能包构建工具colcon
01 功能包构建工具colcon
安装colcon。colcon其实是一个功能包构建工具,这个工具用来做什么的呢?简单点说就是用来编译代码的。ROS2默认是没有安装colcon的,所以需要执行以下命令:
1 | sudo apt-get install python3-colcon-common-extensions |
安装完成后,打开终端输入colcon即可看到其使用方法。
1 | colcon -h |
02 如何使用 colcon
ROS2与ROS1一样,编写程序都依赖工作空间(worksapce,简写ws)。
1 | mkdir -p ws_helloworld/src |
上述命令执行完毕,在 ws_helloworld 目录下包含 build install log src 四个子级目录。
03 创建节点 Helloworld
[!note] ROS2编写程序流程
亘古不变的5步:
- 创建功能包
- 编辑源文件
- 编辑配置文件
- 编译
- 执行
3.1 Helloworld C++
3.1.1 创建功能包
1 | cd ./ws_helloworld/src |
进入功能包文件夹:
1 | cd pkg_helloworld_cpp/ |
可以看到,刚刚自动生成了:源码文件夹src 和源码文件 src/helloworld.cpp;生成配置文件 CMakeLists.txt 和 package.xml;还有include 文件夹。
3.1.2 编辑源文件
发现创建了一个 pkg_helloworld_cpp/src/helloworld.cpp ,这个就是源文件。
源文件编写流程:
- 包含头文件
- 初始化ROS2客户端
- 创建节点指针
- 各种操作(比如,输出日志)
- 释放资源
示例代码:
1 | // POP:面向过程编程 |
推荐使用OOP方式:面向对象编程
1 |
|
3.1.3 编辑配置文件
先保持默认不变。简单看一眼配置文件。
3.1.3.1 package.xml
to do
3.1.3.2 CMakeLists.txt
to do
3.1.4 编译
1 | colcon build |
3.1.5 执行
在工作空间下,执行如下指令:
1 | . install/setup.bash |
3.2 Helloworld Python
3.2.1 创建功能包
1 | cd ./ws_helloworld/src |
进入功能包文件夹:
1 | cd pkg_helloworld_py/ |
可以看到,刚刚自动生成了:源码文件包 pkg_helloworld_py ,其中有__init__.py 和源码文件 helloworld.py;生成配置文件 setup.py 和 package.xml;还有resource 文件夹。
3.2.2 编辑源文件
发现创建了一个 pkg_helloworld_py/src/helloworld.py ,这个就是源文件。
源文件编写流程:
- 包含头文件
- 初始化ROS2客户端
- 创建节点指针
- 各种操作(比如,输出日志)
- 释放资源
示例代码:
1 | ## POP: 面向过程编程 |
推荐使用OOP方式:面向对象编程
1 | ## OOP:面向对象编程 |
3.2.3 编辑配置文件
先保持默认不变。简单看一眼配置文件。
3.2.3.1 package.xml
to do
3.2.3.2 setup.py
添加 entry_point:
1 | entry_points={ |
3.2.4 编译
1 | colcon build |
3.2.5 执行
在工作空间下,执行如下指令:
1 | . install/setup.bash |
3.3 初始化和资源释放
Q:初始化(init) 与 资源释放(shutdown) 在程序中起什么作用?
A:初始化创建 Context 对象,资源释放就是销毁 Context 对象
04 ROS2的文件系统
to do
05 常用工具
5.1 命令行工具
ROS2 的文件系统核心是功能包,我们可以通过编译指令 colcon 和 ros2 内置的工具指令 ros2 来实现功能包的创建、编译、查找与执行等相关操作。
1 | # 创建 |
1 | # 编译 |
1 | # 查找 |
1 | # 执行 |
5.2 可视化工具
略。



