第 3 章

第3章 论断:让一台关节式机械臂按照指令平稳地划过空间(约 1988 年)

把时间拨回1988年。在底特律郊区一家汽车零部件工厂的控制室里,三名工程师围在一台示波器前。屏幕上跳动的绿色波形已经持续了将近四个小时,其间没有一个人说出“差不多了”这句话。那条代表机械臂关节位置误差的曲线本应是一条平静的直线——至少在控制理论的教科书里是这样。但实际上,每当机械臂从全速运动转入减速段,曲线便开始剧烈振荡,峰值一度超过允许公差的三倍。在隔壁车间里,那台六轴关节式机器人正在重复一套焊接动作,焊点位置目视并无异常,但高速摄像机回放揭示了一个肉眼无法捕捉的事实:末端执行器在空间中的轨迹并非平滑弧线,而是在微微颤抖,像一根被风吹动的芦苇。这种颤抖不会立刻损坏什么,但它意味着焊点中心偏离了预定位置零点几毫米,意味着密封胶条的涂布宽度出现了肉眼不可见的波动,意味着螺栓拧紧力矩的峰值在统计学意义上开始漂移。在汽车工业的生产线上,这些偏差积累到一定程度,就是召回、索赔和声誉损失。而此刻控制室里的三个人知道,他们面对的不是一台故障机器。这台机器人的机械结构是坚固的,关节轴承经过了精密研磨,齿轮箱的齿隙被控制在设计范围内,电机功率足够驱动负载。它的“身体”没有问题。问题出在别处。

而此刻控制室里的三个人知道,他们面对的不是一台故障机器。这台机器人的机械结构是坚固的,关节轴承经过了精密研磨,齿轮箱的齿隙被控制在设计范围内,电机功率足够驱动负载。它的“身体”没有问题。问题出在别处。

关节式构型在1986年前后的那场评审中胜出,不是因为它简单,恰恰是因为它不简单。直角坐标机器人的三个直线轴各自独立,控制一个轴时另外两个轴可以完全不管,运动学方程几乎是平凡的。圆柱坐标和球坐标机器人引入了旋转轴,复杂性有所增加,但仍然保留了一定程度的解耦特性。关节式机器人则完全不同。它的六个旋转轴串联在一起,每一个轴的运动会改变所有后续轴在空间中的位置和姿态。要让末端执行器沿一条直线匀速运动,六个关节必须以不断变化的角速度协调转动,其瞬时速率比取决于机器人在那一时刻的具体姿态。当机械臂完全伸展时,最靠近基座的关节只需微小转动就能让末端移动很大距离;当它折叠起来贴近身体时,同一个关节需要转动更大角度才能产生同样的末端位移。这种关系不是线性的,它由一组高度耦合的方程描述,变量之间相互纠缠,没有简单的解析解。构型竞赛的胜利者获得的奖品,是一个远比落选者复杂得多的控制难题。

这个难题的核心可以表述得异常简洁:电机旋转的圈数必须被精确转化为手臂末端的毫米级位移。但在简洁表述背后,隐藏着层层叠加的复杂性。第一层来自减速器。电机转速通常在每分钟几千转的量级,而关节需要的转速可能只有每分钟几十转甚至几转。为了匹配这种差异并获得足够的驱动力矩,电机和关节之间装有减速比很大的齿轮箱——50:1、100:1甚至更高。这意味着电机要转几十圈甚至上百圈,关节才转一圈。齿轮箱内部存在齿隙——驱动齿轮和从动齿轮之间的微小间隙。当电机改变旋转方向时,齿隙会导致短暂的“空行程”:电机已经反转了几度,但从动齿轮还没有动。在减速比放大下,电机端零点几度的齿隙,到了关节端就是几十角秒的误差,再经过臂杆长度的杠杆放大,最终表现为末端可观的偏差。第二层来自弹性变形。减速器内部的齿轮、轴承和轴并非绝对刚体,在重载下它们会弹性变形,变形量随负载变化而变化。谐波减速器——一种在关节式机器人中广泛使用的高精度减速装置——利用金属弹性变形原理工作,其刚性本来就低于传统行星齿轮减速器。第三层来自惯性负载的剧烈波动。当机械臂完全伸展时,基座关节驱动的等效惯性矩最大;当它折叠起来时,同一个关节的等效惯性矩可能只有伸展状态下的几分之一。这种变化不是静态的,它在运动过程中连续发生,取决于所有后续关节的瞬时姿态。一个六轴机器人的完整动力学方程包含数十项互相耦合的非线性项,在1980年代的计算硬件上,实时求解这套方程是根本不可能的。

