一、背景

随着机器人领域的快速发展和复杂化,代码的复用性和模块化的需求原来越强烈,而已有的开源机

器人系统又不能很好的适应需求。2010年Willow Garage公司发布了开源机器人操作系统ROS

(robot operating system),很快在机器人研究领域展开了学习和使用ROS的热潮。

从下面这张图片来看,ROS是2007年诞生与斯坦福大学,斯坦福大学,世界名校,而且是专业研

究机器人的,目前也在从事人工智能的研发,ROS诞生于这样的贵族,可见ROS的发展还是非常

有前途的。

二、需求(为什么需要ROS)

想设计制造一个复杂的机器人,这个机器人能够类似于人一样能够感知,自我导航,能够自我控制

去做一些复杂的工作。面对这么复杂的工作,在研发过程中肯定需要很多各样的有效资源的共享,

但是目前很多资源要么难以共享,要么共享的资源之间不能直接拿过来用,所以,急需这样一个能

够整合资源的框架和接口,使得资源之间能够共享使用,换个专业点的话说,就是使得各种功能、

各种软件的重复利用率增加。因此为了 满足这一功能和作用,我们研发了ROS(robotics

operating system)机器人操作系统,虽然表面上叫做操作系统,但是并不是真正的操作系统,说

白了,就是一个框架,一个平台。

二、ROS横向介绍

ROS是一个适用于机器人的开源的元操作系统。集成了大量的工具,库,协议,提供类似OS所提

供的功能,简化对机器人的控制。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,

进程间消息传递,以及包管理。

ROS的总体目标,也就是提高软件复用率,(下面我们主要介绍它的五个特点和四位一体。)

五个特点

(1)点对点设计

(看到这个标题,如果不了解计算机通讯,是看不懂的),其实这个就是说的就是ROS的一个核

心,也就是节点,节点这个东西为什么是核心呢,节点就是功能,节点就是计算机术语中常说的进

程 一个机器人有多个功能,因此也就有了多个节点,因此,如果一个机器人的各个功能被分开,

也就是一个个的节点,那ROS进行软件的复用就会方便的多

分布式的框架,解耦

在机器人上可能集成各种传感器(雷达、摄像头、GPS...)以及运动控制实现,为了解耦合,在

ROS中每一个功能点都是一个单独的进程,每一个进程都是独立运行的。 这些进程可以分布于不

同主机,不同主机协同工作,从而分散计算压力。所以,ROS是进程(也称为Nodes)的分布式框

(2)多语言支持

ROS是有多个节点的,节点之间可能会有联系,但是联系又没有那么紧密,每个

节点都是一个功能,它们可以分别使用不同的编程语言进行编程,如C++、Python、Java等编程语

言,无论采用哪种编程语言进行编程,最后节点之间进行信息交互的时候都可以通过与语言无关的

一个接口进行连接。

(3)架构精简,集成度高

(看起来结构比较简单,操作不难,而且功能集成丰富)

(4)组件化工具包丰富

这个字面理解就是说ROS有很多功能强大的工具,比如仿真界面工具

rviz,仿真环境gazebo,rqt_plot图形化显示工具等

(5)免费且开源

四位一体

对ROS进行总结便形成了ROS四位一体的格局,首先是ROS的通讯机制(话题,服务),这个大家

都知道了,点对点通讯。其次是ROS具备很多开发工具,比如rviz,gazebo等。接着,ROS的功

能也非常多,在ROS中是以一个叫做功能包的形式存在的(此处的功能和节点不能混为一谈,大

家可以理解为一个大功能,而节点可以理解为一个个小功能),其应用功能设计视觉导航、运动规

划多个方面。最后,ROS也不是一个单独的软件,它所存在的环境有各大牛人,各大公司,全世

界都在使用它,相当于一个活跃的生态系统。

四、ROS纵向介绍

ROS的纵向介绍主要从小到大,从深到浅进行介绍,整个ROS系统分为以下三个层次,如图

