ROS | 机器人操作系统简介

ROS | 机器人操作系统简介机器人操作系统(ROS)简介1.ROS基本概念2.ROS架构2.1OS层2.2中间层2.3应用层3.通信机制4.计算图4.1节点(Node)4.2节点管理器(Master)4.3消息(Message)4.4话题(Topic)4.5服务(Service)4.6动作(Action)4.7消息记录包(Bag)4.8参数(Parameter)4.9功能包(Package)4.10功能包清单(Packagemanifest)4.11元功能包(MetaPackage)5.开源社区1.ROS基本概念ROSWik

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1. ROS基本概念

ROS Wiki对于 机器人操作系统(ROS) 的解释是:ROS是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。它的目的是为了提高机器人研发中的软件复用率,简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。
在这里插入图片描述

上图是ROS官方早期发布的一张图,简单定义了什么是ROS,即ROS是通讯机制、开发工具、应用功能以及生态系统的集合体,其中通信机制可以说是ROS的核心。

2. ROS架构

在这里插入图片描述

2.1 OS层

ROS并非像Windows、Linux等传统意义上的操作系统,无法直接运行在计算机硬件上,因此它需要依赖于Linux系统

2.2 中间层

Linux系统本身没有针对机器人开发的中间件,因此ROS在中间层做了大量工作。首先是基于TCP/UDP网络,并在此之上进一步封装而构建的TCPROS/UDPROS通信系统。另外ROS还提供了一种进程内的通信方法——Nodelet,为多进程通信提供了一种更为优化的数据传输方式。在通信机制之上,ROS提供了大量机器人开发的库,以提供给应用层调用。

2.3 应用层

应用层中ROS需要一个管理者——Master,负责管理整个系统正常运行,为节点间建立连接。

3. 通信机制

ROS采用的是一种点对点的分布式通信机制,实现模块间点对点的松耦合连接,所有软件功能及工具都建立在这种通信机制上,为用户提供多节点(进程)的通信服务,其中ROS最核心的三种通信机制是话题(Topic)通信机制服务(Service)通信机制参数(Parameter)管理机制

4. 计算图

ROS系统的功能模块以节点为单位单独运行,可以分布于多个不同或相同的主机中,通过端对端的拓扑结构相连接。
在这里插入图片描述

4.1 节点(Node)

节点就是执行具体任务的进程或独立运行的可执行文件,通常一个系统由多个节点组成,节点之间可以通过ROS客户端库(如roscpp 、rospy)相互通信。不同节点可使用不同编程语言,可分布式运行在不同的主机。节点在系统中的名称必须是唯一的。

4.2 节点管理器(Master)

节点管理器在系统中主要起到了一个中介的作用,能够帮助节点相互找到彼此。节点管理器能够为节点提供命名和注册服务,以及跟踪和记录话题/服务通信。同时节点管理器还提供了一个参数服务器(Parameter Server),节点使用此服务器存储和检索运行时的参数。

4.3 消息(Message)

消息本身是基于发布/订阅模型的话题通信机制而来的,具有一定的类型和数据结构,既包含ROS提供的标准数据类型,也可由用户自定义数据类型。

4.4 话题(Topic)

话题通信采用的是一种异步通信机制。话题通信基于发布/订阅模型,数据由发布者传输给订阅者。其中节点既可以作为发布者发布消息,也可以作为订阅者订阅消息。同一个话题的发布者和订阅者可以不唯一,另外一个节点也可以发布或订阅多个消息。一般来说,发布者和订阅者并不知道对方的存在。发布者将信息发布在一个全局的工作区内,当订阅者发现该信息是它所订阅的,就可以接收到这个信息。通常用于数据传输。

4.5 服务(Service)

服务通信采用的是一种同步通信机制。服务通信基于客户端/服务器模型,客户端(Client)发送请求数据(Request),服务器(Server)完成处理后返回应答数据(Response)。与话题不同的是,ROS中只允许有一个节点提供指定命名的服务。通常用于逻辑处理。

4.6 动作(Action)

动作是基于ROS消息机制实现的一种问答通信机制,基于客户端/服务器模型,服务器可以连续反馈数据给客户端,客户端可以在任务运行过程中中止运行。动作Action的接口主要由goal、cancel、status、feedback和result组成,客户端可以在任务启动前向服务器发布任务目标goal,也可以在任务过程中向服务器发送cancel请求取消任务。服务器向客户端反馈服务器当前的状态,或周期性反馈任务运行的监控数据,而result在任务运行过程中只发布一次,仅在服务器完成动作后反馈一个最终结果。

