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 | cd ~/dev_ws/src |
编译功能包
在创建好的功能包中,可以继续完成代码的编写,之后需要编译和配置环境变量,才能正常运行:
1 | cd ~/dev_ws/src |
功能包的结构
分析以下刚刚创建的两个功能包的结构。
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"配置的程序入口。
