目录

1.前言:

2.介绍:

2.1ROS发展图:

2.2ROS架构:

2.3ROS的目的:

2.4ROS的作用:

3.ROS的具体介绍:

3.1ROS整体框架:

3.1.1目标:

3.1.2五个特点:

3.1.3四位一体:

3.2系统层次:

3.2.1计算图层:

3.2.2文件系统层:描述程序文件是如何组织和构建的

3.2.3开源社区层:ROS的开源可以让很多人共享资源,这个共享资源的平台也就可以称之为ROS的开源社区

4.总结:


1.前言:

本文主要是介绍一下ROS,让刚接触到或是刚见到这个字眼的人明白ROS是啥,是干嘛的,从哪来到哪去。本文组要参考博客https://blog.csdn.net/qq_25267657/article/details/84316111和古月居的视频及博客。原谅博主菜鸟一枚,文章如若有哪些错误欢迎各位斧正,我会在后续更改。

2.介绍:

ROS是Robot Operating System的简写,即机器人操作系统,说是操作系统,又不像是我们平常接触到的操作系统,这样说可能比较抽象,下面会具体介绍。

2.1ROS发展图:

看一下ROS的来源和发展图,ROS其实年龄并不大,算是一个比较新的领域,目前ROS的最新版本是2.0。

2.2ROS架构:

这是ROS的组要架构,本文也将按照此图来介绍ROS。上来就来这些可能会有点懵,但目的是为了让大家先有个总体框架,相信读完文章后在看此图会清晰很多。

2.3ROS的目的:

ROS来到这个世界的目的是什么?
这个问题可得询问斯坦福大学的机器人专家了,为什么开发了这样一个机器人操作系统,不过目前大家也都知道了。最初人们是想设计制造一个复杂的机器人,这个机器人能够类似于人一样能够感知,自我导航,能够自我控制去做一些复杂的工作。面对这么复杂的工作,在研发过程中肯定需要很多各样的有效资源的共享,但是目前很多资源要么难以共享,要么共享的资源之间不能直接拿过来用,所以,急需这样一个能够整合资源的框架和接口,使得资源之间能够共享使用,换个专业点的话说,就是使得各种功能、各种软件的重复利用率增加。因此为了 满足这一功能和作用,研发了ROS(robotics operating system)机器人操作系统,虽然表面上叫做操作系统,但是并不是真正的操作系统,说白了,就是一个框架,一个平台。

2.4ROS的作用:

ROS目前能够应用的是机器人领域,包括移动机器人和机械臂,移动机器人应该是应用最广泛的,主要是应用于机器人的建模、感知、导航、规划等,其可以和普通机器人结合进而控制真实机器人,功能的确强大,而且随着目前的发展势头,其功能是越来越强大。下面简单以几个例子来说明。
ROS用在机器人领域,机器人可以是移动机器人,也可以是机械臂,移动机器人就是类似于扫地机器人的那种,当然机器人也可以是移动机器人和机械臂的组合,比如下面这幅图的这个机器人。

从这幅图可以看出,ROS能够完成的东西还是真的挺多的哈,用其搭建的机器人完全就可以当成一个服务机器人来用了,可以叠衣服、做饭,还可以陪你玩桌球。
下面这幅图是ROS用在无人车领域,可以自动构建地图、导航和规划行进路径,和前面所说的百度无人车类似。

目前ROS能够结合的机器人也挺多的,国际上有名的工业机器人、协作机器人、服务机器人等绝大多数都已经用ROS开发过,所以在网上也是大把的资源。
但是ROS也有一些问题,就是目前实时性不是太强,所以ROS也推出了2.0版本,还有就是ROS在运行的时候容易崩溃,所以稳定性也有待提高,但是从总体上看,ROS运用在机器人领域还是蛮有优势的。

3.ROS的具体介绍:

3.1ROS整体框架:

3.1.1目标:

目标已经说过很多次了,就是为了提高复用性

3.1.2五个特点:

1.点对点设计:点在这里就是指的节点,一个机器人有多个功能,因此也就有了多个节点,因此,如果一个机器人的各个功能被分开,也就是一个个的节点,那ROS进行软件的复用就会方便的多。

2.多语言支持:节点之间可能会有联系,但是联系又没有那么紧密,每个节点都是一个功能,它们可以分别使用不同的编程语言进行编程,如C++、Python、Java等编程语言,无论采用哪种编程语言进行编程,最后节点之间进行信息交互的时候都可以通过与语言无关的一个接口进行连接。

3.架构精简,集成度高:ROS这一操作系统还是一个看起来结构比较简单,操作不难,而且功能集成丰富

4.组件化工具包丰富:这个字面理解就是说ROS有很多功能强大的工具,比如仿真界面工具rviz,仿真环境gazebo,rqt_plot图形化显示工具等,现在这些工具大家可能不懂具体能干什么,不过这些工具在大家学习到ROS的过程中都会碰到,而且是经常使用的。

 5.免费且开源:这个更好理解,ROS目前是免费的,并不像很多软件一样需要收费,因此我们只能用破解版,但是ROS正版就是免费的,很好,而且这个软件开源,ROS上你可以从全世界各大牛人分享的东东中找对自己有用的东西拿过来用,很方便。

