资源行业动态ROS(机器人操作系统)入门必读

ROS(机器人操作系统)入门必读

2019-12-20 | |  133 |   0

原标题:ROS(机器人操作系统)入门必读

来源:AI 研习社         链接:https://www.yanxishe.com/TextTranslation/1817


如果您是机器人专业的学生、研究人员、业余爱好者或工程师,想要开发从简单的仿真到成熟的自主车队的应用程序,这篇文章就是为你准备的。在这篇文章中,我将介绍ROS(机器人操作系统)、为什么应该使用它、它可以为您的应用程序做什么、以及如何继续学习这个主题。


大约5年前,当我开始学习机器人技术时,我遇到了ROS。我在网上到处搜索,试图了解它是什么,我可以在哪里使用它,为什么我应该学习它。在我试图理解这项技术的过程中,我偶然发现了更多的术语——中间件、硬件抽象、消息传递等等。当时我无法理解这些术语,但还是安装了ROS。作为一个缺乏Linux系统经验的开发人员,我尝试过,但最终放弃了。我坚持使用我所掌握的MATLAB。


如果您和我之前一样是开发领域的新手,我希望您充分利用本系列文章帮助您开始开发机器人应用程序。在我们开始之前,先介绍下10年前ROS的样子:

01.png


首先,为什么我需要ROS?


让我们从一个例子开始。出于某种原因,您决定构建一个自主移动机器人。已知你可以从任何你喜欢的供应商得到可靠而经济的电机。你甚至成功地启动了Arduino来控制你的电机。接下来,你有一个2D激光雷达定位和一些检测障碍物的传感器,以防止撞到人。最后,把它们都放在树莓派上。如果没有ROS,你会这样做:

1、实现与Arduino的串行通信,传递反馈和电机命令。

2、使用激光雷达API接收激光数据。

3、读取超声波传感器获取障碍物信息。

4、为了确保一个I/O失效不会导致整个应用程序崩溃,您肯定希望所有这些进程都单独运行。

5、由于进程是单独运行的,所以必须编写某种进程间通信模块(但我不是OS工程师!!)


所有这些,只是为了能够使用这些数据!最重要的是,您必须弄清楚定位算法使用什么数据类型作为输入、诊断工具等等。此外,您的进程可能会非常混杂,以至于更改一个传感器信号源可能会在您的代码库中造成大范围的混乱。最后,任何人想要使用你的运动规划代码,都必须使用完全相同的传感器、电机和控制器来运行代码。不用说,随着组件数量的增加和增加更复杂的应用程序,情况只会变得更糟。幸运的是,这就是ROS的作用。


那么,ROS能为我的机器人做什么呢?


让我们继续一开始的例子。

1576809772641020.png

查看这些组件是如何相互连接的,其操作是否常常依赖于彼此?ROS提供了传输层来促进这种通信。它允许使用标准数据类型(称为ROS消息)传递数据。在图中,它们用方括号表示,如果您不清楚它们的具体含义,也不要担心。只要掌握基本概念,即它本质上类似于c++编程时代的“int”、“string”或“float”。实际上,一些硬件制造商为其组件提供了ROS驱动程序,使用户可以轻松地使用它们构建应用程序。它帮助供应商为全球开发人员开放了产品的一系列应用程序;它帮助机器人专家,使得他们不必为购买的每个传感器编写自定义通信代码。从而实现了双赢!


现在让我们回顾一下曾经让我恐惧的词语:


1、中间件:ROS本身并不编写任何算法或应用程序,它只是位于操作系统(Ubuntu、Windows等)之上,并促进来自各种驱动程序和进程的通信。情况是这样的,到目前为止,可能有一个隐含的假设,即我们所有的应用程序都运行在同一台计算机上。其实并不一定,这些进程也可以分布在网络上,工作原理完全相同,没有任何变化。


2、硬件抽象:我们创建的标准消息类型,这就是所有流程需要的输入。如果您决定更改激光雷达或电机控制器,这完全没问题,您的应用程序不依赖于特定的硬件选择。ROS提供了在循环之外抽象这种依赖关系的方法。


整洁,简而言之,这就是ROS的理念。ROS中的开发还提供了其他一些优势,比如用于应用程序的集成库、易于协作、大型的支持和开发社区,以及几个“开箱即用”包,可以在短时间内安装机器人。


我如何使用ROS开始开发呢?


要做的第一件事是让你的手忙起来,同时安装ROS。网址(www.ros.org)是ROS的主页,你可以定期在这个网址上查看有什么更新的地方,只需要读一下就可以。按照(https://www.ros.org/install/)的说明安装ROS。如果你使用 Ubuntu 16.0X 版本,你需要使用ROS Kinetic,Ubuntu 18.0X使用ROS Melodic. 如果你比较熟悉Docker,你依旧可以使用她开始你的ROS之旅。


安装完成以后,你需要设置你的环境和工作空间。完成后,你会得到一个catkin_ws命名的文件夹。如果你还不了解什么是工作空间,下一章节我们会进行介绍ROS的核心内容,包括:功能包,节点,主题,发布者,订阅者,服务等。


非常感谢你阅读这些内容,如果有什么东西太难理解或者需要更多的解释,请在评论中告诉我。如果你想让我在将来讨论一些话题,请随时提出你的建议。除了这篇文章的后续部分,我还有更多关于机器人(以及其他)的主题,请关注我的更新。 

----------------------------------------------

发起:唐里 校对:敬爱的勇哥 审核:唐里

参与翻译(2人):hier17、QQ我我

英文原文:ROS: Why What and How.

THE END

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:16 年 Uber 自驾车撞死行人事件调查报告披露

下一篇:深度强化学习从入门到大师:进一步了解深度Q学习(第三部分*续)

用户评价
全部评价

热门资源

  • 国内人才报告:机...

    近日,BOSS 直聘职业科学实验室 &BOSS 直聘研究院...

  • AI使物联网更智能...

    看到微软对物联网和人工智能的结合感兴趣是一个明...

  • 推荐一批学习自然...

    这里推荐一批学习自然语言处理相关的书籍,当然,...

  • 安防智能化大势下...

    大部分传统安防设备不仅拍摄视野有限,而且无法事...

  • 20亿创业基金、10...

    近日,杭州举办了建设国家新一代人工智能创新发展...