ROS | 机器人操作系统简介
ROS | 机器人操作系统简介
- 1. ROS基本概念
- 2. ROS架构
- 2.1 OS层
- 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 功能包清单(Package manifest)
- 4.11 元功能包(Meta Package)
- 5. 开源社区
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软件使用中的各种疑问或信息。
ROS | 机器人操作系统简介相关推荐
- ros机器人操作系统简介
机器人操作系统 (Robot Operating System, 或简称 ROS),它可以帮助提高机器人软件的开发效率. ROS 系统的官方定义如下: ROS是面向机器人的开源的元操作系统(met ...
- [译]机器人操作系统简介:终极机器人应用框架(上)
2019独角兽企业重金招聘Python工程师标准>>> [译]机器人操作系统简介:终极机器人应用框架 /*** 原文出处:https://www.toptal.com/robotic ...
- ROS2机器人操作系统简介2021英文字幕版本
ROS2机器人操作系统简介2021英文字幕版本 文档推荐: docs.ros.org/ ROS2 Galactic ROS1 Noetic 只推荐官方文档和英文课程,比较成熟,bug少,能节约大量时间 ...
- ROS机器人操作系统学习笔记(三)ROS通信架构
ROS机器人操作系统学习笔记(三)ROS通信架构 ROS的通信架构是ROS的灵魂,也是整个ROS正常运行的关键所在.ROS通信架构包括各种数据的处理,进程的运行,消息的传递等等.本章主要介绍了通信架构 ...
- ROS机器人操作系统学习笔记(一)--基本概念
ROS机器人操作系统学习教程(一)–基本概念 1. 基本概念 1.1 ROS背景 机器人操作系统(Robot Operating System, ROS)是一个应用于机器人上的操作系统,它操作方便.功 ...
- ROS 机器人操作系统进阶实战
ROS(Robot Operating System) 是一个开源的机器人操作系统,目的是提供开发平台.工具及生态给开发人员,可以让开发人员快速开发.本课程通过精心设计的案例,分析技术要点.理解运行原 ...
- 入门ROS机器人操作系统——准备工作
近期入门学习ROS机器人操作系统,有时间记录一下踩坑过程,给后来者提供参考,也方便自己后期查阅. 首先,分享几个软件安装包: 1. 虚拟机VMware16 链接:https://pan.baidu.c ...
- ROS机器人操作系统学习(二)
ROS机器人操作系统学习(二) ROS概念 通信机制+开发工具+应用功能+生态系统 提高机器人研发中的软件复用率 通信机制 松耦合分布式通信 开发工具 应用功能 生态系统 节点与节点管理器 话题与服务 ...
- ROS机器人操作系统——如何将ROS与STM32连接(十六)
ROS机器人操作系统 文章目录 ROS机器人操作系统 前言 一.两种控制器的功能 二.硬件连接 总结 前言 前面学习了ROS的基本操作,仅仅只使用这个操作系统并没有什么用处,还需要讲他与硬件相结合从而 ...
- ROS机器人操作系统——创建工作空间与功能包(四)
ROS机器人操作系统 文章目录 ROS机器人操作系统 前言 一.工作空间 1.创建工作空间 2.编译工作空间 3.设置环境变量 4.检查环境变量 二.功能包 1.创建功能包 2.编译功能包 总结 前言 ...
最新文章
- gridview列 数字、货币和日期 显示格式
- Element el-upload上传组件详解
- python 日志分析_python 日志分析统计脚本 | 学步园
- 构造方法、类的初始化块以及类字段的初始化顺序
- insert时调用本身字段_MySQL RC级别下并发insert锁超时问题 - 案例验证
- MySQL中的char与varchar详解
- 创建IPSEC连接安全
- 图解ThreadLocal核心原理
- 如何使用SQL Server游标
- ENVI入门系列教程---二、图像分析---9.遥感图像监督分类
- 第三章 垃圾回收的一些概念
- python层次聚类法画图_原理+代码|详解层次聚类及Python实现
- C++ typedef 用法详解
- Android11编译导入PRODUCT_BOOT_JARS
- BDE Installer for RAD Studio
- 墙裂安利!用腾讯云AI语音合成打造自己的第一本有声书
- php 上传apk包到cdn_零基础搭建自己的博客网站和配置CDN设置wordpress篇
- 【彩艳】ArcGIS影像裁剪说明
- UE的Blend Profile
- 【图像处理】获取图片像素点
热门文章
- Windows Security Center注册分析
- 前端学习(一):HTML基本语法
- 曾仕强主讲:易经的奥秘(全文讲义)
- WPS如何使参考文献对齐
- 英雄联盟游戏结束后显示与服务器失去连接,英雄联盟游戏被终止连接不上解决方法...
- 独立团-手游脱机封包辅助课程(完整版)
- ACTIVEX控件debug版本在Win7下注册失败的处理方法
- java方法调用制作万年历,基于JAVA的万年历api调用代码实例
- Windows远程桌面实现之十二:桌面屏幕通过ONVIF协议与NVR等监控录像设备对接,以及进一步增强直播功能
- 用陆地卫星 TM6数据演算 地表温度的单窗算法