还有一层更根本的复杂性,来自运动学本身。关节式机器人的末端位置不是各关节角度的简单相加。给定六个关节的角度,计算末端执行器在空间中的位置和姿态——这被称为正向运动学——虽然公式冗长,但至少是确定性的,可以一步步算出来。真正困难的是它的逆问题:给定一个期望的末端位置和姿态,求解六个关节各自应该转多少度。这就是逆运动学。对于一个六轴机器人,逆运动学通常有多组解——同一个末端位置可以对应多种关节配置,比如“肘部向上”和“肘部向下”两种姿态。控制器必须在多组解中选择一组,选择的标准包括:哪组解最接近当前姿态以减少运动时间、哪组解远离关节限位、哪组解避免碰撞。更棘手的是某些被称为“奇异姿态”的特殊位置——比如当腕部两个旋转轴对齐时,它们对末端姿态的贡献变得不可区分,逆运动学求解出现数值不稳定。在奇异姿态附近,末端位置的一个微小变化,理论上可以对应某个关节角度的巨大跳变。如果控制器在奇异姿态附近给出了一个不可行的关节速度指令,机械臂就会剧烈抖动,或者触发保护停机。

这些复杂性在1984年之前并非没有被认识到。早在1970年代,斯坦福大学人工智能实验室和麻省理工学院的机器人研究团队就已经在理论上系统研究了这些问题。理查德·保罗在1981年出版的《机器人操作手:数学、编程与控制》中,建立了基于齐次变换矩阵的运动学建模框架,至今仍是工业机器人运动学的基础。约翰·霍勒巴赫和托马斯·洛萨诺-佩雷斯等研究者发展了递归牛顿-欧拉算法,可以在计算量与关节数量成正比的时间内计算关节力矩,为实时动力学补偿提供了理论可能。但这些是大学实验室里的成果。它们运行在分时计算机上,计算一个轨迹点可能需要几秒钟甚至更长时间。而工厂里的机器人必须在几十毫秒内完成整个控制循环——读取传感器、计算误差、生成新的指令、输出到电机驱动器。这个时间约束,将学术界优雅的算法与工业界可用的方案之间划出了一道鸿沟。

跨越这道鸿沟的起点,可以追溯到一种更原始的驱动方式的退场。在1970年代末和1980年代初,相当数量的工业机器人——尤其是那些负载较小、精度要求不高的应用——使用的是开环步进电机。步进电机的工作原理很简单:控制器发送一个脉冲,电机就转过一个固定的角度。不需要传感器反馈,不需要复杂的控制算法,成本低廉,实现容易。但这种简单是有代价的。步进电机在高速时转矩急剧下降,容易丢失步数——控制器以为电机转了10度,实际上它只转了9度或根本没动。一旦丢步,后续所有位置都偏移了,而控制器对此一无所知。在负载变化剧烈、速度要求高的汽车焊接线上,开环步进系统根本无法胜任。它就像是一个蒙着眼睛的人试图沿着一条直线行走——在平坦安静的地面上或许可以,但在崎岖不平的山路上迟早会偏离方向。

闭环伺服系统提供了另一种可能。它的核心思想可以追溯到更古老的工程传统——詹姆斯·瓦特在1788年为蒸汽机设计的离心调速器就是闭环控制的早期实例:当蒸汽机转速升高时,离心力使飞球张开,通过连杆机构关小蒸汽阀门;转速降低时飞球回落,阀门开大。这是一个完整的闭环——测量、比较、执行——不需要人的干预。但将闭环控制应用于多轴关节式机器人,需要克服两个障碍。第一个是传感器。控制器必须能够“看见”每个关节的真实位置,而且要看得足够快、足够准。第二个是算法。控制器在获得位置信息后,必须能够计算出应该施加多大的校正力,以多快的速度施加,才能让误差收敛而不是发散。

