美文网首页
17.ROS简介

17.ROS简介

作者: Pokerpoke | 来源:发表于2018-03-29 19:49 被阅读0次

ROS简介

  • 个人理解,如有纰漏请指出。

什么是ROS

ROS是面向机器人的开源的元操作系统(meta-operating system)。它能够提供类似传统操作系统的诸多功能,如硬件抽象、底层设备控制、常用功能实现、进程间消息传递和程序包管理等。此外,它还提供相关工具和库,用于获取、编译、编辑代码以及在多个计算机之间运行程序完成分布式计算。

这是维基上的解释,让我们结合项目仔细分析一下。

假设我们要制作一个无人机,进行路径规划算法的验证,有一些传感器比如GPS,陀螺仪,气压计作为输入,上位机通过一些运算,计算出无人机行进的路线,然后将路线传给飞控,飞控对电机进行控制,最终实现无人机的路线规划。

如果整个框架都要自己来写,那我们需要了解各个传感器的通信方式,电机的控制,还需要将这些与顶层算法进行交互,这需要懂得东西就很多了,现在有了飞控,对底层的传感器已经做了一层抽象,将同一时刻的各个传感器的数据组成一个数据包以MAVLink协议的形式向上层传输。处理计算机需要做的就是读出这个以MAVLink协议的数据包,作为输入,进行一系列计算,输出目标点的经度、纬度、高度等信息,并交由飞控对飞机进行调整,飞往目标点。换句话说,我们需要一个中间件,来翻译MAVLink协议,这就有很多种选择了,为了开发方便,我们选用了ROS作为这一个翻译者,但ROS的作用远不止翻译的功能。

分布式计算

  • 一些机器人搭载多台计算机,每台计算机用于控制机器人的部分驱动器或传感器
  • 即使只有一台计算机,通常仍将程序划分为独立运行且相互协作的小的模块来完成复杂的控制任务,这也是常见的做法
  • 当多个机器人需要协同完成一个任务时,往往需要互相通信来支撑任务的完成
  • 用户通常通过台式机、笔记本或者移动设备发送指令控制机器人,这种人机交互接口可以认为是机器人软件的一部分

ROS1只是相对的分布式计算,对节点来说是分布式的,但Master层面上并不是分布式,还是需要主从节点的方式,ROS2在这个基础上进行了底层通信方式的改进,使用DDS(Data Distribution Service)数据分发服务进行真正意义上的分布式计算。

软件复用

ROS标准包(Standard Packages)提供稳定、可调式的各类重要机器人算法实现。

ROS通信接口正在成为机器人软件互操作的事实标准,也就是说绝大部分最新的硬件驱动和最前沿的算法实现都可以在ROS中找到。例如,在ROS的官方网页上有着大量的开源软件库,这些软件使用ROS通用接口,从而避免为了集成它们而重新开发新的接口程序。

快速测试

精心设计的ROS系统框架将底层硬件控制模块和顶层数据处理与决策模块分离,从而可以使用模拟器替代底层硬件模块,独立测试顶层部分,提高测试效率。

ROS另外提供了一种简单的方法可以在调试过程中记录传感器数据及其他类型的消息数据,并在试验后按时间戳回放。通过这种方式,每次运行机器人可以获得更多的测试机会。例如,可以记录传感器的数据,并通过多次回放测试不同的数据处理算法。在ROS术语中,这类记录的数据叫作包(bag),一个被称为rosbag的工具可以用于记录和回放包数据

软件结构

我们可以通过ROS的分布式计算来一窥其软件结构和设计思想。

节点

ROS用节点(Node)的概念表示一个应用程序,不同node之间通过事先定义好格式的话题(Topic),服务(Service),动作(Action)来实现连接。

话题

消息传递的理念是:当一个节点想要分享信息时,它就会发布(publish)消息到对应的一个或者多个话题;当一个节点想要接收信息时,它就会订阅(subscribe)它所需要的一个或者多个话题。ROS节点管理器负责确保发布节点和订阅节点能找到对方;而且消息是直接地从发布节点传递到订阅节点,中间并不经过节点管理器转交。

所有订阅该话题的节点都会收到该话题上的所有消息,不管你是否想要接收。

详细点讲:”生产”消息的程序只管发布消息,而不用关心该消息是如何被消费的; 消费消息的程序只管订阅该话题或者他所需要消息的所有话题,而不用关心这些消息数据是如何生产的。

这个特性十分重要,这就意味着我们在这种通信机制中是一对多或者多对一的机制,而在下一种通信机制中将是一对一的机制!

服务

服务调用是双向的,一个节点给另一个节点发送信息并等待响应,因此信息流是双向的。作为对比,当消息发布后,并没有响应的概念,甚至不能保证系统内有节点订阅了这些消息。

服务调用实现的是一对一通信。每一个服务由一个节点发起,对这个服务的响应返回同一个节点。另一方面,每一个消息都和一个话题相关,这个话题可能有很多的发布者和订阅者。

最后,总结一下

ROS的优点

首先是开源,带来的是完善的社区,遇到的大部分问题基本都能搜到,也带来了更多的扩展,MATLAB2015以后版本内建了ROS的支持,模块化使得其可以随意增删功能,使用了语言无关的消息类型,使其可以支持多种编程语言,C++,Python,JAVA等都支持,可以很方便的进行数据的绘制,也是PX飞控推荐使用的交互方式之一。

ROS的不足

  • 多个机器人组成的集群; ROS的单master结构就蛋疼了。
  • 小型嵌入式平台,甚至“裸奔”的微控制器;依赖于Ubuntu的ROS太重了。
  • 实时系统:包括进程间和跨机器通信,ROS做不到。
  • 非理想的网络;ROS延迟很大,甚至断网再连接时会挂。
  • 生产制造等环境:ROS可靠性还不够。

相关文章

  • 17.ROS简介

    ROS简介 个人理解,如有纰漏请指出。 什么是ROS ROS是面向机器人的开源的元操作系统(meta-operat...

  • 18旅游二班各组自我简介汇总

    一组简介 二组简介 三组简介 四组简介 五组简介 六组简介 七组简介 八组简介

  • 简介

    上辈子,洛幽喜欢了东凡一辈子,没有结果,之后她死了,她不后悔,只是为什么她一睁眼,嗯?捏了捏自己的脸,她这是回到了...

  • 简介

    1.主动地去阅读。 2.阅读目的:获得资讯,获得理解 前者为了增进资讯,获得信息,不能增加理解力。后者为了理解更多...

  • 简介

    姓名:赵金星 电话:13903984903 坐标:河南三门峡市陕州区。 三个标签的自我介绍: 1.时间管理践行者 ...

  • 简介

    朱凝不过打错个字,便被天打雷劈回古代。 为毛别人穿个废柴嫡女,她穿个废柴庶女?地位更低了哎 哇喔,别人嫁王爷,她嫁...

  • 简介

    凌波网络考试系统,是一套运行于Windows系统之上的无纸化网络考试软件。包括试卷编辑、分发试卷、学生答卷、自动阅...

  • 简介

    名字:笨小孩 不是富二代的笨小孩为了生活选择了编程。在大多数人眼里可能感觉编程是很无聊很辛苦经常加班的事情,其实人...

  • 简介

    A Native Client web application consists of JavaScript, H...

  • 简介

    选择django作为毕设项目,和日后工作内容。故在简单得做了一个blog和毕设系统之间,想深入了解django,会...

网友评论

      本文标题:17.ROS简介

      本文链接:https://www.haomeiwen.com/subject/exsvcftx.html