ROS实战(十一)ROS2之功能包

本文主要介绍ROS2上的功能包。

关键词:ROS2

功能包的机制,是提高ROS中软件复用率的重要方法。

创建功能包

如何在ROS2中创建一个功能包,可以使用以下这个指令:

1
ros2 pkg create --build-type <build-type> <package_name>
  • pkg:表示功能包相关的功能;
  • create:表示创建功能包;
  • build-type:表示新创建的功能包是C++还是Python的,如果是C++或者C,那这里就用ament_cmake,如果使用Python,就用ament_python;
  • package_name:新建功能包的名字。

比如在终端中分别创建C++和Python版本的功能包:

1
2
3
cd ~/dev_ws/src
ros2 pkg create --build-type ament_cmake learning_pkg_c # C++
ros2 pkg create --build-type ament_python learning_pkg_python # Python

编译功能包

在创建好的功能包中,可以继续完成代码的编写,之后需要编译和配置环境变量,才能正常运行:

1
2
3
cd ~/dev_ws/src
colcon build # 编译工作空间所有功能包
source install/local_setup.bash

功能包的结构

分析以下刚刚创建的两个功能包的结构。

C++功能包

首先看下C++的功能包,其中必然存在两个文件:package.xml和CMakerLists.txt

package.xml文件的主要内容如下,包含功能包的版权描述,和各种依赖的声明。

CMakeLists.txt文件是编译规则,C++代码需要编译才能运行,必须要在该文件中设置如何编译,使用CMake语法。

Python功能包

C++功能包需要将源码解释成可执行文件,但是Python语言是解析型的,不需要编译。

也是有两个文件:package.xml和setup.py。

package.xml文件的主要内容和C++版本的功能包一样,包含功能包的版权描述,和各自依赖的声明。

setup.py文件里面也包含一些版权信息,初次之外,还有"entry_points"配置的程序入口。