传感器的问题在1980年代中期找到了两条并行发展的技术路线。一条是光学编码器。编码器安装在电机轴上,内部有一个刻有精密光栅的码盘,发光二极管和光电探测器分列两侧。当电机旋转时,光栅交替遮挡和透过光线,光电探测器产生一系列脉冲。通过计数脉冲数量,控制器可以知道电机转过了多少角度。增量式编码器只能测量相对位移,每次上电时需要回到一个已知的参考点——这就是为什么许多老式机器人在启动时会缓慢地移动各个关节直到触发限位开关,这个过程在工厂里被称为“回零”。绝对式编码器则更复杂也更昂贵,它在码盘上刻有多圈同心光栅,每一圈对应二进制的一位,可以直接读出绝对角度值,不需要回零。在1980年代,增量式编码器因其成本优势占据了主流,但绝对式编码器在需要高可靠性的场合——比如那些不允许回零动作的连续生产线——也开始获得应用。

另一条技术路线是旋转变压器,有时简称为“旋变”。这是一种电磁式角度传感器,其原理可以追溯到二战时期的火控系统。旋转变压器的转子上绕有线圈,定子上有两组互相垂直的绕组。当转子旋转时,定子绕组中感应出的电压幅值随角度呈正弦和余弦变化。通过解算这两个信号的比值,可以精确获得角度值。旋转变压器的优势在于坚固耐用——没有精密光栅,不怕油污、震动和高温——这些恰恰是汽车工厂焊接车间的典型环境。FANUC在其关节式机器人中大量采用了旋转变压器,这一选择后来被证明对于机器人在恶劣工业环境中的可靠性至关重要。但旋转变压器的信号解算需要专门的电路,产生的角度数据是模拟量,需要经过模数转换才能进入数字控制器,这增加了控制系统的复杂性和延迟。

无论采用编码器还是旋转变压器,传感器带来的根本变化是同一个:控制器第一次能够“看见”关节的真实位置。在开环系统中,控制器只能假设电机执行了指令。在闭环系统中,控制器知道实际发生了什么。这个差别看似简单,却改变了控制的整个范式。它意味着误差可以被测量,而一旦误差可以被测量,就可以被修正。

修正误差需要一个算法。1980年代的工业机器人控制器,绝大多数采用的是一种被称为PID控制的算法。PID代表比例、积分、微分,这三个词描述了算法处理误差的三种方式。比例控制最简单:误差越大,校正力越大,就像一根弹簧——拉得越远,回弹力越强。但单纯的比例控制有一个问题:它永远无法完全消除稳态误差。想象一台机械臂的关节停在某个位置,由于重力作用,它有一个向下掉落的趋势。比例控制会产生一个与位置误差成正比的力矩来对抗重力。但当误差缩小到一定程度时,比例控制产生的力矩也缩小到恰好等于重力矩,关节不再继续回到目标位置,而是停在了一个有偏差的位置上。这个残余偏差就是稳态误差。增大比例增益可以减小稳态误差,但增益太大会导致系统振荡——关节会在目标位置附近来回摆动,像一扇没有阻尼的门被弹簧拉着晃个不停。

积分控制解决了稳态误差的问题。它将误差随时间累积——每一毫秒,当前误差值被加到累积量上。即使误差很小,只要持续存在,累积量就会不断增长,最终产生足够的校正力消除残余偏差。积分项就像一个有耐心的工人——他不会因为误差很小就放弃修正,而是持续施压直到偏差归零。但积分控制也有代价。它使系统响应变慢,因为累积需要时间。更危险的是,当误差方向改变时——比如机械臂从正向误差变成负向误差——积分项中积累的值不会立刻消失,它会继续推动系统朝原来的方向运动,导致过冲和振荡。这种现象被称为“积分饱和”,是PID调试中最常见的麻烦之一。

微分控制试图预测误差的变化趋势。它不关心误差本身有多大,而是关心误差在如何变化——是正在缩小还是正在扩大,缩小的速度是快还是慢。如果误差正在快速缩小,微分项会减小校正力以防止过冲,就像开车时看到红灯提前松油门而不是到了路口再急刹车。如果误差正在快速增大,微分项会加大校正力以提前抑制,就像感觉到车身开始侧滑时提前反打方向盘。微分控制可以显著提高系统的响应速度和稳定性,但它对信号噪声极其敏感。传感器读数的微小抖动——在焊接车间的电磁环境中几乎是不可避免的——会被微分运算放大,产生高频振荡指令,使电机发出刺耳的啸叫声。

