ROS学习笔记3(创建一个ROS Package)

ROS学习-创建一个Package包 Package由什么组成? 每一个Package中都必须包括以下两个文件: package.xml 能够提供当前Package包的描述(元)信息 CMakeLists.txt 如果它是一个catkin元包,它必须具有相关的样板文件CMakeLists.txt文件。 此外,每个Package包必须有其自己的文件夹,这就意味着没有嵌套的包,也不存在多个package包共享同一个文件夹。 最简单的package包可能结构如下所示: my_package/ CMakeLists.txt pack 阅读详情

1 catkin Package由什么组成?

如果满足下面3个条件,一个package就会被认为是catkin package:

  • 包含一个符合catkin标准的package.xml文件。
    • 这个文件包含了包的主要信息。
  • 包含一个使用catkin的CMakeLists.txt文件。
    • 如果是一个metapackage,需要引用相关的CMakeLists.txt文件。
  • 每个package都有自己的独立文件夹。
    • 这意味着没有嵌套packages,也不存在多个packages共用相同目录。

一个最简单的package应该有如下的结构:

my_package/
  CMakeLists.txt
  package.xml

2 catkin工作空间下的packages

一个标准的工作空间应该类似:

workspace_folder/        -- 工作空间
  src/                   -- 存放代码的目录
    CMakeLists.txt       -- catkin的最顶级CMake文件
    package_1/
      CMakeLists.txt     -- package_1的CMakeLists.txt
      package.xml        -- package_1的说明文件manifest
    ...
    package_n/
      CMakeLists.txt     -- package_n的CMakeLists.txt
      package.xml        -- package_n的说明文件manifest

3 创建一个catkin package

使用catkin_creat_pkg命令来创建一个catkin package:

# 首先创建一个工作空间
$ cd ~/catkin_ws/src

接着使用catkin_creat_pkg命令创建一个依赖于std_msgs,roscpp和rospy的beginner_tutorialspackage:

$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

catkin_create_pkg命令的标准格式为:

# catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

使用tree命令查看以下目录结构:

└── beginner_tutorials
    ├── CMakeLists.txt
    ├── include
    │   └── beginner_tutorials
    ├── package.xml
    └── src

4 编译并且刷新setup文件

切换到catkin_ws目录,然后编译:

$ cd ~/catkin_ws
$ catkin_make

使用ls查看当前文件夹,发现多了2个文件夹:

build  devel  src

最后把这个工作空间加入到ros环境中:

$ source ~/catkin_ws/devel/setup.bash

5 package依赖

5.1 第一依赖项

在我们使用catkin_creat_pkg命令的时候,已经产生了第一依赖:

$ rospack depends1 beginner_tutorials 

共有3个依赖:

roscpp
rospy
std_msgs

这些依赖被保存在package.xml文件中:

$ roscd beginner_tutorials
$ cat package.xml

发现:

<package format="2">
...
  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>
...
</package>

5.2 间接依赖

有些依赖包本身也依赖于其他的包,例如rospy有许多依赖:

$ rospack depends1 rospy

发现:

genpy
roscpp
rosgraph
rosgraph_msgs
roslib
std_msgs

rospack可以列出所有的嵌套依赖项目:

lk@Mibook:~$ rospack depends beginner_tutorials 
cpp_common
rostime
roscpp_traits
roscpp_serialization
catkin
genmsg
genpy
message_runtime
gencpp
geneus
gennodejs
genlisp
message_generation
rosbuild
rosconsole
std_msgs
rosgraph_msgs
xmlrpcpp
roscpp
rosgraph
ros_environment
rospack
roslib
rospy

6 自定义你的package

6.1 自定义packages.xml

