概述
久等了诸位,目前我已经完成了ROS第一阶段的培训任务,下面我会把这段时间以来遇到的困惑与感悟一并分享给大家,主要是关于小乌龟的控制与程序编写方面的一些经验。鉴于文章篇幅不宜过长,会分为几篇博客,这样也便于大家根据自身情况的不同来进行参考。本文主要探讨了ros系统的层次划分以及基础概念,并对其功效加以诠释。
目录
基本概念
文件系统层次
计算图层次
社区层次
基本概念
ROS的基本概念分为三个层次,分别是文件系统层次、计算图层次和社区层次,这三个层次互相渗透,互相补充,构成了完善的ROS体系。
文件系统层次
在终端中使用 list 或 tree 命令即可查看当前目录下的文件和文件夹,如下图所示,这是我刚创建好的一个工作空间(下文会详细阐明),是由Packages、Manifests、Repositories、Messages和Services几部分组成。各部分又是以.cmake .make .py .cpp等格式的文件而构成的。
下表是对上述目录结构的一个说明
名称 | 功能 |
Packages(功能包) | 是在ROS中的基本单元,包含各式各样的代码和数据,多个作用于同一目的的功能包组成一个元功能包(Metapackages) |
Packages Manifests(功能包清单) | 描述一个功能包的元信息,包括了package的名字,版本,功能简述,证书信息和依赖关系,以.xml的文件格式进行储存 |
Repositories(代码仓库) | 与Git中的仓库相似,存放各类软件包,可以使用ROS自带的bloom工具进行发布 |
Message types(msg文件) | 定义了ROS系统的messages传输的数据结构 |
Service types(srv文件) | 定义了ROS的服务通信时的request和response相关的数据结构 |
以下是出现的不同格式文件的一个简要介绍
py文件:用python编写的脚本文件,可以在相应的IDE下打开,如Pycharm,IDLE等
cpp文件:用C++编写的源代码文件,可以在大多数常用编辑器下打开,如VScode,vim等
sh文件:Linux下的脚本文件,一般为bash文件,也有可能为dash,两者区别可以参照以下链接http://t.csdn.cn/6yCGC,可以用Git工具打开
zsh文件:全称为zshrc 文件,同属Linux自带的shell,不过知乎上有人对其大加赞赏抚掌击节,有兴趣的童鞋可以看看下面这个帖子 https://zhuanlan.zhihu.com/p/19556676
make文件:全称为Makefile文件,其中描述了整个工程所有文件的编译顺序和编译规则,是许多编译器维护编译信息的常用方法,使用make工具进行操作,这里有很多值得深挖的点,如果你感兴趣的话,欢迎移步http://t.csdn.cn/8PM6V
cmake文件:是make文件的加强版,采用CMake进行编译,特点是可以跨平台地进行安装或编译,用简单的语句即可描述所有平台的安装或编译过程,能够输出各种各样的makefile或者project文件,同样欢迎大家访问CMake的含义和用法解读 - Tsingke - 博客园 (cnblogs.com)
ini文件:是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置。这里是一个很有趣的点——作为Windows的配置文件却出现在了Ubuntu里,体现了Ubuntu和Windows双系统的交互性,可以用Notepad及同系列衍生产品打开。
计算图层次
该层次由七部分组成,包括Nodes、Master、Parameter Server、Messages、Topics、Services和Bags,概要如下:
Nodes(节点):ROS被设计为细粒度的模块化的系统,通过节点执行具体任务的进程、独立运行的可执行文件,如路径规划节点,环境定位节点等。
Master(管理器):提供名称注册和对计算图其余部分的查找功能,帮助节点之间相互查找、交换消息或调用服务。
Parameter Server(参数服务器):可以通过密钥来存储数据,节点会从这里检索运行时所需要的参数。
Messages(消息):节点通过传递消息相互通信,消息具有一定的类型和数据结构,和前文提到的Message types一样同属msg格式文件。
Topics(话题):节点间用来传输数据的强类型的重要总线,使用publishers and subscribers模型,数据由发布者传输到订阅者,单个主题可能有多个并发发布者和订阅者,单个节点可以发布和/或订阅多个主题。
Services(服务):和topics相似,同为数据传输方式,使用Client and Server模型,客户端通过发送请求消息并等待回复来使用该服务。
Bags(数据包):是用于保存和播放ROS消息数据的特殊格式,为开发和测试算法提供帮助。
以上只是粗略地进行介绍,详细使用场景会分享在下一篇博客上。
社区层次
这个层次就比较容易理解了,这是由一群对ROS充满热爱的人组成的团体,主要部分有代码存储库,wiki百科,邮件论坛等。
可以参照如下网页
cn/ROS/Concepts - ROS Wiki
cn/community - ROS Wiki
ROS软路由论坛 - RouterOS Winbox 中文版 - ROS教程 - ROS脚本生成器 - ROS之家 - Powered by Discuz! (rosabc.com)
感谢大家的支持与鼓励,我们下期再见。
最后
以上就是活力摩托为你收集整理的This,robot——从零开始的Robomaster之旅(肆)基本概念的全部内容,希望文章能够帮你解决This,robot——从零开始的Robomaster之旅(肆)基本概念所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复