将这三个部分组合在一起,就得到了PID控制器。它不需要知道机器人的动力学模型。它不需要求解复杂的微分方程。它只需要三个参数——比例增益、积分时间常数、微分时间常数——然后根据实时误差信号,机械地执行乘法和加法。在计算能力极度匮乏的1980年代,这种简洁性是决定性的优势。一台典型的1985年工业机器人控制器,其主处理器可能是摩托罗拉68000或英特尔8086系列,时钟频率在8到16兆赫之间,内存以千字节计。在这样的硬件上运行完整的逆动力学计算是不现实的。但PID算法可以在几百个机器周期内完成,留下足够的时间给运动学计算和路径插补。

然而,PID的简洁是有代价的。它的三个参数不是从物理定律推导出来的,而是需要针对每一台具体的机器人、每一个具体的负载条件进行整定。参数整定的过程,在1980年代的工厂现场,是一门高度依赖经验的技艺。工程师们常用的方法是所谓的“试凑法”——先设定比例增益,逐渐增大直到系统开始振荡,然后回调一些;再加入积分项以消除稳态误差,观察是否引起新的振荡;最后加入微分项以加快响应,同时小心地避免噪声放大。整个过程可能需要数小时甚至数天,期间机械臂反复运行测试轨迹,工程师盯着示波器上的误差波形,根据波形的形状、频率和衰减速度判断哪个参数需要调整。

一份那个时期的技术培训手册中,用相当直白的语言总结了试凑法的一些经验规则。手册指出,如果误差波形在第一个峰值后迅速衰减,但第二个峰值仍然明显,说明系统阻尼不足,需要增大微分作用。如果波形衰减缓慢且有规律地持续振荡,说明比例增益过大或积分时间常数过短,应当减小比例增益或延长积分时间。如果波形呈现出不规则的高频抖动,通常不是参数问题,而是传感器信号线受到了电磁干扰,需要检查屏蔽层的接地状况。这些规则不是精确的科学公式,而是工程直觉的书面化。它意味着每一台出厂的机器人都带有调试它的那位工程师的个人印记,而同样的参数设置换到另一台同型号机器人上,可能需要重新调整。一位曾在1980年代末参与多个汽车厂机器人安装项目的工程师后来回忆,同一批次出厂的六台相同型号机器人,安装在同一车间的同一条焊接线上,执行相同的焊接程序,最终采用的PID参数竟然没有两台是完全相同的。

这种对经验的高度依赖,构成了关节式机器人从实验室走向大规模工业部署的一道隐性门槛。通用汽车在1986年的评审会上选择了关节式构型,但在随后两年里,其供应商——包括FANUC、ABB和库卡——都投入了大量资源来解决控制系统的工程化问题。问题不在于让一台机器人在演示中完美运行——那总是可以做到的,只要有足够的时间调试。问题在于让第一百台、第一千台机器人在出厂时就具备一致的可接受的性能,并且能够在用户工厂里由当地技术人员在合理的时间内完成现场调试。这是一个规模化的问题,而规模化恰恰是制造业的本质要求。

FANUC在这方面的应对策略体现了日本制造业的一种典型思路:将调试过程中积累的经验知识逐步固化到硬件和软件中。到1988年,FANUC已经在其控制器中引入了自整定功能——控制器可以在初始运行时自动执行一系列测试动作,测量系统的频率响应特性,然后根据预设的规则自动计算出一组合适的PID参数。这个功能并不完美。在复杂负载条件或特殊应用中,自动整定的结果仍然需要人工修正。但它显著缩短了现场调试时间,降低了对调试工程师个人经验的依赖。这一进步的背后,是控制器硬件能力的提升。1988年的FANUC控制器已经采用了多个处理器协同工作的架构——一个处理器专门负责运动学计算和路径规划,另一个处理器负责伺服控制循环,还有专门的硬件电路处理编码器或旋转变压器的信号。这种架构将控制循环的频率推高到了1千赫兹以上——也就是说,每毫秒,控制器读取一次传感器,计算一次误差,更新一次电机指令。在这种频率下,机械臂的物理惯性本身就起到了低通滤波器的作用,将高频控制信号中的抖动平滑掉。PID控制的暴力压制,在这种高频循环下,开始显现出它的效力。

