ROS简介(新手入门须知)
一、背景
随着机器人领域的快速发展和复杂化,代码的复用性和模块化的需求原来越强烈,而已有的开源机
器人系统又不能很好的适应需求。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简介(新手入门须知)相关推荐
- PCB设计新手入门须知
说明: 本文是翻译自http://alternatezone.com/electronics/pcbdesign.htm 网站的PCB Design Tutorial,并加以整理,主要内容是关于PCB ...
- ROS入门笔记(一): ROS简介
ROS入门笔记(一): ROS简介 文章目录 1 ROS是什么? 2 ROS历史发展 2.1 ROS参考资料 2.2 ROS历史演变 2.3 ROS的官方解释(重点) 3 ROS设计目标 4 ROS特 ...
- 机器人操作系统入门(一)ROS简介
参考资料: https://www.icourse163.org/course/ISCAS-1002580008?tid=1003713012 //中国大学MOOC https://www.bilib ...
- 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下载 ...
- zbrush常用笔刷_【建模】新手入门必学,ZBrush中常用笔刷简介!
原标题:[建模]新手入门必学,ZBrush中常用笔刷简介! 单击左托盘的笔刷图标,弹出一个笔刷库,其中有许多常用笔刷,这也是许多初学者所头疼的问题,zbrush的笔刷非常多,而且功能很强大,好多朋友不 ...
- 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 常见问 ...
- ps4怎么用html,ps4新手入门怎么用 ps4新手入门教程简介-游侠网
ps4新手入门怎么用?ps4是性能强大的游戏主机,玩家可以在ps4上玩到很多制作精良的游戏.新手刚买到PS4的时候可能会有很多疑问,下面就来介绍一些基础使用方法. 连接方法 按下机器上的开关开启机器后 ...
- latex安装包_LaTeX排版入门须知
LaTeX排版入门须知 声明 一般而言,TeX和LaTeX有着区别,但是考虑到热门程度,于是使用LaTeX代指相关的所有排版系统,只有在一些情况下会采取不同的称呼.所以这并不是严谨性不够的做法. 简介 ...
- github 删除分支_Github新手入门指南
这篇文章是我入门Github时期记录的笔记,当时主要是参考GitHub入门与实践 (豆瓣)一书,文中有部分内容也来源于此. 个人感觉比较适合新手入门的,感兴趣的朋友可以自行阅读. 前面的简介和Gith ...
最新文章
- pandas.read_csv() 报错 OSError: Initializing from file failed
- 咋样回复计算机桌面删除的东西,被删除的文件怎么恢复 四个妙招巧解决【图解】...
- MavenMybatis可能会遇到的问题
- HttpServletRequest看这篇文章就够了
- C/C++数组指针和指针数组
- 如何向妻子解释OOD(转)
- python3seek_Python seek()和tell()函数详解
- Linux进程全解12——lIPC机制之管道,SystemV IPC介绍
- vb子程序未定义怎么改怎么办_vb中子程序或者函数未定义!求教解决方案,
- 实战:SpringMVC实现用户角色管理
- loading怎么关闭 vant_Vant Loading 加载
- 第一章 FPGA数字信号处理_数字混频(NCO与DDS)
- 使用 ngrok(小米球)实现内网穿透映像到外网访问项目
- INNO setup 制作安装包
- 苏州大学计算机考研大纲2021,2021苏州大学考研参考书目
- 快消品B2B平台的仓储物流模式
- 运行patsy 时报错 assert pytype not in (tokenize.NL, tokenize.NEWLINE)
- 东京大学招生海报上的那些事(下)
- at89s51单片机是几位微型计算机,AT89S51单片机的硬件组成
- java ror_Java、RoR、PHP,一个都不能少 - 第2页