首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROS: Why、What and How

ROS: Why、What and How

作者头像
McGL
发布2020-11-10 10:59:01
6870
发布2020-11-10 10:59:01
举报
文章被收录于专栏:PyVisionPyVision

作者:Gaurav Gupta 编译:McGL

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

大约5年前,当我开始学习机器人技术时,我遇到了 ROS。我到处浏览网页,试图了解它是什么,我可以在哪里使用它以及为什么我要学习它。在我试图理解这项技术的过程中,我偶然发现了更多的术语 —— 中间件、硬件抽象层、消息传递等等。我不是很理解这些概念,但依然继续安装 ROS。作为一个没有经验的 Linux 系统开发者,我挣扎了很久,最终放弃了。我还是坚持搞我熟悉的,MATLAB。

如果你像我曾经一样,是开发领域的新手,我希望你能充分利用这一系列文章来帮助你开始开发机器人应用程序。在我们开始之前,我们先来看看 ROS 的10年是什么样的:

首先,为什么我需要 ROS?

让我们从一个例子开始。出于某种原因,你决定建造一个自主移动机器人(autonomous mobile robot)。你已经意识到,你可以从任何你喜爱的供应商获得可靠而经济的电机。你甚至设法让一个 Arduino 启动并运行来控制你的电机。然后,你有一个 2D 激光雷达来定位,以及一些障碍传感器,以防止撞上陌生人。最后,你只需要把它们放在一个 Raspberry Pi 上。如果没有 ROS,你将会这样做:

  1. 编写与 Arduino 交换反馈和电机命令的串行通信。
  2. 利用激光雷达 API 接收激光数据。
  3. 读取超声波传感器以获取障碍物信息。
  4. 为了确保一个 I/O 的失败不会导致整个应用程序崩溃,你肯定希望所有这些进程分别运行。
  5. 因为你的进程是单独运行的,所以你必须编写某种类型的进程间通讯模块(但我不是操作系统工程师! ! !)

所有这一切,只是为了能够使用这些数据!除此之外,你还必须弄清楚定位算法使用哪种数据类型作为输入,还有诊断工具等等。此外,你的进程可能会很混杂,以至于更改一个传感器源可能会在整个代码库中造成广泛的混乱。最后,任何想要复制你牛逼的运动规划代码的人都必须使用完全相同的传感器、电机和控制器才能运行代码。不用说,随着组件数量的增加以及你写的应用程序越来越复杂,情况只会变得更糟。幸运的是,这就是 ROS 发挥作用的地方。

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

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

可以看到几个组件是如何相互连接的,通常操作是相互依赖的?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 之旅。

安装之后,你需要设置你的环境和工作空间(workspace)。在这个过程的最后,你的文件系统中应该有一个名为 catkin_ws 的目录。如果你不知道什么是工作空间,不要担心,我将在下一篇文章中介绍它,以及其他关键概念,如包、节点、主题、发布者、订阅者、服务等等。敬请期待!

来源:https://medium.com/black-coffee-robotics/ros-why-what-and-how-97ec60b2905f

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PyVision 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先,为什么我需要 ROS?
  • 那么,ROS 能为我的机器人做些什么呢?
  • 我该如何开始使用 ROS 进行开发?
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档