但效力的边界同样清晰。PID控制本质上是反应式的——它只有在误差已经发生之后才能做出响应。对于变化缓慢或可预测的负载,这种滞后是可以接受的。但对于高速运动中急剧变化的惯性负载,单纯的反应式控制始终存在一个性能上限。突破这个上限需要前馈控制——在误差发生之前,根据已知的动力学模型预先计算出所需的关节力矩,将其叠加到PID的输出上。前馈控制不依赖误差信号,因此没有滞后。但它依赖模型——如果模型不准确,前馈项本身就会成为干扰源。

1980年代末,关于前馈控制的争论在机器人控制领域形成了两种立场。一种立场认为,在当时的计算能力下,精确的实时动力学计算仍然不现实,不如继续优化PID参数并在机械设计上减小惯性变化——比如通过平衡机构或更轻的材料。另一种立场则认为,微处理器的性能正在按照摩尔定律增长,今天不现实不代表明天不现实,应该从现在开始开发基于模型的控制算法。这场争论在1988年还没有定论。但市场上已经出现了折中方案:简化的前馈控制。控制器不计算完整的逆动力学,只计算重力补偿和惯性矩阵的对角线元素——这些是动力学中最大、变化最慢的分量。重力补偿是最简单也最有效的部分:无论机械臂处于什么姿态,每个关节承受的重力矩是可以预先计算并存储在控制器内存中的。在PID输出上叠加一个与重力矩大小相等、方向相反的前馈项,可以显著减小稳态误差,让PID只需要处理动态负载变化。惯性矩阵对角线元素的补偿则更进一步:它近似地考虑了每个关节自身加速时所需克服的惯性,但忽略了关节之间耦合的惯性项——即一个关节加速对另一个关节产生的反作用力矩。这种“部分前馈”可以在不显著增加计算负担的情况下,明显改善高速运动时的轨迹跟踪精度。

另一场技术辩论在传感器层面展开。编码器和旋转变压器测量的是电机轴的角度,而不是关节的角度,更不是末端执行器的位置。减速器的齿隙、臂杆的弹性变形、温度引起的热膨胀——所有这些因素都会在电机角度和末端位置之间引入偏差。一种激进的解决方案是直接测量末端位置——比如在机器人工作空间内安装激光跟踪仪或视觉系统,实时反馈末端执行器的真实位置。这种方法在1980年代末的实验室环境中已经得到验证,但在工厂车间里面临严重的可靠性问题:焊接飞溅、油雾、振动和杂散光都会干扰光学测量。更务实的方法是在减速器输出端安装第二级传感器——通常是更简单的电位器或低分辨率编码器——用于检测和补偿齿隙引起的偏差。这种“双回路”反馈结构在高端机器人中逐渐普及。内回路以电机轴编码器或旋转变压器为反馈源,控制频率高,负责快速响应和稳定性;外回路以关节端传感器为反馈源,控制频率较低,负责补偿减速器误差和弹性变形引起的缓慢偏差。两个回路协同工作,进一步缩小了指令位置与实际位置之间的差距。

所有这些技术路线——更好的传感器、更高的控制频率、自整定、部分前馈、双回路反馈——在1988年前后汇聚在一起,产生了一个可以用数字衡量的结果。在标准测试条件下,一台典型的六轴关节式工业机器人的重复定位精度达到了±0.1毫米。这个数字需要被正确理解。它不是绝对精度——机器人末端执行器相对于空间中某个绝对坐标系的定位精度通常要差得多,可能达到±1毫米甚至更多。重复定位精度衡量的是机器人回到同一个示教点的能力:操作员手动引导机器人到达某个位置,按下示教盒上的记录键,控制器存储下该位置对应的关节角度。之后,每当程序指令机器人回到这个示教点,它都会驱动各关节到达存储的角度值。±0.1毫米的重复定位精度意味着,在数百次重复中,末端位置相对于示教点的偏差不会超过0.1毫米。对于点焊——机器人最主要的大规模应用——这个精度是足够的。焊钳的电极头有一定直径,只要焊点位置偏差不超过电极头半径,焊接质量就不会受影响。对于弧焊、密封胶涂布和大部分装配任务,±0.1毫米也基本满足要求。

