一个你早就会的小把戏
闭上眼睛,用手指摸自己的鼻子。你不用看就能做到,因为你身体里总有某个部分知道自己的手臂在哪里——手肘弯了没有、手摆到了多远。这种内在的身体感觉叫做本体感觉。现在睁开眼睛,去拿桌子对面的咖啡杯。这一次你需要眼睛了:身体内部没有任何东西告诉你杯子在哪里——只有朝向外部世界的感官才能告诉你。这种向外的感觉叫做外感受。
机器人的感官也沿着完全相同的界线一分为二。这个唯一的划分——我测量的是自己的身体,还是外部世界?——是整个传感器章节最有用的地图。它的名字叫做本体感觉与外感受感知,一旦你看懂了它,后面遇到的每个传感器都会整整齐齐地落进这两个桶之一。
内部感觉:了解自己的身体
本体感觉传感器测量机器人自身的状态——它的关节摆在什么位置、转得有多快、电机在多用力地推。它们通常体积小、便宜、速度快,而且就直接装在关节和电子元件里面。有三种几乎到处都能见到。
- 旋转编码器装在电机轴上,数出关节转了多少——这就是机器人感知四肢位置的方式,直接对应于你知道自己手肘弯着。
- 惯性测量单元(IMU)把一个加速度计(感受推力和恒定的重力拉扯)和一个陀螺仪(感受转动)打包在一起。两者合起来告诉机器人哪边是上、身体正怎样倾斜——这就是你内耳的平衡感,装进了一块芯片里。
- 装在手腕处的力/力矩传感器,或是电机驱动器内部的电流检测,告诉机器人自己推得有多用力、或被推得有多用力——这是它对用力和接触的感觉,就像你感觉手里袋子的重量。
内部感觉的妙处在于,它们在一片漆黑、浓雾弥漫或真空环境中照样工作——它们从不依赖外界配合。它们的弱点是只能描述身体本身,永远说不出周围的房间。即使轮子在冰面上空转、毫无作用,编码器也会乐呵呵地告诉你它转了十圈。
外部感觉:读取世界
外感受传感器朝外,测量那些机器人无法控制的东西:墙在哪里、桌上摆着什么物体、机器人在地图上处于什么位置。它们就是机器人找到杯子的途径。常见的几种各有各的脾气。
- 激光雷达向四周扫射激光束,并对每一束反射回来所花的时间计时,从而勾勒出一圈清晰的距离——就像机器人每秒用成千上万把看不见的卷尺去摸清房间。
- RGB-D/深度相机给出一张普通彩色图像,外加每个像素的距离,于是机器人既能看到物体长什么样,又能知道它有多远。
- 超声波(声呐)传感器发出一声啁啾并聆听回声——便宜、作用距离短,正是蝙蝠在黑暗中飞行用的同一招。
- GNSS/GPS接收机聆听头顶的卫星,确定机器人在整个地球上的位置——这是户外的方位感,精度可达几米。
外部感觉强大,却喜怒无常。相机在强光或黑暗中很吃力,激光雷达会被玻璃和雨水搞糊涂,声呐会被柔软的表面骗到,GPS一进室内或走到高楼之间就消失了。它们都依赖外界配合——这正是机器人永远不能只信任其中一个的原因。
为什么机器人两者都需要,以及接下来发生什么
内部感觉和外部感觉互相补位。即便相机被太阳晃花了眼,IMU也能让无人机在零点几秒内保持水平;而相机又能纠正任何IMU在几分钟里累积起来的缓慢漂移。把若干不完美的读数融合成一个更好的估计,这叫做传感器融合,它是几乎每一台能干的机器人背后那台默默运转的引擎。
所有这一切都汇入机器人学中最基本的循环:感知,然后规划,然后行动,然后再次感知。这个循环就是感知—规划—行动范式。感知是第一步,所以后续每一个决策的质量,都被机器人最初对处境的感受好坏所限定。垃圾进,垃圾出——这正是后面的指南要花那么多篇幅讲噪声、漂移、校准这些原始信号问题的原因。
整章的一张地图
下面把本章其余部分,按照你现在随身带着的那一个问题分了类。把它放在手边:当后面每一篇指南介绍一个传感器时,问问自己它属于哪一栏,这个新概念就已经有了归处。
QUESTION THE SENSOR ANSWERS SENSORS YOU'LL MEET
--------------------------------- -----------------------------
INNER "What is my body doing?" encoder, IMU (accel + gyro),
(proprioceptive) force/torque, tactile
OUTER "What is the world doing?" LiDAR, RGB-D camera, sonar,
(exteroceptive) GNSS / GPS
BOTH "How much do I trust it?" noise, bias & drift,
(applies to every sensor) calibration, sampling,
filtering, sensor fusion注意第三行。噪声、校准和融合根本不是某一类传感器——它们是处理任何传感器交给你的东西所遵循的规则。这正是本章在那里收尾的原因:一旦你知道了机器人能感觉到什么、又该信它几分,你就准备好把原始信号变成真正的理解了。