文章目录
-
- 协作机械臂够用了吗/li>
- 怎样才算自适应机械臂/li>
-
- 适应操作对象位置的不确定性
- 适应复杂外部环境的干扰
- 适应类似任务的快速迁移
- 什么让自适应成为可能/li>
-
- 力控技术
-
- 用位置来控制力 ——
- 用关节电流控制力 ——
- 关节力矩传感器 ——
- 关节力矩加末端六维力传感器 ——
- 整机力控算法 ——
- 层级式智能
-
- 非层级智能 ——
- 智能的底层、中层与高层 ——
- 从简单到复杂,从快到慢 ——
- 真正发挥人工智能的优势 ——
协作机械臂够用了吗/h2>
工业机械臂的应用已有六十多年的历史,在各种各样的产线上都能找到他们的身影。传统的工业机械臂追求快速、精确的位置控制,它们能代替人工完美胜任那些靠“轨迹”就能定义的工作,比如把A处的东西移动到B处、比如在工件上切割一个圆形、比如往汽车外壳上喷油漆……事实上,在这一类工作上,机械臂依靠成熟的硬件设计和电子控制系统,完成任务的质量和速度都远超过人类。
怎样才算自适应机械臂/h2>
随着技术的发展,新一代的机械臂势必要跳出“协作”的框架,而真正从本源上去改进传统机械臂的不足:它需要能够在不牺牲性能的前提下具备本质的安全性;能够像一个学徒一样迅速理解并独立完成一项新的任务;能够完成那些传统机械臂不可能做好、但如今因为人工的紧缺或者工作环境的恶劣而急需被自动化的工作。一个能达到这些要求的机械臂,需要的不仅仅是与人协作的能力,更是自身对复杂环境与复杂任务的适应能力。因此,我们将新一代的机械臂定义为“自适应机器人”(Adaptive Robot)。
自适应是一个比较抽象的词,但也没有一个词能比它更准确地描述新一代机器人所具备的特性了。传统的机械臂几乎没有“适应性”可言——它们在工作时依赖于许多假设的成立,比如工件总是会在某个特定位置摆成某个姿势、机械臂工作时周围绝对不会有任何人任何东西来打扰它;即使加上了工业视觉,机械臂对工业视觉的精度要求也非常高,所以对每一条产线每一个工件,工业相机的标定、环境光的设置、视觉算法等都需要繁复的调整;即使加入了碰撞检测,机械臂也只是在检测到碰撞的时候停止一切运动,而不可能继续完成手头的工作。对种种假设的依赖决定了现有的机械臂每在一个产线实现一个应用都需要专门的人员花费大量的精力和金钱来部署。
针对这种种让人觉得机械臂依然“很蠢”的不便之处,我们认为自适应机器人需要满足以下三个特性:
- 适应操作对象位置的不确定性(Tolerance for position variation)
- 适应复杂外部环境的干扰(Great disturbance rejection)
- 适应类似任务的快速迁移(Transferrable intelligence)
适应操作对象位置的不确定性
与传统机械臂不同,我们人类的手臂在“定位”这件事上是很弱的。如果闭上眼睛、只依靠所谓的“本体知觉”(即肌肉和关节的感觉),研究表明人手的定位误差能有5厘米之多。然而即使闭着眼睛,大部分人都能够轻松把钥匙插进门锁孔里,这显然不是靠“定位”做到的。并且,大部分人洗碗刷锅也不需要眼睛死死盯着锅碗瓢盆;不管它们在水池里是怎样的姿态,人手都可以依着它们的形状在正确的方向施力、把每一个角落都洗干净。一个自适应的机械臂需要具备类似人手在完成这些工作时的能力。即使工件的位置信息不够精确、或者因为某种原因在加工时产生了位移和姿态的改变,机械臂都能够通过与物体接触得到的信息及时调整末端操作器的位置和对外界施力的大小方向。
适应复杂外部环境的干扰
虽然在定位上非常弱,但人的手臂却具有很强的抗干扰性能。人可以稳稳把一杯水从一个地方拿到另一个地方,这个过程中别人推他的手或者手臂,这杯水都不会洒出来。清洁高层建筑外墙的“蜘蛛人”,在强风中、摇晃的平台上依然能够很好地完成这项工作。自适应机械臂同样应该具备这样在一定程度的外部干扰下仍然能够完成特定任务的能力,降低部署时对环境的要求、替代人类完成像高空外墙清洁这样复杂且危险的任务。
适应类似任务的快速迁移
毫无疑问,人类的“技能迁移能力”是惊人的:学会了插一种类型的接插件,就能学会USB、miniUSB、microUSB、typeC、lightning等等各种各样的接插件,进而学会拼乐高;学会了转瓶盖,就能学会转各种大小各种样式的瓶盖,进而学会拧螺母;学会了按一种开关,就能学会按会反弹的、不会反弹的、杠杆型的、船型的各种开关,进而学会弹奏键盘乐器……自适应机械臂也应该在“学会”抛光某个型 的手机背板之后,能够很快学会抛光各种型 的手机背板,再以很小的努力就学会抛光汽车外壳、打磨木制家具。在技能相似的任务之间快速迁移,是自适应机器人的核心能力。
用关节电流控制力 ——
用位置来控制力很多时候是不得已而为之——机械臂本体生产商出于安全考虑,不会开放位置控制以外的回路,即使开放,刷新频率也比较低。对于开放电流控制的机械臂而言,另一种常用的力控算法是用末端的六维力/力矩传感器加关节电流控制来实现。通常,电机的输出力矩与输入电流的比值是一个常数,因此电流控制可以近似于关节力矩控制;然而由于减速传动机构的存在,这个近似是非常粗糙的。当我们需要末端施加一定的力时,我们算出关节需要施加的扭矩并换算成电流,这时每个关节实际输出的扭矩与我们的要求会有不小的偏差;于是控制器只好根据测到的末端的力来调整指令,接着每个关节的电流再做相应调整……显然,用每个关节不甚准确的扭矩去控制末端的力/力矩,控制回路必然需要做更多的调节,因此系统的响应很难做到足够快;同时由于误差的存在,机械臂本身的动态特性没办法被很好补偿,它的稳定性和运动精度也比较差。
由于一直以来硬件的限制,整机力控算法是一个业界少有人涉足的领域。虽然在论文里相关理论已存在许多年,但论文里永远只有最美最基本的描述;许多最新的研究结果甚至没有被发表出来。只有立足于为力控专门打造的硬件基础上,我们才能真正关注到每一处实现的细节,真正将理论落到实处——这一过程是远复杂于理论本身的。
层级式智能
高性能的力控技术只是第一步,在力控技术之上,机械臂需要知道如何结合其他信息、有效地使用这项能力。前面我们说,层级式智能是完整发挥力控技术潜力的一座大厦——那么什么是层级式智能呢/p>
非层级智能 ——
在讲层级式智能之前,我们先来看看非层级式的智能。这几年随着深度学习的火热发展,有一批学者和企业希望将深度学习的方法也引入到机器人的应用中。他们对机械臂采取了被称为“end-to-end training”的方法:比如说拧一个瓶盖,算法只关注机器人的动作距离成功拧好瓶盖有多远(通过原始图像和关节位置),深度神经 络的输出直接就是机械臂每个电机输出的扭矩;用这种方法,我们对机械臂运动学、动力学模型的依赖相对减小、机械臂的力/位置控制算法也不需要做了。
用这种方法教会机械臂去完成一些任务,效果还是很不错的。然而众所周知,训练深度神经 络离不开大量的数据:要么需要机械臂运行很多很多次以采集足够的数据、要么需要大量机械臂同时训练来减少数据采集的时间——这个难点是显而易见的,研究人员也提出了一些优化的方法。即使抛开这一点,我们认为end-to-end training至少还有以下几点局限,使它难以得到实际应用:
第一,训练的结果只能适应特定任务、特定环境、甚至特定的机械臂,不具备迁移性;每在新的地方接到新的任务,我们都需要对机械臂进行重新训练或者一定程度的再训练。
第二,外界的干扰、发生意外时的安全机制,这些对于机械臂的训练结果而言都是边角案例(Corner Case)。以完成任务为目的训练的深度神经 络难以应对过程中可能有的外界干扰,也很难保证机械臂运行过程中周围人的安全。
第三,用这种方法可以做一些简单任务,比如拧瓶盖、挂衣服、把积木放进对应形状的孔里等等。然而,如果让它去做抛光、擦窗户这样稍微复杂、步骤比较长的任务,或者套装轴承这种可行解非常少的任务,它是很难训练出一个深度神经 络模型来掌握这些技能的。
智能的底层、中层与高层 ——
忽略层级直接做end-to-end训练,似乎也不是我们人类掌握和运用技能的方法。比如说擦窗户这个事情,我们会先识别窗户玻璃的边界,然后手拿湿布在玻璃上一边来回移动、一边往垂直玻璃的方向施力以增加与污渍之间的摩擦力;同时确认玻璃的每一处都有被擦到。这个过程中,人需要调用自身很多的能力,有的是有意识调用,比如对玻璃和污渍的识别;还有的早已“编码”在潜意识里,人根本不知道自己正在使用这样的能力,比如对手臂移动和施力的控制。尽管不自知,但每时每刻需要往哪条肌肉发送多少电信 这样的问题,负责思考用什么轨迹擦窗户的“有意识的大脑”从来不需要去思考。
我们认为机械臂的智能也应该是类似的,负责识别哪里是窗户玻璃、思考应该怎么擦玻璃的那部分智能,并不需要知道每时每刻机械臂的每个关节应该在什么位置或者应该施加多少电流,甚至就连垂直玻璃表面用力然后来回移动的这个动作也已经学习在了机械臂的“潜意识”中。底层的智能就像潜意识般控制着手臂的基础运动,中层的智能编码各种基础运动的不同序列,而高层的智能负责认知、理解、规划等等复杂的智能——我们把这样的智能称为“层级式”智能。
在层级式智能的体系中,每一个层级相对独立,专注在自己控制/规划/思考的领域。底层智能无法直接影响顶层智能,但顶层智能的实施依赖于底层,顶层对底层起到指导、调节的作用。另外,每一层的智能通常只需调节直属下一层,而不需要跨级下达指令。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!