虽然使用ros打了很多比赛,但是最近秋招面试发现也需要理清楚很多概念性的东西,写一下博客用作记录。
松耦合分布式通信
松耦合:(Loose Coupling)是软件工程中的一个概念,指的是模块或组件之间的依赖关系较少或较弱,使得它们可以独立地进行修改、替换或扩展,而不影响其他模块或组件的功能。松耦合的目标是提高系统的可维护性、可扩展性和可重用性。
所有功能可以抽象为节点。
节点(Node):——执行单元
- 执行具体任务的进程、独立运行的可执行文件;
- 不同节点可以使用 不同的编程语言
- 节点在系统中的名称必须是 唯一 的
通讯方式:
话题(Topic):——异步通讯机制
- 节点间用来传输数据的重要总线 单向,无反馈
- 使用 发布/订阅 模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以 不唯一
消息(Message):——话题数据
- 具有一定类型和数据结构,包括ROS提供的标准类型和用户自定义类型
- 使用编程语言无关的 .msg 文件定义,编程过程中生成对应的代码文件
服务(Service): ——同步通信机制
- 使用 客户端/服务器 (C/S)模型,客户端发送 请求 数据,服务器完成处理后返回 应答 数据
- 使用编程语言无关的 .srv 文件定义请求和应答数据结构,编译过程中生成对应的代码文件
- 请求一次,返回一次,阻塞等待
话题 | 服务 | |
---|---|---|
同步性 | 异步 | 同步 |
通信模型 | 发布/订阅 | 服务器/客户端 |
底层协议 | ROSTCP/ROSUDP | ROSTCP/ROSUDP |
反馈机制 | 无 | 有 |
缓冲区 | 有 | 无 |
实时性 | 弱 | 强 |
节点关系 | 多对多 | 一对多(one server) |
适用场景 | 数据传输 | 逻辑处理 |
功能包(Package):
ROS软件中的基本单元,包含节点源码、配置文件、数据定义等
功能包清单(Package manifest)
记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等
元功能包(Meat Packages)
组织多个用于同一目的的功能包
ROSCORE
roscore
是 ROS(Robot Operating System)中的一个基本命令,用于启动 ROS 核心组件。它是 ROS 系统的核心进程,提供了节点之间通信的基础服务。roscore
通常包括以下三个主要组件:
- 节点管理器(ROS Master) :——控制中心
- ROS Master 是 ROS 网络的核心部分,负责管理所有节点的注册信息、话题和服务。它提供名称解析服务,允许 ROS 节点查找和连接到其他节点。
- Master 记录了所有发布者、订阅者和服务的信息,当一个节点启动时,它会向 Master 注册自己,并且可以通过 Master 发现和连接其他节点。
- 提供参数服务器,节点使用此服务器存储和检索运行时的参数。
- 参数服务器(ROS Parameter Server):
- 可以通过 网络 API 访问的共享的 多变量 字典。在运行时节点(Nodes)使用此服务器去存储和检索参数。(类似于全局变量,存储多个节点共享的数据。)
- 这对于系统配置和节点初始化非常有用,因为参数服务器允许在启动时和运行时调整参数。
- 适合存储静态、非二进制的 配置参数,不适合存储动态配置的数据
- 日志(ROS Logging):
-
提供日志记录服务,支持节点发布日志消息,以便进行调试和监控。ROS 提供了多种日志级别,如 debug、info、warn、error 和 fatal。
-
日志服务允许开发者跟踪系统运行状态,调试信息和错误消息。
————————————————版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
-
原文链接:https://blog.youkuaiyun.com/DDL_8_00/article/details/140416404