1.5 ROS架构

到目前为止,我们已经安装了ROS,运行了ROS中内置的小乌龟案例,并且也编写了ROS小程序,对ROS也有了一个大概的认知,当然这个认知可能还是比较模糊并不清晰的,接下来,我们要从宏观上来介绍一下ROS的架构设计。

立足不同的角度,对ROS架构的描述也是不同的,一般我们可以从设计者、维护者、系统结构与自身结构4个角度来描述ROS结构:

1.设计者

ROS设计者将ROS表述为"ROS = Plumbing + Tools + Capabilities + Ecosystem"

  • Plumbing: 通讯机制(实现ROS不同节点之间的交互)

  • Tools :工具软件包(ROS中的开发和调试工具)

  • Capabilities :机器人高层技能(ROS中某些功能的集合,比如:导航)

  • Ecosystem:机器人生态系统(跨地域、跨软件与硬件的ROS联盟)

2.维护者

立足维护者的角度: ROS 架构可划分为两大部分

  • main:核心部分,主要由Willow Garage 和一些开发者设计、提供以及维护。它提供了一些分布式计算的基本工具,以及整个ROS的核心部分的程序编写。

  • universe:全球范围的代码,有不同国家的ROS社区组织开发和维护。一种是库的代码,如OpenCV、PCL等;库的上一层是从功能角度提供的代码,如人脸识别,他们调用下层的库;最上层的代码是应用级的代码,让机器人完成某一确定的功能。

3.系统架构

立足系统架构: ROS 可以划分为三层

  • OS 层,也即经典意义的操作系统

    ROS 只是元操作系统,需要依托真正意义的操作系统,目前兼容性最好的是 Linux 的 Ubuntu,Mac、Windows 也支持 ROS 的较新版本

  • 中间层

    是 ROS 封装的关于机器人开发的中间件,比如:

    • 基于 TCP/UDP 继续封装的 TCPROS/UDPROS 通信系统

    • 用于进程间通信 Nodelet,为数据的实时性传输提供支持

    • 另外,还提供了大量的机器人开发实现库,如:数据类型定义、坐标变换、运动控制....

  • 应用层

    功能包,以及功能包内的节点,比如: master、turtlesim的控制与运动节点...

4.自身结构

就 ROS 自身实现而言: 也可以划分为三层

  • 文件系统

    ROS文件系统级指的是在硬盘上面查看的ROS源代码的组织形式

  • 计算图

    ROS 分布式系统中不同进程需要进行数据交互,计算图可以以点对点的网络形式表现数据交互过程,计算图中的重要概念: 节点(Node)、消息(message)、通信机制_主题(topic)、通信机制_服务(service)

  • 开源社区

    ROS的社区级概念是ROS网络上进行代码发布的一种表现形式

    • 发行版(Distribution) ROS发行版是可以独立安装、带有版本号的一系列综合功能包。ROS发行版像Linux发行版一样发挥类似的作用。这使得ROS软件安装更加容易,而且能够通过一个软件集合维持一致的版本。

    • 软件库(Repository) ROS依赖于共享开源代码与软件库的网站或主机服务,在这里不同的机构能够发布和分享各自的机器人软件与程序。

    • ROS维基(ROS Wiki) ROS Wiki是用于记录有关ROS系统信息的主要论坛。任何人都可以注册账户、贡献自己的文件、提供更正或更新、编写教程以及其他行为。网址是Documentation - ROS Wiki

    • Bug提交系统(Bug Ticket System)如果你发现问题或者想提出一个新功能,ROS提供这个资源去做这些。

    • 邮件列表(Mailing list) ROS用户邮件列表是关于ROS的主要交流渠道,能够像论坛一样交流从ROS软件更新到ROS软件使用中的各种疑问或信息。网址是lists.ros.org Mailing Lists

    • ROS问答(ROS Answer)用户可以使用这个资源去提问题。网址是Questions - ROS Answers: Open Source Q&A Forum

    • 博客(Blog)你可以看到定期更新、照片和新闻。网址是ROS robotics news,不过博客系统已经退休,ROS社区取而代之,网址是ROS Discourse

现在处于学习的初级阶段,只是运行了ROS的内置案例,编写了简单的ROS实现,因此,受限于当前进度,不会详细介绍所有设计架构中的所有模块,当前只介绍文件系统与计算图,下一章会介绍 ROS 的通信机制,这也是ROS的核心实现之一。

相关推荐
笨蛋不要掉眼泪7 小时前
MySQL架构揭秘:MVCC解决读一致性问题
数据库·mysql·架构
张忠琳7 小时前
【kubernetes】Node Feature Discovery 0.20.0-devel 源码深度解析 — 第四卷:CLI入口、工具链与全局架构总结
云原生·容器·架构·kubernetes·nvidia
不好听6137 小时前
BFF 架构实战:从前端直调 API 到加入中间层
前端·架构
Georgeviewer10 小时前
数字化工程落地复盘:通用SaaS架构的本地化缺陷与自研系统最优解|皖禾数智实战
大数据·人工智能·架构
柒和远方10 小时前
V043:BFF 层流式输出:从前端直连到生产级流式网关的架构演进
javascript·架构·node.js
Imagination官方博客12 小时前
边缘AI处理器的架构创新
人工智能·架构·gpu算力
momo14 小时前
智析AgentData-Analysis-Agent 0→1 架构、搭建与联调实战报告
架构
XUHUOJUN15 小时前
Azure Stack Hub 套餐、计划与订阅模型深度解析(上篇)
架构·azure stack
Sam_Deep_Thinking15 小时前
DDD里的领域服务,到底什么时候该用?
程序员·架构·系统架构·ddd
JouYY16 小时前
大模型底层学习(一)-Transformer 架构总览
架构·llm·agent