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

ROS学习笔记Ⅰ 我们在上进行ROS的学习对应ROS版本为编译软件使用语言使用在此之前需要准备好Linux系统(虚拟机即可),安装好ROS和vscode首先我们需要一个存放代码的地方,所以首要任务是建立一个工作空间来存放我们的个各种文件。 阅读详情

总结:把总结写在前面,如果不想看大段文字只想跑通ROS的话只要看总结就好了。

  • 创建和编译catkin workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
  • 创建catkin package
cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

正文:在创建一个ROS package之前,会遇到这几个概念:catkin、catkin workspace。通俗的来讲,catkin workspace是可以创建、安装、修改catkin package的文件夹,可以类比于我们的一个工程,一个工程里面可以包含很多个package,至于catkin是啥,目前我也没搞清楚,还需要进一步深入学习。在这里catkin package就是我们说的ROS package。

1.catkin package的组成

  • 每个package必须要有自己的文件夹
  • 必须要有catkin compliant,即一个 package.xml文件用来描述package信息
  • 必须要有使用catkin的CMakeList.txt文件

一个简单的package长这样,以下是一个名为my_package的ros package

my_package/
  CMakeLists.txt
  package.xml

2.创建一个catkin workspace
workspace可以类比于我们的一个工程,一个工程里面可以包含很多个package,每个package执行着各自的功能,他们一起合作就构成了机器人的软件功能。一个典型的workspace长这样

workspace_folder/        -- WORKSPACE
  src/                   -- SOURCE SPACE
    CMakeLists.txt       -- 'Toplevel' CMake file, provided by catkin
    package_1/
      CMakeLists.txt     -- CMakeLists.txt file for package_1
      package.xml        -- Package manifest for package_1
    ...
    package_n/
      CMakeLists.txt     -- CMakeLists.txt file for package_n
      package.xml        -- Package manifest for package_n

下面我们讲解如何创建一个workspace。新建一个包含有src文件夹的workspace文件夹:catkin_ws/src,然后去到catkin_ws目录下,执行一下编译指令catkin_make

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make

这个过程只需要在你新建package时执行一次就可以了。它会帮你初始化好你的工作空间,创建一些必要的文件夹以及文件,此时你的src文件夹里面创建了一个CMakeList.txt文件

接着执行

source devel/setup.bash

使当前的工作空间能够被遍历(这句指令的作用我还没搞懂,大家可以参看原网页,官网tutorial原文:Sourcing any of these files will overlay this workspace on top of your environment. )

3.创建一个catkin package

3.1 定位到catkin workspace文件夹

cd ~/catkin_ws/src

3.2 用catkin_create_pkg创建一个参考std_msgs,roscpp以及rospy的名叫’beginner_tutorials’的package

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

至此,一个工作在catkin worksace的叫’beginner_tutorials’的package创建好了。

catkin_create_pkg 使用方法

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

4.编译package和把workspace加入ros环境

4.1 编译package
新建了package之后需要重新编译一下

$ cd ~/catkin_ws
$ catkin_make

4.2 把workspace加入ros环境

$ . ~/catkin_ws/devel/setup.bash

5.Package依赖

5.1 一级依赖
刚刚使用catkin_create_pkg时我们给新建的package提供了一些依赖,我们可以通过下面这个命令查看某个包的一级依赖。

$ rospack depends1 beginner_tutorials

运行上述命令查看一级依赖,运行结果:

roscpp
rospy
std_msgs

这些依赖都被存储在package.xml里,也可运行以下指令查看xml里的内容。

$ roscd beginner_tutorials
$ cat package.xml

5.2 非直接依赖
一般来说依赖里面还会有其他依赖,比如说我们想查看rospy的依赖

$ rospack depends1 rospy

运行结果:

genpy
roscpp
rosgraph
rosgraph_msgs
roslib
std_msgs

一个package会有一阶依赖以及非直接依赖,可以执行下面的语句查看所有的依赖

$ rospack depends beginner_tutorials

6.定制你的package

本节我们将会逐行地看catkin_create_pkg生成的文件,然后学习怎么定制自己的package文件
6.1 定制package.xml
生成的package.xml文件在包文件夹里面,我们去到beginner_tutorials文件夹下面,打开package.xml文件
6.1.1 description tags

<description>The beginner_tutorials package</description>

该标签描述了包的基本信息,可以任意修改

6.1.2 maintainer tags

<maintainer email="julis@todo.todo">julis</maintainer>

该标签描述了该包的维护人员的基本信息,包括了名字和邮件

6.1.3 license tags

<!--  One license tag required, multiple allowed, one license per tag  -->
<!--  Commonly used license strings:  -->
<!--    BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3  -->
<license>TODO</license>

该标签描述了许可证类型,请根据自己的需要填入许可证类型

6.1.4 dependencies tags

<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>

该标签描述了依赖项,我们希望这些依赖在编译阶段和运行阶段都其作用,于是分别在<build_export_depend>和<exec_depend>下都注明了依赖项。

ROS教程(三):创建程序包及节点(图文) 文章目录前言一、创建功能包二、创建节点三、修改CMakeList.txt四、配置package.xml文件五、编译并执行1.编译2.执行六、rostopic工具总结 前言 根据前篇教程已经创建好了工作空间,并已经成功生效了环境变量,接下来创建一个功能包 一、创建功能包 功能包的名字根据我们这个功能包的作用来命名。比如我现在的功能包是用来学习ROS的C++编程,那么我的功能包名称就叫做learning_cplus。 打开终端,输入下面指令。 cd catkin_ws/src catkin_create_ 阅读详情

