ros2 学习05 功能包定义

43 篇文章 1 订阅
42 篇文章 2 订阅

什么是功能包?

每个机器人可能有很多功能,比如移动控制、视觉感知、自主导航等。这里的,每一个功能的代码都独立的放在一个文件下,就定义为一个功能包。每个功能包都能独立的运行

那如果说我不要分开放可以吗?当然可以

ros 中的功能包定义 类似于其他传统系统服务里的微服务概念,比如你要开发一个电商系统,系统里有用户服务,商品服务,订单服务,评价服务等等。

与功能包相关的指令 ros2 pkg

create       Create a new ROS2 package
executables  Output a list of package specific executables
list         Output a list of available packages
prefix       Output the prefix path of a package
xml          Output the XML of the package manifest or a specific tag

列出可执行文件

列出所有

ros2 pkg executables

列出turtlesim功能包的所有可执行文件

ros2 pkg executables turtlesim

在这里插入图片描述

列出所有的包

ros2 pkg list

在这里插入图片描述

输出某个包所在路径的前缀

ros2 pkg prefix  <package-name>

比如小乌龟

ros2 pkg prefix turtlesim

在这里插入图片描述

创建功能包

如何在ROS2中创建一个功能包呢?我们可以使用这个指令:

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版本的功能包:

cd ~/dev_ws/src

创建C++ 功能包示例

ros2 pkg create --build-type ament_cmake learning_pkg_c

创建Python 功能包示例

ros2 pkg create --build-type ament_python learning_pkg_python

编译功能包

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

cd ~/dev_ws
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”配置的程序入口,在后续编程讲解中,我们会给大家介绍如何使用。

在这里插入图片描述

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小海聊智造

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值