计算图层

这个层次最深,主要是描述程序是如何运行的,也就是ROS当中很细节的层次,

(1)节点

这个前面已经介绍过,就是指功能,或者说是进程,也可以当做一个个软件模块,不再赘述。

(2)节点管理器

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

管理器就是基站,总站。

(3)话题

(这个就比较重要了,涉及到ROS的通讯,前面说过,ROS的通讯机制是点对点通讯,也就是一

个节点之间的通讯)ROS节点之间的主要通讯方式是两种,这个话题通讯就是一种,另外一种是

接下来会介绍到的第(4)点中的服务通讯,话题通讯和服务通讯是主要的通讯方式

首先介绍ROS的话题通讯,其两端为发布方何订阅方

ROS的话题通讯信息流图如下:

简单的说就是发布方和订阅方现在RosMaster注册,然后RosMaster会帮它们进行匹配,连接,然后双方采取相应的通信协议进行信息的通信

(4)服务

话题通信的信息流只能是由发布者流向接收者,而且节点之间的通信是有延迟的,并不同步,针对这两个缺陷,这个小点介绍的服务通信则满足了双向同步的通信,这种通信只允许有一个服务器,客户端可以有多个,服务器和客户端之间双向同步通信,采取请求和应答的模式进行通信

ROS的服务通讯信息流图如下:

服务通信的模式与话题通信相差不大,就不过多赘述了。

(确实还有一种action通信,属于问答机制,维持一段时间且有及时的反馈并可以随时取消这个通信)

(5)参数服务器

参数服务器能够使数据通过密钥存储在一个系统的核心位置。

(6)消息

消息包含一个节点发送到其他节点的信息数据。

(7)消息记录包

消息记录包是一种用于保存和回放ROS消息数据的文件格式。

文件系统层

ROS的文件的组织和排列是按照功能来进行的,不同功能的文件被放置在不同的文件夹下面,功

能包是ROS的文件系统层次下一个比较基本的单元,ROS的文件系统层次也是围绕它来展开:

(1)功能包清单(package manifest):

这个的作用主要是记录功能包信息,包括各个功能包的信息以及发行者,还有功能包之间的依赖关

系,编译的相关信息等。

(2)消息类型:

描述话题通信的消息的类型的文件

(3)服务类型:

描述服务通信的时候的服务类型的文件

(4)代码:

一个个的节点是通过相应的编程语言进行编写的,存放于特定文件夹之中。至于元功能包,其实可

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

开源社区层

发行版:一系列带有版本号可以直接安装的软件包

软件源:ROS依赖于共享网络上的开源代码,不同组织机构可以开发活或共享自己的机器人软件

ROSwiki:主要论坛

邮件列表:交流ros更新的主要渠道,同时也可以交流ros开发的疑问

ros answers:咨询ros问题的网站

博客

ROS的整体结构

参考链接:

https://blog.csdn.net/qq_25267657/article/details/84316111

http://www.autolabor.com.cn/book/ROSTutorials/

https://blog.csdn.net/hcx25909/article/details/8795043

