• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

ROS2入门教程——14. 创建ROS2功能包

人工智能 古月 2786次浏览 0个评论

功能包是ROS2中组织代码的基本容器,方便我们编译、安装、分发开发的代码,一般来讲,每个功能包都是用来完成某项具体的功能相对完整的单元。   ROS2中的功能包可以使用CMake或者Python两种方式来编译,其本身是一个“文件夹”,但和文件夹不同的是,每个功能包中都会有这些文件:   CMake包:

  • package.xml:功能包的描述信息
  • CMakeLists.txt:描述CMake编译该功能包的规则

  Python包:

  • package.xml:功能包的描述信息
  • setup.py:包含如何安装该包的说明
  • setup.cfg:如果包内有可执行文件,需要设置该文件来让ros2 run命令找到它
  • /<package_name>:包含 __init__.py 的文件夹,和功能包同名

  每个工作空间中可以有多个功能包,CMake或者Python包都可以,但是功能包是不能嵌套的。典型的一个工作空间内功能包的结构如下:  

workspace_folder/
    src/ 
        package_1/ 
             CMakeLists.txt
             package.xml

        package_2/ 
             setup.py 
             package.xml 
             resource/package_2 

         ... 
         package_n/ 
             CMakeLists.txt 
             package.xml

 

1.创建功能包

还是使用之前已经创建好的dev_ws工作空间,我们在其中的src文件夹中来创建新功能包。   打开终端后进入到dev_ws/src路径下:

cd ~/dev_ws/src

  然后就可以使用如下语法来创建功能包了(以下二选一):   CMake包:

ros2 pkg create --build-type ament_cmake <package_name>

Python包:

ros2 pkg create --build-type ament_python <package_name>

  创建功能包的指令还允许设置节点名,自动生成一个helloworld的例程代码(以下二选一)。   CMake包:

ros2 pkg create --build-type ament_cmake --node-name my_node my_package

Python包:

ros2 pkg create --build-type ament_python --node-name my_node my_package

  运行成功后就可以在src中看到一个新的文件夹叫做my_package,同时在终端中有很多日志信息:   CMake包:   ROS2入门教程——14. 创建ROS2功能包   Python包:   ROS2入门教程——14. 创建ROS2功能包  

2.编译功能包

接下来进入编译流程,一定要将终端cd到dev_ws的路径下来:

cd ~/dev_ws

  然后就可以编译啦:

colcon build

  这个命令会编译工作空间中的所有功能包,如果只想编译某一个包的话,可以这样:

colcon build --packages-select my_package

  ROS2入门教程——14. 创建ROS2功能包  

3.设置环境变量

打开一个新的终端,运行下工作空间的环境变量,这样才能让该终端找到新创建的包:

. install/setup.bash

  接下来就可以在该终端中愉快的运行新建的功能包了。  

4.运行功能包中的节点

在终端中使用如下命令即可运行新建功能包的节点啦:

ros2 run my_package my_node

  终端中可以看到:   CMake包:   ROS2入门教程——14. 创建ROS2功能包   Python包:   ROS2入门教程——14. 创建ROS2功能包  

5.功能包里有什么

不管你是用CMake还是python创建的包,打开看一下,里边有哪些默认的文件:   CMake包:   ROS2入门教程——14. 创建ROS2功能包 src中有一个 my_node.cpp 文件,就是实现上边看到hello world的例程代码。   Python包:   ROS2入门教程——14. 创建ROS2功能包 my_package中有一个 my_node.py 文件,就是实现上边看到hello world的例程代码。  

6.修改package.xml文件

新建功能包中的package.xml文件需要我们手动完善一下,包括其中的功能包描述、版本信息、使用许可证等,默认都有加“TODO”标志。   CMake包:   ROS2入门教程——14. 创建ROS2功能包   Python包:   ROS2入门教程——14. 创建ROS2功能包   完善以上描述信息、许可证和作者邮箱,关于许可证的详细介绍可以参考: https://opensource.org/licenses/alphabetical   除了这些基本信息之外,还可以看到不少以“ _depend”结尾的标签,这些就是用来描述功能包依赖的,如果我们在编写代码过程中新增加了什么依赖,都可以手动添加到这里来。   如果使用的是Python包,还需要多修改一个文件setup.py:   ROS2入门教程——14. 创建ROS2功能包   其中第16~19行的内容需要修改的和package.xml文件一致。   OK,这就是ROS2中创建功能包的方法。  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明ROS2入门教程——14. 创建ROS2功能包
喜欢 (0)

您必须 登录 才能发表评论!

加载中……