机器人操作系统ROS是什么?

2023-05-16

目录

1 什么是ROS

2.ROS的许可协议

3.ROS的主要发行版本

4.ROS的主要功能

5.ROS的应用

6.ROS开发的常用工具

7.ROS的优点

8.ROS的缺点


1 什么是ROS

        ROS是机器人操作系统(Robot Operating System)的英文缩写。

        机器人上跑ROS=PC上跑Windows=手机上跑安卓

        ROS的原型源自斯坦福大学的STanford Artificial Intelligence Robot (STAIR) 和 Personal Robotics (PR)项目。

        ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。它包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。

        ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体。

ROS简介

        关于ROS是什么,一些不同解释如下:

      (1)ROS wiki的解释

        ROS(Robot Operating System,下文简称“ROS”)是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。

        ROS 的主要目标是为机器人研究和开发提供代码复用的支持。ROS是一个分布式的进程(也就是“节点”)框架,这些进程被封装在易于被分享和发布的程序包和功能包中。ROS也支持一种类似于代码储存库的联合系统,这个系统也可以实现工程的协作及发布。这个设计可以使一个工程的开发和实现从文件系统到用户接口完全独立决策(不受ROS限制)。同时,所有的工程都可以被ROS的基础工具整合在一起。

        (2)Brian Gerkey的网上留言

        我通常这样解释ROS:

        1. 通道:ROS提供了一种发布-订阅式的通信框架用以简单、快速地构建分布式计算系。

        2. 工具:ROS提供了大量的工具组合用以配置、启动、自检、调试、可视化、登录、测试、终止分布式计算系统。

        3. 强大的库:ROS提供了广泛的库文件实现以机动性、操作控制、感知为主的机器人功能。

        4. 生态系统:ROS的支持与发展依托着一个强大的社区。ros.org尤其关注兼容性和支持文档,提供了一套“一站式”的方案使得用户得以搜索并学习来自全球开发者数以千计的ROS程序包。

      (3)摘自《ROS by Example》的解释

        ROS的首要目标是提供一套统一的开源程序框架,用以在多样化的现实世界与仿真环境中实现对机器人的控制。

 2.ROS的许可协议

        ROS生态系统中的每个软件包都需要指定一个许可协议:

        (1)ROS核心代码使用“三句版BSD协议” 。

        (2)由于ROS软件包还包含大量社区软件包,这些软件包不一定使用BSD协议,而是使用其他某种许可协议,如Apache 2.0协议、GPL协议、MIT协议或自定义的某种协议。

        BSD协议参考:https://www.runoob.com/note/13176

 3.ROS的主要发行版本

4.ROS的主要功能

        ROS提供一些标准操作系统服务,例如硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理。ROS是基于一种图状架构,从而不同节点的进程能接受,发布,聚合各种信息(例如传感,控制,状态,规划等等)。

        ROS可以分成两层,低层是上面描述的操作系统层,高层则是广大用户群贡献的实现不同功能的各种软件包,例如定位绘图,行动规划,感知,模拟等等。

        ROS首要目的是在机器人研发领域提高代码复用率,建立一个在全球范围内协作开发机器人软件的环境。

在这里插入图片描述


 5.ROS的应用

 应用功能:SLAM、导航、定位、图像处理、机械臂控制等。

 应用场景:

 6.ROS开发的常用工具

(1)Gazebo:机器人仿真平台

 https://www.guyuehome.com/2256

(2)Rviz:(the Robot Visualization tool),机器人可视化工具

参考:https://www.guyuehome.com/2213

  (3)  MoveIt!:轨迹规划

参考:https://www.guyuehome.com/435

 更多工具参考:

https://www.cnblogs.com/hg-love-dfc/p/10413764.html

 7.ROS的优点

(1)点对点设计:ROS在处理进程之间的通信时,采用了耦合度相对较低的点对点设计。

(2)多语言支持:ROS现在支持许多种不同的语言,例如C++、Python、Octave和LISP,也包含其他语言的多种接口实现。

(3)功能包丰富:目前ROS已经可以支持使用的第三方软件包数量达到数千个,从而大大提高
了开发与测试的工作效率。

(3)免费开源:ROS是一款免费且开源的操作系统。ROS中的所有源代码都是公开发布的,因此
有利于人们对ROS进一步的学习、研究与完善。

(5)架构精简、集成度高:ROS框架具有的模块化特点使得每个功能节点可以进行单独编译,并
且使用统一的消息接口让模块的移植、复用更加便捷。

8.ROS的缺点

(1)多机器人:ROS只有一个Master,缺乏构建多机器人系统的标准方法;

(2)操作系统:在Windows、MacOS、RTOS等系统上无法应用或者功能有限;

(3)实时性: 缺少实时性方面的设计;

(4)安全性:需要良好的网络环境保证数据的完整性,而且网络没有数据加密、安全防护等功能;

(5)稳定性:ROS 1的稳定性欠佳,研究开发与上市产品之间的过渡艰难;

附:其它参考:

你懂什么是轻松入门姿势?—— ROS开发工程师养成之路 - 哔哩哔哩 (bilibili.com)

ROS史话36篇 - 古月居 (guyuehome.com)

【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程_哔哩哔哩_bilibili

ROS的前世今生|《如何开启一场机器人革命》中字纪录片_哔哩哔哩_bilibili

ROS笔记(1) ROS简介_氢键H-H-CSDN博客

ros(机器人操作系统)_百度百科 (baidu.com)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器人操作系统ROS是什么? 的相关文章

