ROS:机器人软件平台(一)
发布日期:2021-06-29 11:35:22 浏览次数:2 分类:技术文章

本文共 2466 字,大约阅读时间需要 8 分钟。

ROS:机器人软件平台(一)

导论

ROS简介
“ROS是一个开放源代码的机器人元操作系统。它提供了我们对操作系统期望的服务,包括硬件抽象、低级设备控制、常用功能的实现、进程之间的消息传递以及功能包管理。它还提供了用于在多台计算机之间获取、构建、编写和运行代码的工具和库。”
换句话说,ROS包括一个类似于操作系统的硬件抽象,但它不是一个传统的操作系统,它具有可用于异构硬件的特性。此外,它是一个机器人软件平台,提供了专门为机器人开发应用程序的各种开发环境。

我们为什么要学习ROS这个新的概念?这是在线下的ROS研讨会中经常听到的用户们的提问。片面来讲是为了缩短开发时间。我们常说为了学习新的概念所花费的时间太可惜了,因为要修改已经建立好的系统和现有的程序,所以想维持现有的方式。但ROS不需要完全重新开发已有的系统和程序,而是通过加入一些标准化的代码就能对已有的非ROS程序进行ROS化的转化。并且很多通用的工具和软件都有提供,因此可以专注于自己感兴趣或想贡献的部分,这反而可以节省开发和维护所需的时间。让我们来了解一下这种方式的五种特点吧。

第一, 程序的可重用性。 专注于自己想要开发的部分,对剩下的功能可以下载相关功能包来使用。相反,也可以将自己开发出来的程序和其他人分享,让他们也可以使用。比如,美国的NASA为了控制宇宙空间站里使用的Robonaout29机器人,除了使用自行开发的程序,还结合了可以在多种操作系统使用的ROS和具有实时控制、消息通信修复、可靠性等特点的OROCOS,得以在宇宙中执行任务。前面介绍的Robotbase公司的例子也是充分发挥可重用性的案例。

第二, 是基于通信的程序。 为了提供一种服务,很多时候在同一个框架里编写很多程序:从传感器或舵机的硬件驱动到传感、识别和动作等所有种类的程序。但为了重用机器人软件,根据每个处理器的用途将其分成更小的部分。根据平台的不同,我们将此称为组件化或节点化。必须由划分为最小执行单元的节点之间发送和接收数据,而平台具有关于该数据通信的所有一般信息。而且,这与最小的单位进程连接到网络的物联网(IoT)的概念一致,因此可以用作物联网平台。并且,被划分成最小执行单元的程序可以进行小单元的调试,这非常有助于找出错误。

第三, 提供开发工具。ROS提供调试相关的工具-2维绘图和3维视觉化工具RViz,所以无需亲手准备机器人开发所需的开发工具,可以直接拿来使用。例如,在机器人开发中,可视化机器人的模型的情况比较多,通过遵守规定的信息格式,可以直接确认机器人的模型,并且还提供3D仿真器,因此易于扩展到仿真实验。另外,最近比较受人关注的点云(point cloud)形式也可以从英特尔RealSense或微软的Kinect获得的3D距离信息转化过来。此外,实验中使用的数据可以被记录下来,因此需要的时候随时都可以重现实验当时的情况。像这样,ROS的一个重要特点是通过为机器人开发提供必要的软件工具,使开发的便利性达到最大化。

第四, 活跃的开发者社区。至今比较封闭的机器人学界和机器人业界都因为前述的功能而走向重视互相之间的合作的方向。其目的可能各自相异,但实际的合作正在通过这种软件平台发生着。其核心是开源软件平台的社区。例如,以ROS为例,到2017年自愿开发和共享的功能包数量超过了5,000个,而解释如何使用它的wiki页面超过1.7万个,这些都由用户个别参与。 而在社区中非常重要的问题和答案已有超过24,000个,用户们通过这些建立着互惠互利的开发者社区。讨论超越了单纯的对于用法的议题,人们在寻找机器人工程软件的必要因素,并摸索出规则。

第五, 生态系统的形成。前面提到的智能手机平台革命是由Android和iOS等软件平台创造的生态系统造成的。这一趋势在机器人领域延续着。起初,各种硬件技术泛滥,却没有能整合它们的操作系统。在这种情况下,如上所述,各种软件平台已经出现,最受瞩目的ROS现在已经开始构建生态系统。这个正在形成的生态系统里,机器人硬件领域的开发者、ROS开发运营团队、应用软件开发者以及用户也能像机器人公司和传感器公司一样从中受益。起步虽然微不足道,但考虑到逐渐增多的用户数量和机器人公司,以及急剧增加的相关工具和库,我期待在不久的将来将会形成一个圆满的生态系统。

ROS是Robot Operating System的缩写,因此会认为是一种操作系统。尤其是那些对ROS不熟悉的人会认为ROS和上面提到的操作系统一样。当我第一次遇到它时,我也认为ROS是一个新的机器人操作系统。

然而更确切地说,ROS是一个元操作系统(Meta-Operating System)。元操作系统不是一个明确定义的术语,而是一个利用应用程序和分布式计算资源之间的虚拟化层来运用分布式计算资源来执行调度、加载、监视、错误处理等任务的系统。

ROS不是传统的操作系统,如Windows、Linux和Android,反而是在利用现有的操作系统。使用ROS前需要先安装诸如Ubuntu的Linux发行版操作系统,之后再安装ROS,以使用进程管理系统、文件系统、用户界面、程序实用程序(编译器、线程模型等)。此外,它还以库的形式提供了机器人应用程序所需的多数不同类型的硬件之间的数据传输/接收、调度和错误处理等功能。这个概念也被称为中间件(Middleware)或软件框架(Software framework)。

ROS开发、管理和提供基于元操作系统的各种用途的应用功能包,并拥有一个负责分享用户所开发的功能包的生态系统(Ecosystem)。如图2-1所示。ROS是在使用现有的传统操作系统的同时,通过使用硬件抽象概念来控制机器人应用程序所必需的机器人和传感器,同时也是开发用户的机器人应用程序的支持系统。

在这里插入图片描述

ROS数据通信可以在一个操作系统中进行,但也适用于使用多种硬件的机器人开发,因为可以在不同的操作系统、硬件和程序之间交换数据。

ROS具有以下特征:

在这里插入图片描述

转载地址:https://blog.csdn.net/zytgg123456/article/details/110846751 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C++篇:基础入门(三)
下一篇:C++篇:基础入门(二)

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月26日 01时05分37秒