作者:Gaurav Gupta 编译:McGL
如果你是一个机器人(robotics)专业学生,研究人员,业余爱好者或者工程师,想要开发从简单的模拟到成熟的无人车队应用程序,这篇文章就是为你准备的。在这篇文章中,我将介绍 ROS/Robot Operating System (机器人操作系统) ,为什么(Why)你应该使用它,它能为你的应用程序做什么(What),以及你如何(How)继续学习这个主题。
大约5年前,当我开始学习机器人技术时,我遇到了 ROS。我到处浏览网页,试图了解它是什么,我可以在哪里使用它以及为什么我要学习它。在我试图理解这项技术的过程中,我偶然发现了更多的术语 —— 中间件、硬件抽象层、消息传递等等。我不是很理解这些概念,但依然继续安装 ROS。作为一个没有经验的 Linux 系统开发者,我挣扎了很久,最终放弃了。我还是坚持搞我熟悉的,MATLAB。
如果你像我曾经一样,是开发领域的新手,我希望你能充分利用这一系列文章来帮助你开始开发机器人应用程序。在我们开始之前,我们先来看看 ROS 的10年是什么样的:
让我们从一个例子开始。出于某种原因,你决定建造一个自主移动机器人(autonomous mobile robot)。你已经意识到,你可以从任何你喜爱的供应商获得可靠而经济的电机。你甚至设法让一个 Arduino 启动并运行来控制你的电机。然后,你有一个 2D 激光雷达来定位,以及一些障碍传感器,以防止撞上陌生人。最后,你只需要把它们放在一个 Raspberry Pi 上。如果没有 ROS,你将会这样做:
所有这一切,只是为了能够使用这些数据!除此之外,你还必须弄清楚定位算法使用哪种数据类型作为输入,还有诊断工具等等。此外,你的进程可能会很混杂,以至于更改一个传感器源可能会在整个代码库中造成广泛的混乱。最后,任何想要复制你牛逼的运动规划代码的人都必须使用完全相同的传感器、电机和控制器才能运行代码。不用说,随着组件数量的增加以及你写的应用程序越来越复杂,情况只会变得更糟。幸运的是,这就是 ROS 发挥作用的地方。
让我们继续我们开始的例子。
可以看到几个组件是如何相互连接的,通常操作是相互依赖的?ROS 提供了传输层来促进这种通信。它允许使用标准数据类型(称为 ROS 消息)进行数据交换。在图片中,它们显示在方括号内,如果你不明白它们的具体含义,不要担心。只需要掌握它的基本概念,就像 C++ 的 " int"、"string" 或 "float"。实际上,一些硬件制造商为他们的组件提供 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