但这个数字的获得是有代价的。代价的第一部分是控制器的物理体积。1988年的一台典型机器人控制器,是一个高度超过一米半、重量超过两百公斤的机柜。打开柜门,可以看到层叠的电路板,上面密布着分立元件——电阻、电容、运算放大器、模数和数模转换芯片。伺服驱动单元占据了机柜的下半部分,大功率晶体管安装在厚重的散热片上,风扇嗡嗡作响。整个控制器的功耗动辄数千瓦,其中相当一部分转化为热量,需要专门的通风或冷却系统。这些机柜必须放置在机器人工作单元附近,通常是在一个单独的控制室里,通过粗大的电缆束与机器人本体连接——每台电机需要动力线和传感器信号线,六轴机器人至少有十二根电缆,外加末端执行器控制线和安全回路信号线。电缆的布局、屏蔽和抗干扰是另一个工程难题,尤其是在焊接车间的强电磁干扰环境中。焊接电流动辄数百安培,在电缆中产生的感应电压足以干扰传感器信号的传输。工程师们不得不将信号线包裹在编织铜网屏蔽层中,将屏蔽层单端接地以避免地回路,将动力线和信号线分开布线,有时还要在信号接收端加装共模扼流圈和滤波电容。这些措施每一项单独看起来都不复杂,但几十项叠加在一起,构成了一个只有在现场摸爬滚打过的工程师才能完全掌握的隐性知识体系。

代价的第二部分是调试时间。尽管自整定功能在进步,但将一台机器人从出厂状态调试到能够以额定速度和精度持续运行,在1988年仍然需要数天到数周的时间。这个过程中最耗时的不是PID参数整定本身——那可能在几小时内完成——而是处理那些在自整定无法覆盖的复杂工况中出现的问题。机器人在空载时运行良好,装上焊钳后开始振荡,因为焊钳的质量改变了末端关节的惯性;在低速时轨迹平滑,加速到额定节拍后出现过冲,因为高速下动力学耦合效应更加显著;在夏季高温时性能稳定,冬季车间温度下降后精度漂移,因为润滑油的粘度变化改变了减速器的摩擦特性——每一个问题都需要工程师到现场诊断、测试、调整。这些工程师是稀缺资源。他们需要理解控制理论、熟悉电气系统、能够阅读电路图,同时还要有足够的机械知识来判断问题是否出在减速器或轴承上。培养这样一名工程师需要数年时间,而1980年代末全球工业机器人装机量的快速增长,使得这类人才始终处于供不应求的状态。日本、欧洲和北美的机器人制造商都在竞相招聘和培训现场工程师,但增长速度始终跟不上装机速度。这种人才瓶颈,比任何纯技术问题都更严重地制约着工业机器人的市场扩展速度。

代价的第三部分,也是最容易被忽视的,是路径规划的复杂性。让一台关节式机械臂按照指令平稳地划过空间,这个“指令”本身——末端执行器应该遵循的空间轨迹——并不是自动生成的。在1988年的典型工作流程中,工程师或熟练操作员使用示教盒手动引导机器人到达一系列关键位置,逐一记录。控制器将这些离散的示教点用插值算法连接成连续轨迹——通常是直线或圆弧。但示教点之间的路径在关节空间中的形态,取决于逆运动学求解的结果。在某些情况下,从示教点A到示教点B的直线轨迹,在关节空间中可能经过一个奇异姿态附近,导致某个关节的速度指令突然飙升。控制器必须能够检测到这种情况,并自动调整轨迹或降低速度以避免超出电机的物理限制。此外,示教过程本身是费时费力的。对于复杂的工件——比如一个汽车车身侧围,上面有几十个焊点分布在三维曲面上——操作员需要逐一示教每一个焊点的位置和焊钳姿态,这个过程可能需要好几天。如果生产线换型——比如从生产四门轿车切换到双门轿跑——许多焊点位置需要重新示教,机器人在此期间无法投入生产。这些保护逻辑和示教流程一层层叠加在基本的运动控制之上,使得控制软件变得越来越庞大和复杂。到1988年,一台高端工业机器人的控制软件代码量已经达到数十万行,其中相当一部分不是用于正常工况,而是用于处理异常、边界条件和安全保护。

