ROS入门笔记(六): ROS系统架构

本文涉及的产品
资源编排,不限时长
简介: ROS入门笔记(六): ROS系统架构

1 ROS系统架构


aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDAzMjIwMTUwMzgxNzUucG5n.png

1.1 文件系统(重点)


文件系统:主要指在硬盘里能看到的ROS目录和文件:


aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDAzMjIyMzM4NTUyNDcucG5n.png


1)元功能包(Meta Packages):组织多个用于同一目的功能包。


2)元功能包清单(Meta Packages):类似于功能包清单,不同之处在于元功能包清单中可能会包含运行时需要依赖的功能包或者声明一些引用的标签。


3)功能包(Package):功能包是ROS中软件组织的基本形式。一个功能包具有用于创建ROS程序的最小结构和最少内容。它可以包含ROS运行的进程(节点)、配置文件等;


4)功能包清单(Package manifest):记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等。

5)消息类型(Message):消息是ROS节点之间发布/订阅的通信信息,可以使用ROS系统提供的消息类型,也可以使用.msg文件在功能包的msg文件夹下自定义需要的消息类型。


注:消息类型的说明存储在对应功能包的msg文件夹下。


6)服务类型(Service):服务类型定义了ROS服务器/客户端通信模型下的请求与应答数据类型,可以使用ROS系统提供的服务类型,也可以使用.srv文件在功能包的srv文件夹中进行定义。


注:服务描述说明存储在对应功能包的src文件夹下


7)代码(Code):放置功能包节点源代码的文件夹。


1.2 计算图


计算图是ROS在点对点网络里整合并处理数据的过程。基本计算图概念是 节点, 主机, 参数服务器, 消息, 服务, 话题, 和 数据包,它们通过不同的方式提供数据给图层。


这些概念是在ros_comm库里实现的。


aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDAzMjIyMjIyMzQwMzUucG5n.png


1)节点(Node)—节点是执行任务的进程,也称为软件模块。


注:在ROS中,最小的进程单元就是节点( node)。一个软件包里可以有多个可执行文件, 可执行文件在运行之后就成了一个进程(process), 这个进程在ROS中就叫做节点 。


2)节点管理器(ROS Master)—管理者角色,统筹管理节点,保证节点的正常运行。


注:当ROS程序启动时, 第一步首先启动master, 由节点管理器处理依次启动node 。


作用:


通过RPC提供登记列表及对其他计算图表的查找功能,帮助节点间互相查找,建立连接,进行点对点的通信


控制中心,提供参数服务器,管理全局参数


3)参数服务器(Parameter Server)—参数服务器是节点存储参数的地方、 用于配置参数, 全局共享参数。 参

数服务器使用互联网传输, 在节点管理器中运行, 实现整个通信过程。 参数服务器维护着一个数据字典, 字典里存储着各种参数和配置。


4)消息(Message)—消息在ROS中,是一种数据类型,节点之间通过消息来互相通信。消息类型有ROS标准类型和基于标准消息开发的自定义类型两种。


6)主题(Topic)—异步通信机制,传输消息(Message)


主题:指节点发布的消息的去处。节点可以发布消息到话题,也可以订阅话题以接收消息。当一个节点发送数据时,我们就说该节点正在向主题发布消息。节点可以通过订阅某个主题,接受来自其他节点的消息。


发布/订阅:多对多的传输方式


aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDAzMjIyMDU0NTE1NzcucG5n.png


6)服务(Service)—同步通信机制,传输请求/应答数据,基于C/S模型


当你需要直接与节点通信并获得应答时,将无法通过主题实现,从而需要服务。此外,服务必须有唯一的名称。当一个节点提供某个服务时,所有的节点都可以通过使用ROS客户端编写的代码与它通信。


aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDAzMjIyMDU5NDE0MjUucG5n.png


请求/应答:一对多的传输模式