删除不必要的内容:

   1 <?xml version="1.0"?>
   2 <package format="2">
   3   <name>beginner_tutorials</name>
   4   <version>0.1.0</version>
   5   <description>The beginner_tutorials package</description>
   6 
   7   <maintainer email="you@yourdomain.tld">Your Name</maintainer>
   8   <license>BSD</license>
   9   <url type="website">http://wiki.ros.org/beginner_tutorials</url>
  10   <author email="you@yourdomain.tld">Jane Doe</author>
  11 
  12   <buildtool_depend>catkin</buildtool_depend>
  13 
  14   <build_depend>roscpp</build_depend>
  15   <build_depend>rospy</build_depend>
  16   <build_depend>std_msgs</build_depend>
  17 
  18   <exec_depend>roscpp</exec_depend>
  19   <exec_depend>rospy</exec_depend>
  20   <exec_depend>std_msgs</exec_depend>
  21 
  22 </package>

6.2 自定义CMakeLists.txt

最初使用catkin_creat_pkg的CMakeList.txt会被后面的ros代码编译给覆盖掉。


参考:http://wiki.ros.org/ROS/Tutorials/CreatingPackage

Ch0. 如何在ROS中创建一个自己的package 笔者检索网络上 ROS 创建 workspace 的教程,发现很多并不完整,对于像我一样完全不懂 ROS 和 Ubuntu 系统的初学者来说总会在一些地方卡壳,遂自己动手写一篇基础教程。 阅读详情

相关推荐

ROS学习第一步————创建工作空间&下载package包

是一个用于机器人开发的开源框架,它为机器人软件的开发提供了一套标准化的工具和库。ROS并不是一个传统意义上的操作系统,而是一个运行在Linux上的。

2403_88733025的博客 2185

[ROS](02)创建&编译ROS软件包Package

packages是在ROS中整理和组织的主要单元,是在ROS中能建立及分享的最小单元。

CynalFly的博客 3391

ROS学习笔记(1)——如何创建一个ROS PACKAGE

Written By Asou, 4/22/2018 简介:本文将使用catkin来创建package,并且使用rospack来显示package中的依赖关系。参考文章:ROSwiki 1. catkin package的组成 每个package都必然包含package.xml和CMakeLists.txt两个文件。每一个package都必须拥有其独有的源文件夹,即不同的pac...

啦啦啦啦啦 5732

ros学习3--Creating Package (ROS软件包创建)

系统配置ubuntu20.04+ros1,是初学者按照ros官网初级教程学习记录,仅作个人学习记录,如有问题可联系本文作者。

m0_60030502的博客 1080

ROS学习手记 - 1了解并安装ROS+创建ROS_Package

ROS学习手记:   先看了《ROS操作系统的入门资料(2015修订)》,了解了ROS的基本概念。   1. ROS 的安装, 具备了虚拟机使用经验的同学可以搜“Ubuntu for ROS”进行下载 .iso 文件在虚拟机里安装。笔者使用的是VirtualBox作为虚拟机工具。这里就不多说了。 官方Tutorial里的Installing and Configuring Your ROS

Combine Art and Sciences. 9902

ROS的学习(四)创建一个ROS包

ROS学习(三)中,笔者不知道catkin到底是个什么东东,后来终于在官方网站上找到了答案,原来catkin是ROS的一个官方的编译构建系统,是原本的ROS的编译构建系统rosbuild的后继者。catkin的来源有点复杂,我们可以慢慢的讲一下其中的渊源。ROS来源于Willow Garage这个公司,他们希望借助开源的力量,使ROS发扬光大。而在英语中,willow的意思是柳树,catkin是柳

小菜鸟上校的专栏 3万+

ROS学习笔记(一):自己动手写一个ROS程序

本文建立的是一个基于ROS(Robot Operating System)的非常简单的发布(Publisher)、订阅(Subscriber)程序。

yake827的专栏 4万+

ROS2 学习笔记13:创建 ROS2 包

包可以视为你的ros2代码的容器.如果你想安装你的程序或者分享给别人,你需要(把代码)有组织放到一个包里面。有了包,你可以分享ros2工作内容,别人可以方便地编译以及使用。ros2包创建使用ament作为编译系统,colcon作为编译工具。使用CMake或者python来创建一个包,这些是官方支持的,当然也存在其他构建方式。您创建了一个软件包来组织您的代码,方便他人使用。您的软件包会自动填充必要的文件,然后您使用colcon构建它,这样您就可以在本地环境中使用它的可执行文件。

