ROS 2机器人开发:从入门到实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.1 机器人与ROS

记得我刚开始找工作参加面试时,面试官问:“你认为机器人是什么?”我的回答是“像人一样,可以自动完成某些任务(如搬运和清洁)的机器”。之所以这样回答,是因为机器人的组成和行为与人体十分相似,举一个最简单的例子,当你感到热的时候就会打开空调,我们将这个行为过程与机器人进行类比。如图1-1所示,你的皮肤相当于机器人的传感器,比如温度传感器就可以测量温度;你的肌肉相当于机器人的执行器,比如可以控制角度的舵机;大脑相当于机器人的决策系统,将皮肤和肌肉与大脑相连的则是神经网络。不难看出,ROS在机器人中的作用就是将传感器的数据发送给决策系统,然后将决策系统的输出发送给执行器执行。

图1-1 机器人与人体行为类比

2006年,Eric Berger和Keenan Wyrobek通过调查发现,当时的机器人公司在开发机器人时把八成的精力都花在了搭建机器人的通信机制和基础工具上,反而没时间完善机器人的决策系统。更奇怪的是,即使是同一个组织,在开发不同的机器人时也会从零开始构建机器人的通信机制和工具,花费大量时间重复造轮子,不同公司重复造轮子[1]的时间和开展新研究的时间占比如图1-2所示。

ROS就是在这种背景下出现的。聪明的你应该已经猜到,ROS本质上就是用于快速搭建机器人的软件库(核心是通信)和工具集。它的出现虽然解决了机器人开发中重复造轮子的问题,但随着机器人软硬件不断进步,应用场景不断丰富,ROS暴露出了在通信上缺乏稳定性、实时性和安全性等问题,因此ROS 2开始登上舞台。

ROS 2采用第三方的通信组件代替ROS 1中的通信组件,使得数据传输更加稳定和强大。同时ROS 2引入了新的C++标准,在代码规范性、接口一致性上都有了不小的提升。因此在本书中我们将基于最新的ROS 2进行介绍。

ROS 2是如何在ROS 1的基础上更进一步的呢?带着好奇心,我们一起来看下ROS 2的系统架构,揭开它的神秘面纱吧。

图1-2 不同公司重复造轮子的时间和开展新研究的时间占比