随机推荐

  • A星寻路算法的学习总结(详解)

    目录 1 理论基础 1 1A星寻路是用来解决什么问题的 1 2A星寻路的基本原理 2 代码实现 2 1每个格子的信息 2 2A星寻路管理器 2 3测试代码 3 实例演示 1 理论基础 1 1A星寻路是用来解决什么问题的 A星寻路是用来计算玩
  • C语言单片机栈、堆、堆栈的区别(仅供参考)

    计算机C语言中各个变量的存放区域 xff1a 代码区 xff08 CODE xff09 xff1a 存放函数代码 xff1b 静态数据区 xff08 DATA xff09 xff1a 存放全局变量 静态变量 xff1b 堆区 xff08 H
  • 用c语言写链表

    链表是数据结构的一种 xff0c 是其他三个数据结构栈 xff0c 树 xff0c 图的基础 xff0c 只有将链表这一数据结构弄懂 xff0c 才能理解其他三种数据结构 举一个例子 xff0c 老师让你设计一个联系人系统 xff0c 其中
  • Fiddler抓包工具详解

    Fiddler的详细介绍 一 Fiddler与其他抓包工具的区别 1 Firebug虽然可以抓包 xff0c 但是对于分析http请求的详细信息 xff0c 不够强大 模拟http请求的功能也不够 xff0c 且firebug常常是需要 无
  • python 解析Json对象之jsonpath_rw用法

    jsonpath rw xff1a 一个可以像写xpath一样写json的Python第三方库 首先安装 xff1a pip install jsonpath rw 实例 xff1a from jsonpath rw import json
  • selenium之xpath使用

    XPath即XML路径语言 xff0c 支持从xml或html中查找元素节点 xff0c 使用XPath完全可以替代其他定位放式 xff0c 如 xff1a find element by xpath 39 64 id 61 34 34 3
  • Python-面向对象之多态

    当子类和父类都存在相同的run 方法时 xff0c 我们说 xff0c 子类的run 覆盖了父类的run xff0c 在代码运行的时候 xff0c 总是会调用子类的run 这样 xff0c 我们就获得了继承的另一个好处 xff1a 多态 c
  • 使用Ubuntu帐户创建SFTP

    提供sftp服务的有vsftpd和internal sftp xff0c 这里用的是系统自带的internal sftp xff0c 操作步骤如下 xff1a 1 创建用户 testenv xff0c 并禁止ssh登录 xff0c 不创建家
  • flask数据分页paginate的使用(flask学习)

    Flask的数据分页示例 1 xff0c 首先写数据获取的视图函数 xff0c 就像这样 xff1a 64 app route 39 39 64 login required def index page 61 request args g
  • Python __dict__属性详解

    我们都知道Python一切皆对象 xff0c 那么Python究竟是怎么管理对象的呢 xff1f 1 无处不在的 dict 首先看一下类的 dict 属性和类对象的 dict 属性 coding utf 8 class A object 3
  • Flask-SQLAlchemy 中的 relationship & backref

    今天重看 Flask 时 xff0c 发现对backref仍然没有理解透彻 查阅文档后发现 xff0c 以前试图孤立地理解backref是问题之源 xff0c backref是与relationship配合使用的 一对多关系 db rela
  • Django HttpResponse与JsonResponse

    我们编写一些接口函数的时候 xff0c 经常需要给调用者返回json格式的数据 xff0c 那么如何返回可直接解析的json格式的数据呢 xff1f 首先先来第一种方式 xff1a from django shortcuts import
  • Ubuntu安装mysql

    首先执行下面三条命令 xff1a sudo apt get install mysql server sudo apt install mysql client sudo apt install libmysqlclient dev 安装成
  • 10种动态进度条用css3实现

    用css做的10种动态进度条 xff0c 喜欢可以直接去用话不多说先看效果图 xff1a 实现上图的 xff0c 最主要的就是应用了css动画属性 64 keyframes和animation属性结合应用 下面看看语法 xff1a 64 k
  • Yolo训练数据标注工具-Yolo_mark 使用教程

    一 安装与测试 环境 xff1a Ubuntu16 04 43 Opnecv 43 Cmake 项目地址 xff1a https github com AlexeyAB Yolo mark 下载 打开终端 xff0c 键入 xff1a gi
  • x86、ARM分属大小端

    小端模式 xff1a 一个数据的高位在大的地址端 xff0c 低位在小的地址端 xff0c x86也就是pc机就是小端的 xff1a include 34 stdio h 34 include 34 stdlib h 34 int main
  • 二叉树(C语言实现)——链式存储结构

    include lt stdio h gt include lt stdlib h gt include lt stdbool h gt define QueueSize 200 typedef char DataType typedef
  • 栈,堆,常量区都放什么

    1 寄存器 xff1a 最快的存储区 由编译器根据需求进行分配 我们在程序中无法控制 xff1b 1 栈 xff1a 存放基本类型的变量数据和对象的引用 xff0c 但对象本身不存放在栈中 xff0c 而是存放在堆 xff08 new 出来
  • Windows10安装Docker并创建本地Ubuntu环境

    安装Docker参考文章 xff1a https www cnblogs com Can daydayup p 15468591 html label0 安装本地Ubuntu环境 xff1a windows10下安装docker xff0c
  • 机器人操作系统ROS是什么?

    目录 1 什么是ROS 2 ROS的许可协议 3 ROS的主要发行版本 4 ROS的主要功能 5 ROS的应用 6 ROS开发的常用工具 7 ROS的优点 8 ROS的缺点 1 什么是ROS ROS是机器人操作系统 xff08 Robot