第 4 章
第4章 论断:机器人从孤立的设备变成可集成的工作单元(约 1990 年)
在底特律郊外的那家汽车装配厂里,示教工程师放下示教盒、揉手腕的动作,在1990年前后的全球汽车制造业中,每天都在重复上演。这个动作本身就是一个信号——它表明机器人部署的方式已经跟不上机器人本体的技术进步。关节驱动电机的功率密度在提升,减速器的回差在缩小,控制器的插补周期从几十毫秒缩短到了几毫秒,但当一台新机器人被安装到生产线上时,仍然需要一个人站在它旁边,一个点一个点地告诉它应该去哪里。机器人没有自主理解工作环境的能力,它只能忠实地记录和复现人引导它走过的每一条轨迹。这意味着,每一台机器人的每一次部署,都是一次从零开始的现场手工劳动。这种被称为在线示教的编程方法,在技术文献中有更精确的表述:点位示教。它的操作逻辑并不复杂。工程师手持一个连接在机器人控制器上的示教器——一个带有按键、摇杆和紧急停止按钮的手持终端——通过手动控制模式将机器人末端执行器移动到目标位置,按下记录键,控制器将该位置的各关节角度值存入内存。
对于点焊这类离散点位作业,工程师依次示教每一个焊点的坐标和姿态;对于弧焊或喷涂这类连续轨迹作业,则以较低速度牵引机器人走完整条路径,由控制器以固定频率采样关节角度,形成一条由密集点位序列近似表达的连续轨迹。程序本质上是一个点位列表,外加一些辅助指令:速度设定、焊枪开关时序、等待信号、跳转逻辑。从表面上看,示教编程简单直观。它不需要工程师掌握任何编程语言,不需要理解机器人的运动学模型,甚至不需要知道关节坐标系与笛卡尔坐标系之间的转换关系。操作者只需要看着机器人末端的位置,判断它是否对准了目标点,然后按下按钮。这种所见即所得的交互方式,在机器人应用早期极大降低了使用门槛。1970年代的工厂里,许多机器人示教工作是由经验丰富的焊接工人或喷涂工人转岗完成的,他们并不具备高等数学或计算机编程背景,但他们对工艺本身非常熟悉——知道焊点应该打在哪里,知道喷枪应该以什么角度扫过曲面。
示教编程让他们可以将自己的工艺知识直接传授给机器,而不需要经过工程师的中间翻译。然而,这种方式的缺陷从一开始就存在,只是被早期应用的简单性所掩盖。当机器人只负责一个简单的上下料动作,或者只在一个固定的工位上焊接几个重复出现的焊点时,示教编程的时间成本是可以接受的。一个熟练的示教工程师可以在几个小时内完成一个简单工作站的调试。但当机器人开始被集成到复杂的多机协同生产线中,当一台机器人需要处理数十个甚至上百个焊点,当多个机器人的工作区域相互重叠,当变位机、输送链、夹具和传感器都需要与机器人动作精确同步时,示教编程的局限性就变得不可忍受。第一个致命缺陷是占用生产时间。示教编程必须在真实的机器人上进行,而真实的机器人是生产设备。当工程师站在机器人旁边逐点示教时,这台机器人——以及它所在的生产线——处于非生产状态。对于一家年产数十万辆汽车的工厂来说,生产线每停摆一个小时,就意味着数百辆汽车的产能损失。这种损失不是一次性的。
每当产品型号变更、工艺调整或者机器人重新部署时,示教编程都需要再次占用生产时间。在汽车车型更新周期从七八年缩短到四五年的1990年代,这种反复发生的停摆成本正在快速攀升。第二个缺陷是依赖熟练技艺。示教编程的质量高度依赖于操作者的经验、耐心和空间判断能力。一个有经验的示教工程师可以在示教过程中预判机器人的运动姿态,避免奇异点——即机器人在某些特定姿态下失去某个方向运动自由度的现象——从而减少后续调试中的姿态突变问题。他可以在示教点位时留出适当的过渡空间,使机器人在点与点之间的运动平滑自然,而不是生硬地急停急转。他还可以在示教多台机器人协同作业时,有意识地错开各台机器人的动作时序,避免等待时间过长。这些能力没有标准化的教材可以传授,它们属于那种只有在反复实践中才能积累的默会知识。当一位资深示教工程师退休或跳槽时,他所掌握的那套技艺也随之离开。第三个缺陷,也是最容易被忽视的,是示教编程难以应对复杂曲面和工艺变更。
对于车身覆盖件这类具有自由曲面的工件,焊点或喷涂轨迹的精确位置需要根据工件的实际几何形状来确定。但在示教编程模式下,工程师只能根据肉眼判断来定位,无法精确匹配CAD模型中定义的曲面坐标。当产品设计发生变更时——比如车门内板的加强筋位置移动了几毫米——工程师必须在现场重新示教所有受影响的点位,而无法简单地在计算机中修改参数并重新生成程序。这使得机器人编程与产品设计之间存在着一个信息断层:设计部门在数字空间中精确定义了每一个焊点的坐标,但这些坐标却无法直接传递给机器人,必须通过示教工程师在现场重新翻译一遍。这三个缺陷共同塑造了一个困境:机器人本身已经是一台高度精密的机电一体化设备,能够以亚毫米级的重复精度执行指令,但它的部署方式却仍然是一种手工业。一台关节式机器人在出厂时被精确标定了运动学参数,其控制器中运行着复杂的伺服算法和轨迹插补程序,但当它被安装到生产线上时,它需要一个人站在它旁边,一个点一个点地告诉它应该去哪里。
机器人的智力——它对空间的理解、对任务的规划、对环境的适应——并不存在于机器人本身,而是存在于示教工程师的头脑和双手之中。这种状况的后果在1980年代末期已经清晰可见。汽车制造商在机器人的硬件采购上投入了巨额资金,但系统集成的时间成本和风险却成为机器人应用进一步扩展的瓶颈。一个典型的车身焊接车间可能包含数十台甚至上百台机器人,每台机器人都需要经过数周甚至数月的示教和调试才能投入生产。在此期间,整个车间的产能爬坡速度受到严重制约。更棘手的是,一旦生产线投入运行,任何工艺变更或产品改型都意味着新一轮的示教和调试,而每一次这样的再编程都会再次打断生产。行业内部对这个问题的认识并不晚。早在1980年代中期,一些机器人制造商和系统集成商就开始探讨一种可能性:能不能让编程工作脱离真实的机器人,转移到计算机上进行?
能不能在数字空间中构建出整个工作单元的三维模型,让工程师在这个虚拟环境中完成所有编程和验证工作,然后将生成好的程序直接下载到机器人控制器中运行?这种设想被称为离线编程,它的核心逻辑是:将机器人的物理运动抽象为数学模型,将工作单元的环境信息转化为几何数据,将编程和调试的智力劳动从生产现场转移到工程设计室。这个设想要变成现实,需要解决几个关键问题。首先是机器人的运动学建模。离线编程系统必须能够精确模拟机器人在任何关节角度下的空间姿态,这需要建立机器人的正向运动学和逆向运动学模型。正向运动学解决的问题是:已知各关节的转动角度,计算机器人末端执行器在空间中的精确位置和姿态。逆向运动学则解决相反的问题:已知末端执行器需要到达的目标位置和姿态,反算出各关节应该转动到什么角度。
对于一台六轴关节式机器人来说,逆向运动学通常存在多组解——同一个末端位置可以由不同的关节配置来实现——离线编程系统需要能够从这些解中选择出最优的那一组,避免奇异点和关节限位。其次是工作单元的几何建模。离线编程系统需要知道机器人周围有什么:工件放在哪里,夹具的形状是什么,变位机的运动范围有多大,其他机器人的工作包络面在哪里。这些信息必须以三维几何模型的形式存在于系统中,并且这些模型的位置关系必须与真实环境精确对应。在1990年代初期,这类几何模型通常来自CAD系统,但CAD模型与机器人编程系统之间的数据交换格式并不统一,不同厂商的CAD软件使用不同的文件格式和几何表示方法,将设计部门的CAD模型导入离线编程系统往往需要经过繁琐的格式转换和数据修复。第三个问题更为根本:仿真与现实的吻合度。
离线编程系统生成的机器人程序是在理想化的数字环境中运行的——它假设机器人的运动学参数完全符合标称值,假设工件的位置与CAD模型完全一致,假设环境中不存在任何未建模的障碍物。但在真实的工厂环境中,机器人的实际运动学参数与标称值之间存在微小偏差,工件在夹具上的定位也存在公差,电缆和管路可能在特定姿态下进入机器人的运动空间。如果离线生成的程序没有考虑这些现实因素,那么当它被下载到真实机器人上运行时,就可能出现焊点位置偏移、姿态不理想甚至碰撞事故。因此,离线编程系统不仅需要生成程序,还需要提供验证手段——在仿真环境中检测碰撞、分析节拍时间、评估可达性——但这些验证的有效性完全取决于数字模型对物理现实的忠实程度。尽管存在这些技术挑战,离线编程的商业逻辑是压倒性的。如果机器人编程可以从生产现场转移到计算机房,那么生产线停摆的时间将被大幅压缩。
示教工程师在真实机器人旁花费数周完成的工作,理论上可以在计算机上以更短的时间完成,而真实机器人只需在最后阶段进行短暂的验证和微调。更重要的是,离线编程使得编程工作可以与生产线建设并行进行:当机械和电气安装人员还在现场搭建设备时,编程工程师已经在计算机上完成了所有机器人的程序开发和仿真验证,等到设备安装完毕,程序可以直接投入使用。这种并行工程模式对于缩短新车型的投产周期具有直接的财务价值。此外,离线编程还解决了一个示教编程无法解决的问题:程序的可复用性和可修改性。在示教编程模式下,一个机器人的程序是一组与特定物理环境绑定的点位数据。如果工件的位置发生了微小变化,或者机器人的安装底座被移动了几厘米,整个程序可能需要重新示教。但在离线编程模式下,程序中的点位是相对于工件坐标系定义的。如果工件的位置发生变化,工程师只需要在系统中更新工件坐标系的基准位置,系统就可以自动重新计算所有相关点位的新坐标。
同样,如果产品设计发生变更,工程师可以直接从更新后的CAD模型中提取新的点位坐标,替换原有程序中的对应数据,而不需要从头开始重新编程。这种软件化的能力——将机器人的运动路径从一组僵硬的绝对坐标转化为一组可以参数化调整的逻辑关系——正是离线编程区别于示教编程的本质所在。它意味着机器人编程不再是一种附着在特定物理机器上的手工技艺,而变成了一种可以在数字空间中独立存在、可以被存储、传输、修改和复用的工程信息。机器人从一台必须被手把手教导的孤立设备,变成了一个可以被软件定义和管理的可集成工作单元。这个转变的实现,在技术史上有一个相对明确的锚点。1990年前后,几家关键的机器人制造商和独立软件公司几乎同时推出了具备实用价值的离线编程和仿真系统。ABB机器人公司开发了RobotStudio,这是一个运行在Unix工作站上的三维仿真环境,允许工程师导入机器人和工件的CAD模型,在图形界面中创建和编辑机器人程序,并模拟整个工作单元的运动。
FANUC推出了基于个人计算机的离线编程工具,虽然功能相对简化,但价格更低,部署更方便。德国的KUKA和日本的安川电机也各自开发了类似的系统。此外,还有一些独立的软件公司——如以色列的Tecnomatix和美国的Deneb Robotics——开发了不绑定特定机器人品牌的通用离线编程和仿真平台,它们支持导入多种品牌机器人的运动学模型,使得系统集成商可以在同一个软件环境中规划包含不同品牌机器人的复杂生产线。这些早期离线编程系统的用户界面,按照今天的标准来看是相当原始的。工程师面对的是一个单色或低分辨率彩色显示器,三维模型的渲染质量粗糙,操作依赖于命令行输入和笨重的轨迹球。但它们的核心功能已经具备了后来所有离线编程系统的基本要素:三维可视化的工作单元布局、基于CAD模型的路径规划、运动学仿真与碰撞检测、节拍分析以及程序代码的自动生成。
对于一个在1988年经历了数周示教编程之苦的工程师来说,能够在计算机屏幕上看到一个由数字模型构成的机器人按照预设程序虚拟运行,已经是一种近乎革命性的体验。这种体验的背后,是一系列数学工具和软件工程方法在机器人领域的系统应用。机器人运动学的数学模型——基于Denavit-Hartenberg参数的齐次变换矩阵——早在1950年代就已经建立,但将这些数学模型转化为可以在普通计算机上实时运行的仿真软件,需要解决计算效率和数值稳定性方面的工程问题。轨迹规划算法——如何在笛卡尔空间中生成平滑的路径,如何在关节空间中避免速度和加速度的突变——需要将微分几何和最优控制理论转化为可编程的算法。碰撞检测算法——如何快速判断两个复杂三维几何体之间是否存在干涉——需要借助计算几何中的包围盒层次结构、空间分割和距离场等数据结构。
这些技术各自都有独立的发展脉络,但在离线编程系统中,它们被整合到了一个统一的软件框架中,共同服务于一个明确的目标:在数字空间中精确地预演机器人的物理行为。这个目标的实现程度,在1990年代初期仍然是有局限的。早期离线编程系统生成的程序,在下载到真实机器人上之后,通常仍然需要一定程度的现场微调。机器人的实际运动学参数与标称值之间的偏差——在工程上被称为机器人标定误差——会导致仿真中的理想运动轨迹与真实运动轨迹之间存在差异。工装夹具的制造和安装误差、工件在夹具上的定位偏差、以及温度变化引起的热变形,都会进一步扩大仿真与现实之间的差距。因此,离线编程的早期实践并没有完全消除现场调试环节,而是将现场调试的工作量从从头开始示教缩减为对已有程序进行验证和微调。这种缩减的幅度因应用场景而异:对于点焊这类点位精度要求相对宽松的应用,离线编程生成的程序往往只需要少量调整即可投产;
对于弧焊和激光切割这类对轨迹精度要求极高的应用,现场微调的工作量仍然相当可观。但即使存在这些局限,离线编程所代表的范式转移已经不可逆转。它从根本上改变了机器人系统集成的成本结构和时间结构。来自1990年代中期汽车工业的内部评估——虽然具体数字因商业保密原因未公开,但其结论方向在行业内部被广泛引述——对比了采用示教编程和离线编程完成同一个车身焊接工作站集成的周期差异。在示教编程模式下,从设备安装完成到所有机器人程序调试完毕、工作站达到设计节拍,平均需要六到八周时间,其中大部分时间消耗在逐点示教和碰撞规避调试上。而在采用离线编程模式后,由于编程工作可以在设备安装期间并行进行,且碰撞检测和节拍优化可以在仿真环境中预先完成,现场调试周期被压缩到了两到三周。这不仅仅是时间上的节省,更意味着新车间的产能爬坡速度大幅提升,投资回报周期显著缩短。离线编程还带来了另一个不那么显眼但同样重要的变化:它改变了机器人编程工作的技能要求。
在示教编程时代,一个优秀的机器人调试工程师需要具备的首要素质是耐心和细致——能够在嘈杂的工厂环境中长时间保持专注,能够记住数十个点位的空间关系,能够在机械臂高速运动的间隙中准确判断姿态是否合理。这些素质与传统的工匠技艺更为接近。而在离线编程时代,工程师需要具备的首要素质是空间想象能力和抽象建模能力——能够在头脑中将二维屏幕上的三维模型映射为真实世界的空间关系,能够理解运动学模型和坐标变换的数学原理,能够运用软件工具进行系统级的规划和分析。这些素质更接近于工程设计训练所培养的能力。这意味着,机器人编程正在从一种工厂现场的手艺转变为一种工程办公室的专业。这种转变并非没有代价。那些在示教编程时代积累了丰富经验的老工程师,有些人发现自己难以适应新的工作方式。他们习惯于站在机器人旁边,用眼睛和手感来判断运动轨迹是否合适,而不是坐在计算机前,通过鼠标和键盘来操作一个虚拟的机器人模型。
在1990年代中期的行业会议和用户论坛上,关于离线编程是否过于脱离现场实际的讨论反复出现。反对离线编程的声音认为,计算机仿真永远无法完全模拟工厂现场的复杂性和不确定性,过度依赖离线编程可能导致工程师失去对真实机器人行为的直觉判断力。支持离线编程的声音则指出,随着机器人应用向更复杂的多机协同和更精密的工艺领域扩展,单纯依靠现场示教已经无法满足技术需求,离线编程不是要取代现场经验,而是要将现场经验与数字工具结合起来,形成一种更高效的集成方法。这场争论在本质上涉及一个更深层的问题:机器人技术大规模扩散的条件是什么?如果说1970年代到1980年代的机器人产业是在证明机器人可以做什么——可以搬运、可以焊接、可以喷涂、可以装配——那么1990年代面临的问题则是如何让机器人更容易被使用。这两个问题的性质完全不同。证明机器人可以做什么,是一个技术可行性问题,它依赖于电机、减速器、传感器和控制算法的进步。
而让机器人更容易被使用,是一个工程经济学问题,它依赖于降低部署成本、缩短集成周期、减少对稀缺技能的依赖。离线编程的意义正在于此:它不是让机器人本身变得更好,而是让使用机器人的过程变得更便宜、更快、更可预期。从这个角度看,离线编程是机器人技术从硬件技艺向软件工程转化的关键一步。它把原本附着在物理机器和熟练工人身上的编程和调试能力,抽象为一套可以在计算机上运行的软件工具。这种抽象化使得机器人编程可以被标准化、文档化、版本管理化和远程传输——简而言之,被纳入现代工业工程的管理体系。一台机器人的程序不再是一个特定工程师在特定时间在特定工厂里留下的不可复制的作品,而变成了一份可以被审查、被优化、被复用的工程文件。这种变化对于机器人技术从汽车工业向更广泛的制造业扩散,具有基础性的意义。汽车工业之所以能够容忍示教编程的高成本和长周期,是因为汽车生产具有大规模、长周期的特点。
一条车身焊接线一旦调试完成,可以稳定运行数年,生产数十万甚至上百万台车身,示教编程的初始成本可以被巨大的产量所摊薄。但对于电子制造、食品加工、制药、物流等领域的潜在机器人用户来说,情况完全不同。这些行业的产品生命周期更短,批次更小,产线变更更频繁。如果每次产线变更都需要停摆数周进行现场示教,机器人的经济性就无法成立。要让机器人进入这些行业,集成的时间成本和风险必须被大幅降低。离线编程恰恰提供了这种降低的可能性——它使得机器人可以在数字空间中被快速重新配置,从而适应小批量、多品种的生产模式。离线编程的兴起也推动了机器人通信接口的标准化进程。在示教编程时代,机器人控制器与外部设备之间的通信通常依赖于厂商专用的I/O信号和简单的串行通信协议。这种封闭的通信方式使得机器人难以与生产线上其他设备——如PLC、视觉系统、条码扫描器——进行灵活的数据交换。
但当机器人编程从现场示教转向离线编程时,系统集成商开始要求机器人控制器支持更开放、更标准化的通信接口,以便在统一的软件平台中对整个生产单元进行建模和仿真。这种需求推动了1990年代中期一系列工业通信标准的制定和推广,包括基于CAN总线的DeviceNet协议和基于以太网的EtherNet/IP协议。这些标准使得机器人不再是生产线上的一个信息孤岛,而变成了可以与上位控制系统、制造执行系统甚至企业资源计划系统进行数据交换的网络节点。当机器人的程序可以被离线生成、仿真验证并远程下载时,当机器人的状态数据可以通过标准通信协议被实时采集和上传时,机器人就不再是一台孤立的设备了。它变成了一个可集成的工作单元——一个可以与其他自动化设备、信息系统和人类操作员协同工作的模块化组件。这种可集成性是机器人技术从汽车工业的专属工具走向通用制造平台的前提条件。没有这种可集成性,机器人就只是一个昂贵的专用机械,只能在高度结构化的环境中重复执行预设的动作。
有了这种可集成性,机器人就变成了一个可以被灵活配置、快速部署、远程监控和持续优化的生产资源。1990年的某个下午,在瑞典哥德堡的沃尔沃工厂里,一台用于车身侧围焊接的ABB机器人完成了离线编程系统的首次生产验证。工程师在距离生产线数百米之外的办公室里,在一台Sun SPARC工作站上完成了整个工作站的路径规划和碰撞检测,将生成的程序通过工厂局域网下载到机器人控制器中。当程序启动时,机器人在没有任何人工干预的情况下,按照预设的轨迹完成了全部三十七个焊点的焊接作业。周围没有手持示教盒的调试工程师,没有反复的停机和重启,只有设备规律的运行声和焊接火花闪烁的节奏。这个场景在当时并未引起太多关注——它只是一次技术验证,不是产品发布,也不是行业会议上的重大宣布。但它在机器人技术史上的意义,远超过许多被大张旗鼓宣传的突破。因为它证明了一件事:机器人可以不需要被手把手教导,它可以通过数字空间中生成的程序,自主地完成一项复杂的工业任务。
这个证明打开了一扇门。它意味着机器人部署的地理约束被打破了——编程工程师不需要在机器人旁边,他可以在世界任何一个有计算机和网络连接的地方完成工作。它意味着机器人部署的时间约束被打破了——编程工作不再必须等到设备安装完成之后才能开始。它意味着机器人部署的技能约束被打破了——工艺知识可以通过CAD数据和仿真模型被精确传递,而不必依赖于示教工程师的个人经验和直觉。这些约束的打破,共同构成了机器人技术从现场技艺向工程专业转变的结构性条件。当然,这扇门在1990年才刚刚打开一条缝。离线编程系统本身还存在许多技术局限,仿真与现实之间的吻合度有待提高,软件的价格对于中小型制造商来说仍然高不可攀,不同品牌机器人之间的程序互操作性几乎为零。这些问题不会在一夜之间消失。但方向已经明确。
机器人从孤立的设备变成可集成的工作单元,这个转折的关键不在于机械本体的进化,而在于一种新语言的发明——一种能够将物理运动抽象为数学模型、将工艺知识编码为软件程序、将系统集成从现场手工劳动转化为数字工程设计的语言。这种语言的出现,使得机器人技术具备了向更广泛制造领域扩散的可能性。而这条扩散之路,将远比任何人预想的更加曲折。