weixin_43180456的博客 1540

创建一个ROS Package

创建一个ROS Package

阿xin*的嵌入式AI 1012

ROS学习笔记三:创建ROS软件包

ROS学习笔记三:创建ROS软件包catkin软件包的组成一个软件包必须满足如下条件才能被称之为catkin软件包: 这个软件包必须包含一个catkin编译文件package.xml(manifests文件),此文件包含了描述该软件包的重要信息。 这个软件包必须包含一个CMakeLists.txt文件,并且采用catkin。 在每个文件夹中可能只有一个软件包,这表明没有相互依赖的软件包共享相同的目录

祝 枫 3198

Win10下Delphi 10.4.2 (RAD Studio 10.4.2 )安装教程图解

Win10下Delphi 10.4.2 (RAD Studio 10.4.2 )安装和破解教程图解

1万+

ROS学习笔记(三)学会创建一个ROS package

1.catkin package的组成 每个package必须要有自己的文件夹 必须要有catkin compliant package.xml文件用来描述package信息 必须要有使用catkin的CMakeList.txt文件 最简单的package长这样 my_package/ CMakeLists.txt package.xml 2.创建一个catkin workspace...............

zhelijun的博客 1092

ROS激光雷达动态避障算法优化(C++实战)

本文深入探讨了ROS激光雷达动态避障算法的C++实战优化。针对动态环境的核心挑战,文章系统性地介绍了从激光数据预处理(降噪、瘦身)、动态障碍物检测与跟踪,到基于动态窗口法(DWA)的智能决策与调优的全流程。重点分享了如何将障碍物速度预测融入DWA打分函数,以实现更安全、流畅的避障,并提供了工程架构、性能优化及真机调试的实用建议。

weixin_29192141的博客 943

如何用Qt对ROS项目进行调试及创建GUI界面

一、前言本文详细介绍了利用CMakeLists.txt文件把ROS项目导入到QtCreator进行代码编写和调试的过程,文末还介绍了ROS中使用Qt界面的方法 这种导入ROS项目到Qt的方法也适用于其他CMake创建的项目,这种方案缺点是导入项目后无法直接在Qt下面新建文件和package到项目,只能用命令行在Qt外面创建之后重新导入到Qt,最近得益于Levi-Armstrong的工作,它们开

张京林要加油的技术专栏 3万+

OpenClaw Browser Relay Extension 鉴权失败与 invalid handshake 问题的终极解决方案

在使用 OpenClaw 浏览器插件 (Browser Relay Extension) 时,许多用户可能会遇到两个主要问题:一是配置端口错误导致的连接失败,二是鉴权失败 (Gateway token rejected)。本文将详细解析这两个问题并提供解决方案。

gerryke的blog 5559

使用 Restart Extension 继续解决 Ansys 机械分析

您正在执行复杂或大型的多步有限元分析,突然,您意识到经过数小时的求解后,您需要添加或修改边界条件。在本篇博文中,您将了解如何利用 Ansys Mechanical 中的 RestartAnalysis 扩展来扩展多步分析,方法是合并额外的时间步骤和边界条件,而不会丢失已计算的结果。幸运的是,在 Mechanical 中,有一种直接的方法可以实现这一点,而不会损害您之前的结果,而这在添加新边界条件和使用重新启动点时经常发生。得到的结果符合预期,您可以看到施加的力产生的这两个部分之间的相对位移。

jkh920184196的博客 1232

vscode开发ROS(3)-创建第一个ROS项目

创建工作空间 点击"文件"–>“打开文件夹”–>”创建文件夹",磁盘上选择一个路径A(此处A代表你的保存文件夹的路径),输入文件夹名称,例如:test,点击确定。此时在左侧资源管理器中,会自动生成一个".vscode"文件夹,会自动生成"c_cpp_properties.json" 和”setting.json“两个文件。 配置ros空间 点击创建"src"文件夹 点...

MSNH2012的博客 6919

FortiGate-60E防火墙忘记密码?用Console线+TFTP重装固件v7.0.9全流程