正是这种复杂性——调试的复杂性、路径规划的复杂性、异常处理的复杂性——孕育了下一个技术需求。如果机器人的工作过程可以在计算机上预先模拟,如果示教和调试可以部分地从工厂现场转移到工程办公室的显示屏上,那么时间和人才的瓶颈就有可能被突破。这个想法在1988年已经存在。几家领先的机器人制造商和研究机构正在开发离线编程系统——让工程师在三维图形环境中构建机器人工作单元的数字模型,生成和优化轨迹,模拟碰撞检测,然后将验证过的程序下载到实际控制器中。但这些系统在1988年还处于早期阶段。图形渲染速度慢,运动学仿真不够精确,最重要的是,仿真环境中的理想模型与实际工厂中那台带有齿隙、弹性变形和传感器噪声的真实机器人之间的差距,仍然大到无法令人放心。工程师们发现,即使仿真显示一切正常,到了现场仍然需要大量调整。离线编程要真正实用化,需要更精确的模型、更快的计算能力和更好的标定技术——这些将在接下来的几年里逐步到位。

在1988年这个时间节点上,关节式工业机器人的控制问题可以被描述为“勉强解决”。±0.1毫米的重复定位精度使机器人可以胜任汽车工业中的大多数应用。控制器的体积、功耗和调试时间虽然代价高昂,但在当时的经济账中是可以接受的——相比专用自动化设备改造所需的时间和费用,机器人的柔性带来的收益超过了这些代价。但“勉强解决”意味着脆弱。它意味着系统运行在性能边界附近,对外界变化敏感,对操作人员的技能依赖度高。它意味着控制问题没有被根本性地解决,而是被一套由传感器、PID算法、经验参数和工程技巧组成的临时组合压制住了。这套组合的每一个部分都在不断改进,但它们之间的耦合也在不断制造新的复杂性。这种复杂性本身,正在成为工业机器人进一步渗透到更广泛制造业领域——那些没有焊接车间那么标准化、没有汽车工业那么高利润的领域——的最大障碍。

1988年秋天,在芝加哥举办的一次国际机器人技术会议上,一位来自德国某汽车制造商的高级工程师在圆桌讨论中做了一个发言。他说,他们工厂在过去三年里安装了超过一百台关节式机器人,整体运行状况令人满意,但有一个数字一直困扰着他:在他们的维护预算中,与机器人控制系统直接相关的支出——包括调试、故障诊断、软件更新和人员培训——占到了机器人相关总费用的百分之四十三。机械本体的维护——更换减速器润滑油、检查轴承磨损、紧固螺栓——只占百分之十九。他说,他们当初选择机器人时,关注的都是负载能力、工作范围、重复精度这些指标,没有人提醒他们,控制系统的复杂性会成为运营成本的最大单一来源。他最后说了一句话,后来被在场的一位记者记录下来,出现在次月的行业通讯中。他说,他们原以为购买机器人就像购买一台数控机床——安装、调试、投入生产、定期维护,但实际经验告诉他们,机器人更像是一个需要持续照顾的学徒——它有能力完成工作,但你必须理解它的脾气,知道什么时候该干预,什么时候该放手,而且每个学徒的脾气都不太一样。

这个比喻抓住了1988年关节式机器人处境的某种本质。它已经不再是实验室里的原型或展会上吸引眼球的“能动的雕塑”。它已经证明了自己可以在真实的工厂环境中完成有用的工作。但它还不是一台成熟的、可以像数控机床那样被普通技术人员可靠操作的设备。它需要被“照顾”——被理解它脾气的人调试、监控、调整。而“照顾”的成本,正在随着装机量的增长而线性甚至超线性地累积。这个成本压力,构成了机器人技术演进的下一个推力。它迫使制造商和研究者去寻找一种方法,将调试和验证的智力劳动从物理世界中抽离出来,转移到数字空间中去。在那里,轨迹可以被反复测试而不消耗实际材料和能源,奇异姿态可以被提前发现和规避,参数整定可以在仿真模型中初步完成。这不是一个遥远的愿景。它的技术基础正在1988年的实验室和少数先驱公司的研发部门中成形。而它的必要性,已经在底特律、沃尔夫斯堡和丰田市的工厂车间里,被那些嗡嗡作响的控制柜和紧盯着示波器波形的工程师们,日复一日地证明着。