目录

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是什么,一些不同解释如下:

      (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)

机器人操作系统ROS是什么?相关推荐

  1. 计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能

    博客中大量介绍了将Ubuntu等Linux系统借助机器人操作系统ROS实现机器人控制设计开发和物联网功能案例,并可基于OpenAI等实现人工智能相关训练. 这篇博文围绕windows系统展开,之前也写 ...

  2. 一文读懂自动驾驶中的机器人操作系统ROS

    一.什么是机器人操作系统ROS 1.ROS(Robot Operating System)是一个操作系统 ROS是对机器人的硬件进行了封装,不同的机器人.不同的传感器,在ROS里可以用相同的方式表示( ...

  3. 机器人操作系统ROS 编程开发--详细总结

    最近工作涉及到自动驾驶的,需要学习ROS,学习中总结了一些知识点,分享给大家. ROS基本介绍 机器人操作系统ROS,是一种分布式处理框架(又名Nodes),ROS常用C++和python编程语言开发 ...

  4. 机器人操作系统ROS(4)话题编程

    此节的前提是已经创建好工作空间,请参考 工作空间 一.话题通讯模型 二.话题编程实现 1. 实现发布者(Talker) a.在~/catkin_ws/src/learning_communicaton ...

  5. 从零打造一个机器人002【初识机器人操作系统--ROS】

    从零打造一个机器人002[初识机器人操作系统–ROS] 1.ROS是什么 ROS是一个适用于机器人的开源的元操作系统.其实它并不是一个真正的操作系统,其底层的任务调度.编译.寻址等任务还是由Linux ...

  6. 关于机器人操作系统(ROS)学习前须知二三

    ROS基础资料 1.什么是ROS? ROS(机器人操作系统,Robot Operating System),是专为机器人软体开发所设计出来的一套电脑作业系统架构.它是一个开源的元级操作系统(后操作系统 ...

  7. <笔记>机器人操作系统ROS理论与实践--第一讲:认识ROS

    <笔记>机器人操作系统ROS理论与实践--第一讲:认识ROS 前言 一.为什么需要ROS 二.ROS的总体设计 1.一个目标 2.五个特点 3.四位一体 三.ROS的系统实现--三个层次 ...

  8. 机器人操作系统ROS—深度相机+激光雷达实现vSLAM建图与导航 转载

    原文:机器人操作系统ROS-深度相机+激光雷达实现vSLAM建图与导航_wx5d23599e462fa的技术博客_51CTO博客 这次将带大家学习如何使用深度相机实现机器人的视觉SLAM建图及导航. ...

  9. (二)安装机器人操作系统-ros

    总目录 (一)安装虚拟机,并虚拟Ubuntu系统 (二)安装机器人操作系统-ros 本文章推荐使用由小鱼所制作的工具箱,方便又快捷,一键安装网址如下 一行命令安装roshttps://fishros. ...

  10. 机器人操作系统ROS(1)

    ROS总体设计 ROS五个特点 点对点设计 一个使用ROS的系统包括一系列进程,这些进程存在于多个不同的主机并且在运行过程中通过端对端的拓扑结构进行联系,如图2所示.虽然基于中心服务器的那些软件框架也 ...

最新文章

  1. 重磅直播|结构光之相移法+格雷码技术详解
  2. python pandas csv时间聚合_Python通过pandas操作excel常用功能
  3. boost::core模块实现分配器分配提示
  4. OpenCV直方图均衡Histogram Equalization
  5. libvirt-virsh命令
  6. 蛋糕是叫胚子还是坯子_最好吃的蛋糕胚子——分蛋海绵蛋糕详解
  7. 全国省份城市区域代码
  8. 《数字图像处理 第三版》(冈萨雷斯)——第八章 图像压缩
  9. 爱加密脱壳(持续更新)
  10. 配置Visual Studio Code用作51单片机C51代码编辑器,替代KeilC编辑代码事半功倍!
  11. JAVA 事务回滚方法调用非事务回滚方法
  12. 2019年6月全国程序员工资统计--两个月岗位减少11%,互联网寒冬来了
  13. python化学公式配平_最简单易懂的化学方程式的配平方法
  14. 斯特林公式 ——Stirling公式(取N阶乘近似值)
  15. gfortran版本
  16. 派森python_python2.7下载-派森(Python)下载v2.7.18 官方正式版【x86|x64】-西西软件下载...
  17. windows下,基于python3的wxpython体验+cxfreeze6.0使用
  18. 房产抵押贷款需要的资质有哪些
  19. vuejs2.0 数组操作 提示Cannot read property 'push' of undefined
  20. DNA计算机及DNA存储

热门文章

  1. CnPack开发包基础库
  2. winform backgroundWorker 用法
  3. 2021-09-18
  4. vim command line操作
  5. 重订增广(清朝·周希陶)
  6. linux windows 区别
  7. csol显示服务器,csol进不了游戏服务器
  8. 阿里云服务器需要备案吗?
  9. 山东大学电路分析实验1 万用表的使用
  10. windows7计算机不显示光驱,win7系统检测不到光驱的解决方法