本文详细介绍了当FortiGate-60E防火墙忘记密码且物理重置无效时,如何通过Console线连接并利用TFTP服务器重装固件(如v7.0.9)的全流程。从恢复原理、工具准备、网络配置到逐步执行命令,提供了完整的实战指南,帮助管理员彻底恢复设备出厂设置并重置密码。

snow3的博客 333

ROS1&ROS2之CmakeList.txt和package.xml用法详解

目前还在学习ROS+无人机框架中,,,更多更新文章详见我的个人博客主页【

MGodmonkey的专属博客 7483

【重识云原生】第四章云网络4.9.5.1节下一代智能网卡——DPU综述

随着数据中心的高速发展,通信能力和计算能力成为数据中心基础设施的相辅相成的两个重要发展方向。若数据中心仅关注计算能力的提升,通信基础设施的提升跟不上,那么数据中心的整体系统性能依然受限,无法发挥出真正的潜力。DPU的提出背景就是应对这些数据量和复杂性的指数级增长。未来,需要将计算移至接近数据的位置,这是目前业界所公认的以数据为中心的体系结构下的创新。综上,DPU对数据中心来说,是通过更明细的分工来实现效率的提升、实现总体系统的成本最优化。...

junbaozi的专栏 1724

100天精通Oracle-实战系列(第33天)RHEL 7 安装 Oracle 12CR2 RAC 数据库

100天精通Oracle-实战系列(第33天)RHEL 7 安装 Oracle 12CR2 RAC 数据库

LuciferLiu_DBA 3451

ROS2文档翻译总结(4)——创建package

背景 1 What is a ROS 2 package?

juveacheron1的博客 2012

最新Python爬虫实战(入门爬虫篇)——案例15:微博热搜数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过 Python 爬虫技术,成功实现了对微博热搜 API 接口数据的批量爬取与 Excel 保存。代码采用模块化设计,包含接口请求、JSON 解析、数据提取、Excel 持久化等完整流程;通过模拟真实浏览器的请求头和 cookies,有效规避基础反爬策略,保证请求的稳定性。整个爬虫逻辑遵循“API请求 → JSON解析 → 数据提取 → 保存到Excel”的标准流程,与异步加载类网站的爬取范式高度一致。AJAX 接口抓包与分析。

努力让自己发光,对的人才能迎着光而来 7万+

ROS学习笔记29(手动创建ROS package)

我们可以使用(catkin_create_pkg)工具来自动创建ROS package,不过,接下来你就会发现,这不是什么难事。 roscreate-pkg节省精力避免错误,但package只不过就是一个文件夹外加一个XML文件。 现在,我们要手动创建一个名为foobar的package。请转至你的catkin workspace,并确认你已经刷新了setup文件。 catkin_ws_t...

JunJun 769

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

一、手动创建ROS package(中级 ROS)

手动创建ROS package(中级 ROS) 前边已经写了很多篇文章相信大家对于ros也有了初步的了解,之后博主打算对官网中级ros的几篇教程做一下实现,希望能在中级教程写完之后开始博主自己想做的小物件控制,请大家期待~ 文章目录手动创建ROS package补充1 beginner_tutorials中的package.xml(可用来参考)2 单独编译一个工程 原文自—— [Creating a ROS package by hand](http://wiki.ros.org/ROS/Tutorials

机器人梦想家 Bing Lee 2723

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ROS笔记1 安装及创建一个ROS Package

安装 跟着官方的安装指引来就行了.安装前要先确定自己的ros版本和ubuntu版本.这二者是一一对应的. http://wiki.ros.org/ROS/Installation 主要是package源换成https://blog.youkuaiyun.com/shenghuaijing3314/article/details/76222385这篇文章中提到的中科大的镜像地址. 用官网的源,下载速度超慢.我的...

weixin_30765505的博客 230

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: ROS学习笔记2(ROS文件系统和ROS常用命令)
下一篇: ROS学习笔记4(编译一个ROS Package)
刘凯KAI
博客等级 码龄15年 663粉丝 128原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值