当前位置:首页 » 《随便一记》 » 正文

ROS简介(新手入门须知)

28 人参与  2022年11月29日 09:37  分类 : 《随便一记》  评论

点击全文阅读


一、背景

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

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

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

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

究机器人的,目前也在从事人工智能的研发,ROS诞生于这样的贵族,可见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


点击全文阅读


本文链接:http://zhangshiyu.com/post/49239.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1