相关推荐

ROS学习-创建一个Package包

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

晓晨的博客 9043

#Qt#qt linux开发

unix{ LIBS += -L../bin -lSupportAll#dll引用 LIBS += -L /root/QtDemo/Test -lTest LIBS += -L../bin -lUsersWidget#../bin/UsersWidget.dll#dll引用 LIBS += -L../bin -lViewData#dll引用 LIBS += -L../bin -lAlgorithm#dll引用 } 插件区别 #ifdef Q_OS_WIN32 if(!fi...

weixin_41220464的博客 3315

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学习笔记(三): 创建ROS程序包

二、创建ROS程序包 0.1 catkin软件包组成 该程序包必须包含catkin compliant package.xml文件 这个package.xml文件提供有关程序包的元信息。 程序包必须包含一个catkin 版本的CMakeLists.txt文件,而Catkin metapackages中必须包含一个对CMakeList.txt文件的引用。 每个目录下只能有一个程序包。 意味着在同一个目录下不能有嵌套的或者多个程序包存在。 0.2 在catkin工作空间中的程序包 开发

qq_42910179的博客 1041

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

祝 枫 3198

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

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

CynalFly的博客 3391

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万+

Ch0. 如何在ROS中创建一个自己的package

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

qq_51533303的博客 1130

ROS2 学习笔记13:创建 ROS2 包

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

weixin_43180456的博客 1540

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

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

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

【ROS】创建工作空间Workspace和功能包Package

文章目录ROS是什么节点node节点管理器(master)话题(topic)消息(message)参数服务器(parameter server)服务(service)消息记录包(bag) ROS是什么 ROS是一个分布式的通信协议,帮助各个程序进程之间数据交换通信,ROS是一个庞大的开源软件系统,无数的网友为ROS贡献了各种功能包,实际项目开发过程中首选别人开发好的功能包。ROS功能包的每一个源文件可以看做是一个节点,节点发布话题,话题之间通过消息通信,进而完成节点之间的通信,最后完成了一个功能包的功能,R

小秋 AI SLAM 入门实战教程 2315

创建一个ROS Package

创建一个ROS Package

阿xin*的嵌入式AI 1012

ROS - 命令行工具(Command-line tools)

当在 $ROS_ROOT 中调用顶级 make 时,会联编下列工具。它们会被安装到 $ROS_ROOT/bin,作为安装过程的一部分,PATH 变量中应该已经添加了这些工具。如果不是这种情况,请按照安装指南。

机器人控制与仿真应用 1606

别再到处找教程了!Windows下用FFmpeg+Mediamtx+VLC搭建本地RTSP流媒体服务器,保姆级配置流程

本文详细介绍了在Windows系统下使用FFmpeg、Mediamtx和VLC搭建本地RTSP流媒体服务器的完整流程。从环境准备到核心配置,再到推流和拉流的实战技巧,提供了保姆级的避坑指南和优化建议,帮助开发者快速实现稳定的流媒体服务部署。

weixin_42614269的博客 212

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

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

MGodmonkey的专属博客 7483

扫地机器人:从仿真到决策,一个完整SLAM导航系统的自研之路

本文详细记录了从零开始自研扫地机器人SLAM导航系统的全过程,涵盖ROS-Gazebo仿真系统搭建、地图预处理优化、全覆盖规划算法迭代等关键技术。通过三次算法升级,最终实现92%的清洁效率,并分享DWA调参、状态机设计等实战经验,为开发者提供从仿真到落地的完整解决方案。

weixin_29053695的博客 352

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

背景 1 What is a ROS 2 package?

juveacheron1的博客 2012

语义通信实战:跳过“比特”保“语义”,手把手构建轻量级图像压缩重建网络(基于PyTorch)

本文详细介绍了基于PyTorch的轻量级语义通信系统LICRnet的实现,专注于图像压缩重建中的语义信息保留。通过深度可分离卷积、可变窗口多尺度注意力等创新技术,显著降低计算量并提升性能,特别适用于无人机巡检、远程医疗等物联网场景。文章包含完整的代码实现、训练策略及部署优化方案。

weixin_27697385的博客 221

YOLO11改进 | 注意力机制 | 添加SimAM注意力机制【全网独家+附完整代码】

yolo11,yolo11改进,yolo11创新,yolo11添加注意力机制

kay_545 1229

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

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

JunJun 769

我的世界模组开发——前言

避坑:在开发过程中一定不要过分依赖AI,虽说现在的人工智能很厉害,但是也有很大的弊端,很多AI生成的代码错误百出,还得自己修改,而且像deepseek这种AI的训练数据还停留在一年前,给出的maven仓库地址都是过时的甚至是错误的,开发模组就是要多学习,多看源码,这样开发模组的水平才能越来越高。总而言之,build.gradle文件在我的世界Forge模组开发中扮演了重要的角色,它定义了项目的构建过程、依赖关系和编译选项,为开发者提供了灵活而强大的构建工具。开发工具推荐使用idea,因为可以使用通灵义码。

qq_24992377的博客 2594
上一篇: ROS学习笔记—— tf 工具包介绍
下一篇: Moveit学习笔记 (一) ——如何使用urdf建立一个简单的机器人模型
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值