17.ROS简介

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可靠性还不够。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容