4.7 消息记录包(Bag)

消息记录包是一种用于保存和回放ROS消息数据的文件格式。它使用.bag格式保存消息、主题、服务和其他ROS数据信息,可以在事件发生后,通过使用可视化工具调用和回放数据,检查在系统中到底发生了什么。记录包文件可以像实时会话一样在ROS中再现情景,在相同时间向主题发送相同的数据。通常用于调试算法。

4.8 参数(Parameter)

参数服务器能够保存一部分参数作为全局共享字典,系统中的所有节点都可以通过网络访问这些共享字典,存储和检索参数的参数名或参数值,而字典中的数据类型包含了int整型、float浮点型、string字符串等。参数的存储和检索采用的通信机制是更为底层的RPC,而不再是话题或服务。它更适合存储静态、非二进制的配置参数,不适合存储动态配置的数据。

4.9 功能包(Package)

功能包是ROS软件中的基本单元,包含节点源码、配置文件、数据定义等。

4.10 功能包清单(Package manifest)

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

4.11 元功能包(Meta Package)

元功能包是一种特殊的功能包,它只包含元功能包清单文件。它的作用是将多个具有相同功能的功能包整合成一个逻辑上独立的功能包,类似于功能包集合。

5. 开源社区

ROS开源社区级主要关于ROS资源,能够通过独立的网络社区分享软件和知识。这些资源包括:

  • 发行版(Distribution) —— ROS发行版是可以独立安装的,带有版本号的一系列功能包集。ROS发行版像Linux发行版一样发挥类似的作用。这使得ROS软件安装更加容易,而且能够通过一个软件集合来维持一致的版本。
  • 软件源(Repositorie) —— ROS依赖于共享开源代码与软件源的网站或主机服务,在这里不同的机构能够发布分享各自的机器人软件和程序。
  • ROS Wiki —— ROS Wiki是用于记录有关ROS系统信息的主要论坛。任何人都可以注册账户和贡献自己的文件,提供更正和更新,编写教程以及其他信息。
  • 邮件列表(Mailing list) —— ROS用户邮件列表是关于ROS的主要交流渠道,能够交流从ROS软件更新到ROS软件使用中的各种疑问或信息。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200739.html原文链接:https://javaforall.net

(0)
上一篇 2025年8月22日 下午2:43
下一篇 2025年8月22日 下午3:15


相关推荐

  • oracle9i配置

    oracle9i配置第 2 章 nbsp Oracle9i 的安装本章将以 Windows 操作系统为例讲述 Oracle9i 数据库的安装 主要内容包括 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 安装前的准备 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp Oracle9i 数据库的安装 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 验证安装成功 2 1 nbsp 安装前的准备 2 1 1 nbsp 安装需求 Oracle 公司推荐在 WindowsNT 和 Windows2000 下安装 Oracle 数据库 并且磁盘

    2026年3月16日
    2
  • 梯度下降优化算法综述

    梯度下降优化算法综述本文翻译自 SebastianRud 的 Anoverviewof 作者首先在其博客中发表了这篇文章 其博客地址为 Anoverviewof 之后 作者将其整理完放在了 arxiv 中 其地址为 Anoverviewof

    2026年3月19日
    3
  • Palo, Palo

    Palo, Palo

    2021年8月8日
    68
  • onPropertyChange 事件详解

    先看这么一段解释:onpropertychange:当在对象上进行属性改变时候触发onchange:当对象内容或者选择内容改变时候触发当一个HTML元素的属性改变的时候,都能通过onpropertychange来捕获。例如一个<inputname="text1"id="text1"/>对象的value属性被页面的脚本修改的时候,onchange无法捕获到,…

    2022年4月6日
    160
  • JDBC连接数据库 mysql serverTimezone useSSL 时差

    JDBC连接数据库 mysql serverTimezone useSSL 时差驱动包用的是 mysql connector java 8 0 11 jar 新版的驱动类改成了 com mysql cj jdbc Driver 新版驱动连接 url 也有所改动指定时区 serverTimezo GMT 2B8 指定是否用 ssl 连接 true 值还报错了 useSSL falseClass forName com mysql cj jdbc Driver

    2026年3月26日
    2
  • ListView之多种类型Item

    ListView之多种类型Item一、概述一般而言,listview每个item的样式是一样的,但也有很多应用场景下不同位置的item需要不同的样式。拿微信举例,前者的代表作是消息列表,而后者的典型则是聊天会话界面。本文重点介绍

    2022年7月4日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号