首页 > 其他分享 >Beginner:Client libraries-3 创建一个包

Beginner:Client libraries-3 创建一个包

时间:2023-06-02 11:14:42浏览次数:53  
标签:xml src creating Beginner package libraries Client ament my

目标:使用CMake或者Python来创建一个新的包,运行可执行程序;

背景

1、ROS2的包是什么

一个包是作为ROS2代码的组织单元。如果你想安装你的代码或与他人共享,那么你需要将其组织在一个包中。有了软件包,您可以发布您的ROS 2作品,并允许其他人轻松构建和使用它。

在ROS2中包的创建使用ament作为它的编译系统,然后colcon作为它的编译工具。您可以使用官方支持的CMake或Python创建包,尽管也存在其他构建类型。

2、ROS2包由什么组成

ROS 2 Python和CMake软件包都有自己的最低要求内容:

CMake

CMakeLists.txt文件描述了怎样编译包中的代码;

include/<package_name>目录包含包中的公用头文件;

package.xml文件包含有关包的元信息;

src目录包含包中源代码;

最简单的包,如下所示:

my_package/
     CMakeLists.txt
     include/my_package/
     package.xml
     src/

3、工作空间中的包

一个工作区可以包含任意多个包,每个包都位于各自的文件夹中。

你也可以在一个工作区中有不同构建类型的包(CMake、Python等)。你不能有嵌套的包。

工作空间看起来如下:

workspace_folder/
    src/
      cpp_package_1/
          CMakeLists.txt
          include/cpp_package_1/
          package.xml
          src/

      py_package_1/
          package.xml
          resource/py_package_1
          setup.cfg
          setup.py
          py_package_1/
      ...
      cpp_package_n/
          CMakeLists.txt
          include/cpp_package_n/
          package.xml
          src/

 

任务

1、创建一个包

首先,source你的ros2安装目录

c++版本
ros2 pkg create --build-type ament_cmake <package_name>
python版本
ros2 pkg create --build-type ament_python <package_name>

--node-name指定节点的名字

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

会自动生成以下的信息

going to create a new package
package name: my_package
destination directory: /home/user/ros2_ws/src
package format: 3
version: 0.0.0
description: TODO: Package description
maintainer: ['<name> <email>']
licenses: ['TODO: License declaration']
build type: ament_cmake
dependencies: []
node_name: my_node
creating folder ./my_package
creating ./my_package/package.xml
creating source and include folder
creating folder ./my_package/src
creating folder ./my_package/include/my_package
creating ./my_package/CMakeLists.txt
creating ./my_package/src/my_node.cpp

2、编译包

编译所有的包

colcon build

编译指定的包

colcon build --packages-select my_package

3、source setup文件

source install/local_setup.bash

你的工作空间已经添加到了你的path,可以使用新的包了。

4、使用package

ros2 run my_package my_node

会出现如下信息

hello world my_package package

5、检查包的内容

6、自定义package.xml

在创建包的时候,会返回description,license以及TODO等内容,他们没有被自动设置,如果你想发布你的包,则这些是需要设置的,以及maintainer需要增加。

<?xml version="1.0"?>
<?xml-model
   href="http://download.ros.org/schema/package_format3.xsd"
   schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
 <name>my_package</name>
 <version>0.0.0</version>
 <description>TODO: Package description</description>
 <maintainer email="[email protected]">user</maintainer>
 <license>TODO: License declaration</license>

 <buildtool_depend>ament_cmake</buildtool_depend>

 <test_depend>ament_lint_auto</test_depend>
 <test_depend>ament_lint_common</test_depend>

 <export>
   <build_type>ament_cmake</build_type>
 </export>
</package>
比如
<description>Beginner client libraries tutorials practice package</description>
<license>Apache License 2.0</license>

总结

创建了一个包用于组织你的代码,并且于其他人容易使用;

您的包自动填充了必要的文件,然后您使用colcon构建它,以便在本地环境中使用它的可执行文件。

 

标签:xml,src,creating,Beginner,package,libraries,Client,ament,my
From: https://www.cnblogs.com/gary-guo/p/17451194.html