ROS简介(新手入门须知)相关推荐

  1. PCB设计新手入门须知

    说明: 本文是翻译自http://alternatezone.com/electronics/pcbdesign.htm 网站的PCB Design Tutorial,并加以整理,主要内容是关于PCB ...

  2. ROS入门笔记(一): ROS简介

    ROS入门笔记(一): ROS简介 文章目录 1 ROS是什么? 2 ROS历史发展 2.1 ROS参考资料 2.2 ROS历史演变 2.3 ROS的官方解释(重点) 3 ROS设计目标 4 ROS特 ...

  3. 机器人操作系统入门(一)ROS简介

    参考资料: https://www.icourse163.org/course/ISCAS-1002580008?tid=1003713012 //中国大学MOOC https://www.bilib ...

  4. ROS入门与实践--1(ROS简介与ROS的安装)

    ROS入门与实践--1 1 ROS简介 1.1 什么是ROS? 1.2 ROS设计目标 1.3 ROS发行版本列表 2 ROS的安装 2.1 虚拟机及操作系统安装 2.1.1 虚拟机VMware下载 ...

  5. zbrush常用笔刷_【建模】新手入门必学,ZBrush中常用笔刷简介!

    原标题:[建模]新手入门必学,ZBrush中常用笔刷简介! 单击左托盘的笔刷图标,弹出一个笔刷库,其中有许多常用笔刷,这也是许多初学者所头疼的问题,zbrush的笔刷非常多,而且功能很强大,好多朋友不 ...

  6. ROS从入门到精通0-2:ROS简介、安装与常见问题

    目录 0 专栏介绍 1 ROS简介 1.1 什么是ROS? 1.2 为什么使用ROS? 2 ROS发展历程 3 ROS安装 3.1 基本安装 3.2 初始化rosdep 3.3 测试ROS 4 常见问 ...

  7. ps4怎么用html,ps4新手入门怎么用 ps4新手入门教程简介-游侠网

    ps4新手入门怎么用?ps4是性能强大的游戏主机,玩家可以在ps4上玩到很多制作精良的游戏.新手刚买到PS4的时候可能会有很多疑问,下面就来介绍一些基础使用方法. 连接方法 按下机器上的开关开启机器后 ...

  8. latex安装包_LaTeX排版入门须知

    LaTeX排版入门须知 声明 一般而言,TeX和LaTeX有着区别,但是考虑到热门程度,于是使用LaTeX代指相关的所有排版系统,只有在一些情况下会采取不同的称呼.所以这并不是严谨性不够的做法. 简介 ...

  9. github 删除分支_Github新手入门指南

    这篇文章是我入门Github时期记录的笔记,当时主要是参考GitHub入门与实践 (豆瓣)一书,文中有部分内容也来源于此. 个人感觉比较适合新手入门的,感兴趣的朋友可以自行阅读. 前面的简介和Gith ...

最新文章

  1. pandas.read_csv() 报错 OSError: Initializing from file failed
  2. 咋样回复计算机桌面删除的东西,被删除的文件怎么恢复 四个妙招巧解决【图解】...
  3. MavenMybatis可能会遇到的问题
  4. HttpServletRequest看这篇文章就够了
  5. C/C++数组指针和指针数组
  6. 如何向妻子解释OOD(转)
  7. python3seek_Python seek()和tell()函数详解
  8. Linux进程全解12——lIPC机制之管道,SystemV IPC介绍
  9. vb子程序未定义怎么改怎么办_vb中子程序或者函数未定义!求教解决方案,
  10. 实战:SpringMVC实现用户角色管理
  11. loading怎么关闭 vant_Vant Loading 加载
  12. 第一章 FPGA数字信号处理_数字混频(NCO与DDS)
  13. 使用 ngrok(小米球)实现内网穿透映像到外网访问项目
  14. INNO setup 制作安装包
  15. 苏州大学计算机考研大纲2021,2021苏州大学考研参考书目
  16. 快消品B2B平台的仓储物流模式
  17. 运行patsy 时报错 assert pytype not in (tokenize.NL, tokenize.NEWLINE)
  18. 东京大学招生海报上的那些事(下)
  19. at89s51单片机是几位微型计算机,AT89S51单片机的硬件组成
  20. java ror_Java、RoR、PHP,一个都不能少 - 第2页

热门文章

  1. java 程序题 二分法查找二维数组(Dichotomy)
  2. 装多系统的U盘启动盘的制作
  3. ubuntu使用deepin-wine安装微信出现版本过低问题的解决
  4. Android 查询设备信息c/c++常用方法
  5. 高压加工食品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. 小武学fpgastep3
  7. VSCode_快捷键
  8. 计网:网络层协议ICMP
  9. 重磅丨中国信通院发布ICT深度观察十大趋势
  10. css画扇形的几种实现方式