ROS2入门21讲__第06讲__工作空间与功能包2

前言

在下载的教程代码中,大家可以看到有很多不同名称的文件夹,这些在ROS2并不是普通的文件夹,而是叫做功能包

每个机器人可能有很多功能,比如移动控制、视觉感知、自主导航等,如果我们把这些功能的源码都放到一起当然也是可以的,但是当我们想把其中某些功能分享给别人时,就会发现代码都混合到了一起,很难拆分出来。

举个例子,我们手上有很多红豆、绿豆、黄豆,假设都放在一个袋子里,如果只想把黄豆都拿出来,是不是得在五颜六色的豆子里一颗一颗都找出来,数量越多,你就越头疼;如果我们把不同颜色的豆子放在不同的三个袋子里,需要拿出某种豆子的时候,不就立刻可以找出来了么。

功能包就是这个原理,我们把不同功能的代码划分到不同的功能包中,尽量降低他们之间的耦合关系,当需要在ROS社区中分享给别人的时候,只需要说明这个功能包该如何使用,别人很快就可以用起来了。

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

创建功能包

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

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

ros2命令中:

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

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

$ 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

编译功能包

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

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

功能包的结构

功能包并不是普通的文件夹,那如何判断一个文件夹是否是功能包呢?我们来分析下刚才新创建两个功能包的结构。

C++功能包

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

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

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

Python功能包

C++功能包需要将源码编译成可执行文件,但是Python语言是解析型的,不需要编译,所以会有一些不同,但也会有这两个文件:package.xmlsetup.py

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

setup.py文件里边也包含一些版权信息,除此之外,还有“entry_points”配置的程序入口,在后续编程讲解中,我们会给大家介绍如何使用。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "ROS2入门21"是一套图文教程,以简单易懂的方式介绍ROS2的基本概念和操作。通过这套教程,读者可以了解Ros2的工作原理,学习如何使用ROS2搭建机器人系统。教程分为21个部分,每个部分解一个话题,ROS2的体系结构,节点,Topic,服务等。对于初学者来说,这套教程是学习ROS2的良好入门材料。在学习过程中,读者可以循序渐进地学习相关知识,通过实际操作,了解ROS2的核心技术。教程还提供了大量的示例代码和操作指南,帮助读者更好地理解ROS2的操作过程。此外,教程也提供了一些高级内容的介绍,如如何自动部署ROS2应用,如何实现ROS2的多机通信等。总体而言,ROS2入门21图文教程是一套非常实用的教程,适合初学ROS2的读者使用。学习这套教程可以让读者了解ROS2在机器人系统中的应用,从而更好地掌握相关技能。 ### 回答2: 如今,ROS成为了机器人领域调试、开发和测试的标准,ROS 2是其最新版本,它主要带来了更快的性能、更好的可靠性和更好的可扩展性等特性。 为了帮助大家更快、更好地学习ROS 2,本着开放、分享、合作的精神,一位名为vxy10的作者为我们制作了《ROS 2入门21图文教程》。 该教程分为多个章节,涵盖了ROS 2的基础知识、常用工具的使用以及一些实例案例的解等内容。 首先,作者详细阐述了ROS 2的基础概念,例如节点、话题、服务、参数、行为等,为读者提供了一个清晰的整体认识。然后,课程解了ROS 2常用的工具和函数,括Rviz、rostopic、rosnode、rqt等,为新手提供了一个快速入门的方式。接着,课程分别解了一些实例案例,例如如何使用 ROS 2进行控制机器人、如何使用ROS 2进行机器人的对话等,为读者提供了一个更加深入的了解。 本教程不仅提供了详尽的代码示例,还有丰富精美的图例,能够帮助读者更好地理解各种概念和示例。此外,每个章节都配有习题和答案,帮助读者巩固所学知识,提高学习效率。 总之,《ROS 2入门21图文教程》具有系统性、实用性和互动性等特点,对于想要学习ROS 2的读者来说,是一份非常宝贵的资源。 ### 回答3: ROS2入门21图文教程是一篇非常详细的教程,旨在帮助初学者了解ROS2的基本知识和使用方法。这个教程分为21个章节,每个章节都覆盖了ROS2的不同方面和主题。 在第一章中,教程简要介绍了ROS2的概念和优点,让读者了解ROS2的用途和处理能力。第二章解了ROS2的安装和设置,括环境变量的配置和ROS2节点的启动方式。第三章介绍了ROS2的工具,括rqt图形界面,rviz可视化环境等,这些工具是ROS2开发的关键组成部分。第四章到第十二章解了ROS2的核心概念,括消息传递机制、文件结构、和节点等,这些都是ROS2开发的重要知识点。第十三章到第十五章解了ROS2服务,括服务器和客户端的创建和使用。第十六章到第十九章解了ROS2参数服务器和节点名称,涉及到ROS2开发中的重要概念和工具。最后两章解了ROS2的调试方式和使用ROS2与OpenCV进行通信的方法。 整个教程详细、生动、易于理解,其中配图和代码示范也让读者更好地理解和操作ROS2。对于初学者来说,这个教程是入门ROS2的一份非常好的材料,不仅涵盖了大部分基础知识和技能,而且通过大量实例的演示,让读者能够更好地掌握ROS2的使用方法。所以,这个教程是初学ROS2的开发者们不可多得的宝贵资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值