7)消息记录包(bag)—是一种用于保存和回放ROS消息数据的文件格式。消息记录包是一种用于存储数据的重要机制,它可以帮助记录一些难以收集的传感器数据,然后通过反复回放数据进行算法的性能开发和测试。ROS创建的消息记录包文件以*.bag为扩展名,通过播放、停止、后退操作该文件,可以像实时会话一样在ROS中再现情景,便于算法的反复调试。


1.3 开源社区


ROS开源社区的概念主要是ROS资源,其能够通过独立的网络社区分享软件和知识。


aHR0cHM6Ly9naXRlZS5jb20vSVQtY3V0ZS9QaWNiZWQvcmF3L21hc3Rlci9pbWcvaW1hZ2UtMjAyMDAzMjIyMzUzNDU2NjQucG5n.png


1)发行版(Distribution):ROS发行版包括一系列带有版本号、可以直接安装的功能包。

2)软件源(Repository):ROS依赖于共享网络上的开源代码,不同的组织机构可以开发或者共享自己的机器人软件。

3)ROS wiki:记录ROS信息文档的主要论坛。

4)邮件列表(Mailing list):交流ROS更新的主要渠道,同时也可以交流ROS开发的各种疑问。

5)ROS Answers:咨询ROS相关问题的网站。

6)博客(Blog):发布ROS社区中的新闻、图片、视频(http://www.ros.org/news


相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
1月前
|
Ubuntu 机器人 Linux
|
6天前
|
存储 传感器 编解码
ROS机器视觉入门:从基础到人脸识别与目标检测
【11月更文挑战第9天】从本文开始,我们将开始学习ROS机器视觉处理,刚开始先学习一部分外围的知识,为后续的人脸识别、目标跟踪和YOLOV5目标检测做准备工作。
104 56
|
13天前
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
Kotlin教程笔记(80) - MVVM架构设计
|
1月前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
71 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
20天前
|
Kubernetes 关系型数据库 MySQL
Kubernetes入门:搭建高可用微服务架构
【10月更文挑战第25天】在快速发展的云计算时代,微服务架构因其灵活性和可扩展性备受青睐。本文通过一个案例分析,展示了如何使用Kubernetes将传统Java Web应用迁移到Kubernetes平台并改造成微服务架构。通过定义Kubernetes服务、创建MySQL的Deployment/RC、改造Web应用以及部署Web应用,最终实现了高可用的微服务架构。Kubernetes不仅提供了服务发现和负载均衡的能力,还通过各种资源管理工具,提升了系统的可扩展性和容错性。
58 3
|
26天前
|
存储 前端开发 测试技术
Android kotlin MVVM 架构简单示例入门
Android kotlin MVVM 架构简单示例入门
28 1
|
26天前
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
Kotlin教程笔记(80) - MVVM架构设计
25 1
|
30天前
|
传感器 机器人 数据处理
ROS 编程入门的介绍
【10月更文挑战第13天】ROS(Robot Operating System)是一种开源的机器人软件框架,广泛用于机器人开发中。通过使用 ROS,开发者可以轻松创建和管理机器人应用程序。在本节中,我们将介绍如何创建一个 ROS 功能包并实现一些基本功能。
|
1月前
|
消息中间件 关系型数据库 Java
‘分布式事务‘ 圣经:从入门到精通,架构师尼恩最新、最全详解 (50+图文4万字全面总结 )
本文 是 基于尼恩之前写的一篇 分布式事务的文章 升级而来 , 尼恩之前写的 分布式事务的文章, 在全网阅读量 100万次以上 , 被很多培训机构 作为 顶级教程。 此文修改了 老版本的 一个大bug , 大家不要再看老版本啦。
|
1月前
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
本系列学习教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。对于希望快速学习Kotlin语法的读者,建议参考“简洁”系列教程。本文重点介绍了Kotlin实现MVVM架构的设计思路和代码实现,包括Model、ViewModel和View层的具体实现,以及如何通过LiveData和viewModelScope有效管理数据和内存,避免内存泄漏。此外,还讨论了MVVM架构的常见缺点及应对策略,帮助开发者在实际项目中更好地应用这一设计模式。
33 1

推荐镜像

更多