ROS入门必了解的ROS文件系统和软件包

本文主要针对ROS文件系统概念及创建和编辑ROS软件包进行讲解,便于初学者入门。

1、ROS文件系统概念:

(1)功能包集(stack)

将几个具有某种功能的包组织在一起,就是一个功能包集,在ROS系统中,存在大量不同用途的功能包集,例如导航功能包集。

(2)软件包(Packages)

ROS应用程序代码组织单元,每个软件包都可以包含程序库、可执行文件、脚本、或其他手动创建的东西。

(3)清单文件(package.xml)

这是关于“软件包”相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等。

(4)编译配置文件(CMakeLists.txt)

使用cmake进行程序编译时,会根据CMakeLists.txt这个文件进行一步步处理,然后形成一个MakeFile文件,系统再通过这个文件设置进行程序编译。

文件系统工具:

Rospack:获取软件包的有关信息

rospack list:列出软件包以及路径

rospack list|grep cpp:过滤查找关键字的软件包并列出路径

roscd:直接切换到某个软件包或者软件包集中

rosls:直接按软件包名称而不是绝对路径执行ls命令

Tab补全

Rosed:直接编辑某个软件包中的可编辑的文件//软件包得直接包含可执行文件

$rosed grid_map_visualization  GridMapVisualizationHelpers.cpp

Roscp:直接从某个软件包中复制某个文件到指定目录下

$roscp  voice_system xf_tts.cpp .

$cp catkin_ws/src/voice _system/src/xf_tts.cpp .

把voice_system软件包下的xf_tts.cpp复制到当前目录下

2、创建和编辑ROS 软件包

(1)创建软件包

在我们写任何程序之前,第一步是创建一个容纳我们的软件包工作区,然后再创建软件包本身。

a、创建工作空间

创建的工作区是一个文件夹,用于存储我们的软件包,可以任意命名,任意选择存储在home目录下。

注:即使没有软件包,空的工作空间也可以编译,会在当前目录下生成build和level目录

对于很多用户,没必要使用多个ROS 工作区,但是ROS下的catkin编译系统,试图一次性编译同一工作区的所有功能包,因此涉及大量功能包或者独立项目时。维护多个工作区是必要的。

b、创建软件包

创建一个新的ROS软件包的命令应该再你的工作区的src目录下运行。

(2)程序包的依赖关系

a、一级依赖:在使用catkin_create_pkg命令时提供了几个程序包作为依赖包,现在我们可以使用rospack命令工具来查看一级依赖包。

当新创建了工作空间时,ROS知道该空间的环境变量才能定位到该空间下的软件包,因此,为了方便每次打开终端都自动配置环境,需要再home目录下的.bashrc文件最下面添加如下信息:

source /opt/ros/kinetic/setup.bash    //系统空间下的环境变量

source   ~/rosworkspack/devel/setup.bash  //工作空间下的环境变量

rospack列出了运行在catkin_create_pkg命令时作为参数的依赖包,这些依赖包随后保存再package.xml文件中。

b、间接依赖:在很多情况下,一个依赖包还会有它自己的依赖包,比如,rospy还有其他依赖包。

注意:ROS包的命名遵循一个命名规范,只允许使用小写字母、数字和下划线,而且首字符必须是一个小写字母,一些ROS工具,包括catkin,不支持不遵循此命名规范的包。

(3)删除工作空间的软件包

删除不想要的工作空间的软件包,直接rm  -rf整个软件包目录即可,然后重新编译整个工作空间。

[email protected]:~/rosworkspace/src$ rm -rf test_pkg //删除软件包

[email protected]:~/rosworkspace/src$ ls

CmakeLists.txt

[email protected]:~/rosworkspace/src$ cd ..

[email protected]:~/rosworkspace$ catkin_make //重新编译

(4)编写测试代码

为了演示如何正确的编译软件包,我们需要在测试软件包test_pkg中编写一个测试代码才能演示如何编译软件包。

在test_pkg 包下的src中新建test.cpp并编辑

测试代码含义,创建一个话题,并向其中发送hello world字段。

$cd src

$touch test.cpp

$vim  test.cpp

(5)编译软件包

主要修改CMakeList.txt这个配置文件。

文章来源于:www.slamtec.com

原文地址:https://www.cnblogs.com/RPLIDAR/p/10108568.html

时间: 2024-10-06 17:37:53

ROS入门必了解的ROS文件系统和软件包的相关文章

SLAM+语音机器人DIY系列:(二)ROS入门——4.如何编写ROS的第一个程序hello_world

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人"miiboo"中的大部分程序也采用ROS进行开发,所以本文就重点对ROS基础知识进行详细的讲解,给不熟悉ROS的朋友起到一个抛砖引玉的作用.本章节主要内容: 1.ROS是什么 2.ROS系统整体架构 3.在ubuntu16.04中安装ROS kinetic 4.如何编写ROS的第一个程序hello_world 5.编写简单的消息发布器和订阅器 6.编写简单的s