3.1.3四位一体:

四位一体更能说明ROS是什么,更能解释ROS是什么。

对ROS进行总结便形成了ROS四位一体的格局,首先是ROS的通讯机制,这个大家都知道了,点对点通讯。其次是ROS具备很多开发工具,比如rviz等。接着,ROS的功能也非常多,在ROS中是以一个叫做功能包的形式存在的(注:此处的功能和节点不能混为一谈,大家可以理解为一个大功能,而节点可以理解为一个个小功能),其应用功能设计视觉导航、运动规划多个方面。最后,ROS也不是一个单独的软件,它所存在的环境有各大牛人,各大公司,全世界都在使用它,相当于一个活跃的生态系统。

3.2系统层次:

3.2.1计算图层:

计算图层主要是描述程序是如何运行的,也就是ROS当中很细节的层次,这个层次我们主要介绍几个概念,这几个概念分别是节点、节点管理器、话题、服务。

1.节点:前面也说过了,节点就是指功能,或者说是进程,也可以当作一个个软件模块。

2.节点管理器:节点管理器说白了就是管理节点的,跟指挥中心一样,类似于每一个固定电话是一个节点,那节点管理器就是基站,总站。

3.话题通讯:这个就比较重要了,涉及到ROS的通讯,前面说过,ROS的通讯机制是点对点通讯,也就是一个个节点之间的通讯,ROS节点之间的主要通讯方式是两种,这个话题通讯就是一种,另外一种是接下来会介绍到的第(4)点中的服务通讯,话题通讯和服务通讯是主要的通讯方式,这两种通讯方式的区别如下图所示,大家可以先看下面对这两种通信方式的具体介绍之后再来看这张表进行对比。

假设一个节点需要某种类型的信息,假设这种类型是“bar”,也就是我们所说的话题,那这个节点必须接收这种话题的信息,我们把这个节点称之为接收者或者订阅者(listener),因此它会向节点管理器(ROS Master)求助,节点管理器(ROS Master)然后便会帮助这个接收者(listener)找正在发布这种话题“bar”的节点,这个节点我们称之为发布者(talker)找到之后便会帮助这两个节点建立连接,然后通讯。

总体上来说一下步骤:
**第一步:**信息的发布者(talker)和接收者(listener)都必须向节点管理器(ROS Master)注册自己的信息,就跟人员登记一样,节点管理器需要知道你这个节点的地址等信息,为什么需要知道呢,因为ROS的节点在实际机器人设计中,可能都存在于一个计算机之中,也可能分布于不同的计算机,因此需要地址等信息来对节点进行确定;
**第二步:**节点管理器在确定需要通信的两个节点之后就会对两个节点的信息进行匹配;
**第三步:**接收者(listener)向发布者(talker)发送自己的TCP通讯协议以及连接请求;
**第四步:**发布者(talker)确定连接请求,然后将自己的TCP地址发送给接收者(listener);
**第五步:**两个节点正式建立连接,并以TCP协议进行数据传输。

4.服务通讯:服务通信的方式和话题通信的方式大同小异,也是节点管理器管理节点,然后采取相应的通信协议进行信息的通信,具体步骤此处也不再赘述。

3.2.2文件系统层:描述程序文件是如何组织和构建的

一个功能包分为多个部分,如下:
(1)功能包清单(package manifest):这个的作用主要是记录功能包信息,包括各个功能包的信息以及发行者,还有功能包之间的依赖关系,编译的相关信息等。其实类比节点,节点管理器之于节点就好像功能包清单之于功能包,都是管理者的角色。
(2)消息类型:这个其实就是描述ROS采用话题通信的时候的消息的类型的文件,通过这个文件可以了解这个功能包的相关通信接口;
(3)服务类型:这个跟(2)类似,描述服务通信的时候的服务类型的文件,通过这个文件可以了解这个功能包的相关通信接口;
(4)代码:一个个的节点是通过相应的编程语言进行编写的,其代码称作源代码,存放于特定文件夹之中。

至于元功能包,其实可以理解为小功能包组成的大功能包,为了实现一个更大的功能。

3.2.3开源社区层:ROS的开源可以让很多人共享资源,这个共享资源的平台也就可以称之为ROS的开源社区

4.总结:

下面我们来总结一下ROS的整体结构,从小到大,最小的肯定是节点,最大的就是开源社区了,节点跟细胞一样,开源社区就有如我们生活的生态系统。下面这幅图就是从小到大描述的ROS的结构层次。

从这幅图可以很清楚的看到ROS的层次性构造,最小的就是节点,节点之间主要通过话题和服务这两种方式通讯,多个节点之间连接器起来可以完成一定的功能,形成一个具有一定功能的功能包,多个具有相似功能或任务的功能包又组成一个大的元功能包,同理,多个元功能包又可以形成一个软件仓库,一个软件往往可以完成多个功能,一个ROS开源社区内部又存在多个软件仓库。