相关文章

  • 6.4. HttpClient
    1.什么是HttpClient?HttpClient是Java11中引入的一个新特性,用于支持同步和异步发送HTTP请求以及处理HTTP响应。它提供了简单易用的API,使得发送HTTP请求变得非常简单。2.HttpClient的主要组件HttpClient由以下几个主要组件组成:HttpClient:用于发送请求的主要类。HttpRequest......
  • Beginner:Client libraries-2 创建工作空间
    目标:创建一个工作空间,学习如何设置开发和测试覆盖层(overlay)。背景工作空间是一个包含了ROS2的包的路径,在使用ros2之前首先需要source相应的ROS2工作空间来使用对应的包。overlay是一个可以添加新的包而不影响现有ROS2工作区,即underlay的工作空间;underlay中包含着overlay的依......
  • Beginner:Client libraries-1 使用colcon编译包
    目标:用colcon编译一个ROS2工作空间。这是一个关于如何使用colcon创建和构建ROS2工作区的简短教程。背景colcon是ROS编译工具catkin_make, catkin_make_isolated, catkin_tools and ament_tools的替代。安装colconsudoaptinstallpython3-colcon-common-extensions基......
  • ROS2-Beginner:9-启动节点
    目标:使用命令行工具来启动多个节点背景在大多数入门教程中,您一直在为运行的每个新节点打开新的终端。当您创建越来越多节点同时运行的更复杂的系统时,打开终端和重新输入配置细节会变得乏味。launch文件允许您同时启动和配置包含ROS2节点的许多可执行文件。使用ros2-launch命......
  • ROS2-Beginner:10-记录和播放数据
    目标:记录发布到话题上的数据,可以任何时候回放和检查。背景ros2-bag是一个命令行工具,用于记录系统中主题发布的数据。它累积在任意数量的主题上传递的数据,并将其保存在数据库中。然后,您可以回放数据以重现测试和实验的结果。录制主题也是分享你的作品并允许他人重新创作的好方法......
  • ROS2-Beginner:8-使用rqt_console来浏览日志
    目标:了解rqt_console,用于查看日志消息的工具。背景rqt_console是一个图形化工具用于查看ROS2中的日志消息。通常,日志消息在你个终端显示。用rqt_console,可以统一浏览这些日志,过滤、保存以及从文件中加载。任务1、启动rqt_consoleros2runrqt_consolerqt_console启动turt......
  • AtCoder Beginner Contest 214 G Three Permutations
    洛谷传送门AtCoder传送门比较平凡的一个容斥。考虑把问题转化成,求\(\foralli\in[1,n],r_i\nei\landr_i\nep_i\)的\(r\)方案数。考虑到不弱于错排,所以容斥。设钦定\(i\)个\(r_i\)取了\(i,p_i\)中的一个的方案数为\(f_i\),其余任意,那么:\[ans=\sum\limi......
  • ROS2-Beginner:7-理解行为
    背景行为ROS2中的一种通信类型,用于长时间的运行任务。由三个部分组成:目标,反馈以及结果。行为建立在话题和服务之上的。他们的功能类似于服务,但可以取消操作。他们还提供了稳定的反馈,而不是返回单一的响应的服务。行为使用了一个客户端-服务器模型,类似于发布者和订阅者。一个行......
  • ROS2-Beginner:5-理解服务
    背景服务是rosgraph中另一种通信方法。服务是基于调用和响应相比话题是发布者和订阅者模式。话题允许节点来订阅数据流并获得连续的更新。服务只当被具体客户端调用时才提供数据。任务1、打开turtlesim仿真器ros2runturtlesimturtlesim_noderos2runturtlesimturtle......
  • ROS2-Beginner:3-理解节点
    目标:学习ROS2中节点的功能,以及与他们交互的工具背景1、ROS2graphROS图是ROS2元素同时一起处理数据的网络。它包含了所有可执行文件以及它们之间的连接,如果您要将它们全部映射出来并可视化的话。2、在ROS2中的节点在ROS中的每一个节点都应该负责单一的模块化目的,例如控制车轮......