SLAM+语音机器人DIY系列:(二)ROS入门——1.ROS是什么

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人"miiboo"中的大部分程序也采用ROS进行开发,所以本文就重点对ROS基础知识进行详细的讲解,给不熟悉ROS的朋友起到一个抛砖引玉的作用.本章节主要内容: 1.ROS是什么 2.ROS系统整体架构 3.在ubuntu16.04中安装ROS kinetic 4.如何编写ROS的第一个程序hello_world 5.编写简单的消息发布器和订阅器 6.编写简单的s

SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人"miiboo"中的大部分程序也采用ROS进行开发,所以本文就重点对ROS基础知识进行详细的讲解,给不熟悉ROS的朋友起到一个抛砖引玉的作用.本章节主要内容: 1.ROS是什么 2.ROS系统整体架构 3.在ubuntu16.04中安装ROS kinetic 4.如何编写ROS的第一个程序hello_world 5.编写简单的消息发布器和订阅器 6.编写简单的s

ROS知识(1)----ROS Jade安装

ROS入门难,进去之后会是很简单,这是很多人的经验.但是今天安装ROS就吃了闭门羹,安装成功后,回顾发现,关键是操作系统Ubantu14.04没有安装好,一些系统包没有及时更新导致的.这里总结下ROS Jade安装的经验,留他日己用,也希望能帮助别人.安装的基本思路就是,首先安装Ubantu14.04操作,然后再安装ROS系统. 1.安装Ubantu14.04系统 ROS系统运行于Linux系统上,所以我们必须首先安装Ubantu系统.正确安装Ubantu系统是ROS安装成功的关键一步.否则安装

Linux入门之磁盘管理(2)文件系统

Linux入门之磁盘管理(2)文件系统 linux分区构成完成之后,一般需要进行对其创建指定的文件系统,也就是我们常说的格式化,然后对其进行分区挂载,提供指定分区的访问点.不同的分区格式会在文件系统内部提供不同的对该分区的数据存储的格式分配,以及其内部模块会支持不同的分区的接口及方法调用,例如对一个文件的打开.读取.写入.关闭等功能,每个文件系统都会有各种不同的特点. 常见的系统文件系统: linux: ext2.ext3.ext4:xfs(SGI):btrfs(Oracle):reiserfs

Cocos2d-x 3.1.1 安装和创建项目---(入门必看)

1.安装python2.7.8,安装cocos2dx 3.1.1,并将python2.7.8安装路径加入系统环境变量中; 2.python2.7.8很简单,基本就是默认就可以了. 3.cocos2dx 3.1.1下载完之后,就解压.然后F:\cocos2d-x-3.1.1\build(我的解压之后是放在f盘的),然后在build这里可以找到cocos2d-win32.vc2012.sln,用vs2012打开它,然后生成解决方案(生成的这个过程比较慢,大概10分钟吧),然后在F:\cocos2d-

关于项目分组和项目合并——入门必学

项目分组:前台INDEX文件对应一个index.php单入口文件,后台ADMIN对应另外一个单入口文件,这种模式: 项目分组的劣势是:很多的配置文件.函数无法共用.所有我们开始用项目合并的方式来做: 步骤: 1.像之前一样建立单入口文件(只需要一个单入口文件): 2.建立公用配置文件(命名为config.php): 在APP/Conf文件夹下的配置文件中添加以下两个定义(其它的还一样): 'APP_GROUP_LIST'=>'Index,Admin',//开启分组 'DEFAULT_GROUP'

【慕课网】php工程师学习计划之我的学习笔记——01 入门必学web基础 htmlcss基础课程 篇

为了进一步学习PHP,本周我选定了慕课网的PHP工程师学习计划, 从今天2015-07-06 10:24:47开始从头学习:计划本周尽快学习完成本课程,谨此作为笔记. 有个好的学习计划和思路非常非常重要,非常感谢慕课网提供本套学习计划,希望更多地学习平台能提供像这样全面一条龙学习思路清晰地教程. 计划图:链接 我的学习状况:2015-07-06 10:29:46 开始随记: php工程师学习计划笔记——01 入门必学web基础 htmlcss基础课程 篇 入门篇: text-align:cent

linux 从入门到跑路 - rpm ,yum , dnf (软件包管理三兄弟)

linux 从入门到跑路 - rpm ,yum , dnf (软件包管理三兄弟) 认识软件包管理 软件包管理是指系统中一种安装和维护软件的方法.今天,通过从 Linux 发行版中安装的软件包, 已能满足许多人所有需要的软件.这不同于早期的 Linux,人们需要下载和编辑源码来安装软件. 编辑源码没有任何问题,事实上,拥有对源码的访问权限是 Linux 的伟大奇迹.本篇,我们将查看一些用于包管理的命令行工具(rpm ,yum , dnf ).虽然所有主流 Linux 发行版都 提供了强大且精致的图