希望通过本片文章的阅读,您会对ROS有所了解,对ROS更加清晰。

ROS-introduction相关推荐

  1. ROS入门跟着我就够了(一)ROS概述与环境搭建

    写在最前面的话: 这是第一次在CSDN写博客,也算是正式踏入这个圈子 准备两三天一更,把学习经历完整记录下来 希望最后回看过来能收获很多 查了很多资料,入门ROS比较好的免费资源是古月居的讲授以及赵虚 ...

  2. ROS 相关学习资源汇总

    文章目录 Part I:学习资源汇总 0. ROS配置 1. 课程 2. 书籍/教程 3. 相关基础 4. 开源项目 4.1 ROS 无人车 4.2 ROS自动驾驶 Part II:学习笔记 ROS- ...

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

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

  4. GAAS 无人机自动驾驶学习(01-使用机载电脑,通过OFFBOARD模式进行控制飞行)

    原文网址:https://gaas.gitbook.io/guide/wu-ren-ji-zi-dong-jia-shi-xi-lie-offboard-kong-zhi-yi-ji-gazebo-f ...

  5. Get started with ros -- 1

    原创博文:转载请标明出处(周学伟):http://www.cnblogs.com/zxouxuewei/tag/ 一.Introduction: 机器人操作系统(ROS)是使机器人系统的不同部分能够发 ...

  6. ROS推荐链接:UNIX/LINUX专为初学者的教程和命令 http://www.ee.surrey.ac.uk/Teaching/Unix/

    ROS推荐链接:UNIX/LINUX专为初学者的教程: http://www.ee.surrey.ac.uk/Teaching/Unix/ UNIX Tutorial for Beginners A ...

  7. ROSCon 2016视频和幻灯片发布 ROS机器人操作系统重要参考资料

    ROSCon 2016视频和幻灯片发布 By Tully Foote on 十月19,2016 7:28 AM 全部PPT下载地址:http://pan.baidu.com/s/1gf2sn2F RO ...

  8. ROS暑期学校与ROSCon 2018

    简洁版通知: 2018机器人操作系统(ROS)暑期学校 费用:免费 时间:2018年7月21日至28日 地点:广东省深圳市丽水路2279号/清华大学深圳研究生院 暑期学校官网: http://www. ...

  9. 【ROS入门教程】---- 01 ROS介绍

    ROS,机器人系统的不二选择 文章目录 ROS,机器人系统的不二选择 ROS是什么 ROS的强大之处 ROS的学习方法 总结 ROS是什么 作为新世纪的孩子们,可能从出生以来,我们就伴随着机器人的飞速 ...

  10. 机器人操作系统 ROS 相关书籍整理合集 [古月居推荐]

    ROS 相关的一波 PDF 及链接 观看了深蓝的 ROS公开课,主讲老师(古月居)推荐了10本ROS学习的教材,大部分都可以在CSDN上下载到,之前网友下载我分享的资源也存了一些积分,利用这些积分我下 ...

最新文章

  1. SpringBoot实现通用的接口参数校验
  2. DOS批处理高级教程精选(七)
  3. 利用ASP.NET2.0向导控件一步步建立与用户的交互--------提高和自定义用户体验
  4. 使用BaseAdapter实现复杂的ListView
  5. 【Transformer】SMCA: Fast Convergence of DETR with Spatially Modulated Co-Attention
  6. Eclipse3.6.2 64位启动报“Failed to load the JNI shared library”错的解决方法
  7. apache kafka_Apache Kafka简介
  8. 第二十二期:动画讲解TCP,再不懂请来打我
  9. 使用jenkins构建并发送邮件
  10. 美团刚做起网约车,滴滴就送外卖?你们倒真是相爱相杀
  11. 我眼中的未来计算机作文1000字,我的未来作文1000字
  12. linux创建桥接接口,Linux创建桥接网络
  13. 刘彬20000词汇10
  14. IDEA常用的代码模板使用
  15. Python标准库之正则表达式(re库)
  16. 分享125个ASP源码,总有一款适合您
  17. c语言高精度算法(加法)
  18. 图灵生日会——纪念阿兰图灵诞辰100周年及图灵公司七周年线下交流会
  19. 微信直播怎么弄?知识干货都在这里了
  20. 基于SpringBoot的实习管理系统

热门文章

  1. Adobe CC 全系列官网下载地址
  2. 对于【Training set】【gallery set 】【probe set】区别-个人总结
  3. 【超融合】超融合产品怎么选?
  4. html5英文参考文献,外文参考文献引用常识介绍
  5. 以前的的华为手机可不可以用鸿蒙系统_现在买华为手机以后可以换成鸿蒙系统吗?...
  6. DBlink 入门案例
  7. 手机通讯录联系人怎么恢复 快速恢复的方法
  8. HTML5期末大作业:网站——卡通漫画游戏官方网页 (萌王) 13个页面 HTML+CSS+JavaScript ~ 学生HTML个人网页作业作品下载 ~ web课程设计网页规划与设计
  9. ac9260网卡linux,#Linux# 在OpenSUSE下安装9260AC驱动
  10. .net core 不能更新数据