我是靠谱客的博主 活力摩托,最近开发中收集的这篇文章主要介绍This,robot——从零开始的Robomaster之旅(肆)基本概念,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

久等了诸位,目前我已经完成了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之旅(肆)基本概念所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部