Anthony教授:探索未来机器人的容错控制技术算法
新浪科技讯 8月20日消息,2018世界机器人大会拟于8月15日至19日在北京亦创国际会展中心举行。大会以“共创智慧新动能 共享开放新时代”为主题,由“论坛”、“博览会”、“大赛”、“地面无人系统展示活动”四大版块构成。 本届大赛汇聚了来自美国、俄罗斯、德国、日本、以色列等全球近20个国家和地区的1万余支赛队和数百名顶尖专家,共计超过5万多名参赛选手同台竞技。
美国科罗拉多州立大学教授Anthony A Maciejewski发表了题为“探索未来机器人的容错控制技术算法”的主题演讲。
以下是演讲全文:
非常高兴能够来到这里演讲,两年前我来到世界机器人大会的时候确实在展会当中感到非常震惊,看到这么多的机器人公司有这么多的应用,今年再来的时候我发现技术的进展还是非常迅速的,我也花了很多时间录了小视频,后面会用到演讲当中。
“为失败而进行设计”,这个题目看起来有点蹩脚,我们都说不要有任何实验的失败,我们希望花更多的时间创造可靠的产品,但我想同大家分享的是,如果你已经注定知道这个过程当中一定会有失败该怎么办呢?有些危险的环境当中要让机器人进去,其中一个典型的例子就是福岛核事件。现在的问题是,这些机器人是不是会失灵?这样的情况下一定会失灵,只是什么时候的问题,如果机器人真的失灵的话怎么办?我研究的就是这个问题。
危险的环境当中,比如火灾和空中,人类无法去维护,也无法去救助这些机器人。还有一些对安全要求非常高的领域,比如手术。我们要考虑的是如何在设计机器人的时候把失败考虑进来,任何系统当中设计必须要有一定的错误容忍度,也就是设计当中加入一些额外的关节,保证如果主零件出了问题总有一些额外的部件,可以保证其正常运转,也就是去做一些冗余的东西。
机械臂的设计是遵循某些模式的,设计的时候要考虑要做什么动作。可以看到如果一个机器人只是在二维的空间拣东西的话,只需要二维的自由度就可以了。考虑到它的转向的话就又需要加上一个关节,也就是三个关节。考虑到整个空间定位的话就需要再加一个关节,而且这个关节和之前的三个关节是不太一样的,除了X轴Y轴之外还有Z轴。现在大多数的机器人要想完成协同工作的话至少要有六个自由度,这也是这些任务所需要的。
我们来看展会当中的一些机器人,需要分拣一些东西,从一个地方拣到另一个地方。这个问题涉及到不同的维度,方向其实并不重要,大概是二维的运动。这个运动就需要增加一些自由度,这是涉及到几个定位的任务,也涉及到转向的问题,所以需要六维空间的自由度,考虑到它的速度、加速度等等,所以至少需要六个关节,也都是动能上的足够设计。
我们需要添加一些冗余的关节,如果看我自己的胳膊,基本上有七个自由度,包括肩部、肘部、手腕、手指,如果两只手在组装一件东西,它的维度就更多了,也有很多的关节控制两只手的行动,行走机器人也属于这一类,这种水下蛇形机器人也有很多关节,有些关节也属于冗余的。
我们已经看到了机器人增加了额外的关节来增加它的自由度,现在的问题是我们拿这些额外的自由度来做什么?这是带有四个关节的机器人,其实有几种设计方式,但我们要问的根本问题是,哪个设计方式是最好的?要谈最好的话,我们需要一种矩阵,能够对它进行测量,证明一个要比另外一个更好。而关于它的灵活性,需要一种衡量的标准,如果这里有非常简单的机器人,我们要对它的三个关节点进行控制的话,需要什么样的工具移动才能控制呢?每个关节点都需要有一个移动的矢量,以便构成总体的移动,这是我们对它的灵活性的测量。
可以使用数学机械学和代数的方法,如单一值的分解,通过单一值的分解可以使得我们断定,移动所有关节的方式当中,可以告诉你某些方向比另外一些方向更容易移动,也会告诉你什么叫做容易或者不容易移动,这些都是通过单一值来实现的,我们的工作当中使用最小的单一值。
大家可能会问,这个事情有多糟糕?如果做得不好的话可能会非常糟糕,完全失去了某个需要的方向,也就无法移动了。出现这种情况就做不了任何需要做的工作,有的时候可以看到这种关节移动非常的快。机器人的手腕可以移动得非常顺畅,但往回的时候就会快速转动。移动的时候速度很快,做得很好,往回推的时候手腕在两边转动,其实这是无效的运动,也就是配置当中有些问题使得移动不是那么顺畅,移动并不符合我们的设计,花了更多的能量,如果出现更多的移动基点可能导致在某些方向上无法移动,某些方向机器人是无法移动的,所以应该避免出现这种情况。不仅仅是机器人的手腕,肩关节也会出现这样的问题,因为机器人在一开始加速是很快的,这些问题都是需要避免的。
这是运动冗余的概念,怎样控制机器人?应该有两个组成部分:一个是用最少的运动、最少的移动满足任务需求,不管做什么事情,应该使用最少的关节满足任务的需求。另一个是内在的移动,需要把机械臂重新配置,以便能够保持在一个最佳的状态。我们需要期待预期出现的故障,并准备备选方案。希望能够发现哪里是最好的抓取地点和放置地点,需要在工作空间当中找到最好的抓取和放置地点,如果是做一个三度自由的活动,比如焊接的话,需要按照焊接的需求设计关节的移动,所以对抓取和放置的任务,我们需要看一看内部的移动。
这个机器人如果是在两个位置,距离更近的话运动就可以有很多其它的配置,太远的话就没有这么多的选择,所以有各种各样的关节能够实现这种配置。在这样的空间中是否有这些内在可能的配置,虽然可以进行运算,但非常昂贵,相关服务也非常复杂。这是比较简单的机器人,但是有三个自由度,服务都是非常复杂的,对它进行运算是非常困难的,更不用说七个自由度。
再来介绍一个具体的抓取和放置的任务,我们的能源署负责核燃料堆,要做的事情就是对核武器进行拆解。这是四十年代最早的核武器,它的中心有核燃料的核心,拆解的时候要特别小心,因为中间是钚元素,如果我们把这个核心拣起来的时候出现了故障,一定要有安全防范的措施,就是在没有人参与的情况下对它进行处理。
这是五个自由度的机器人,通过一个鸡蛋模仿钚的核心部分,运算告诉我们,最好的距离就是这样的距离。为什么这是最好的距离呢?因为这个机器人会有很多种配置可以到达这个位置,可以看到五个关节点,每个动作的时候配置的可能性,我们必须对它进行运算。
刚才大家看到模拟的是抓取和放置,如果是商业化的抓取关节,出现故障的话也会造成一些意想不到的结果。我们可以很快地看到一个机器人,进入抓取的地方,然后用商业的软件把这个物体放到需要处置的位置,带来的问题是关键点出现故障,现在正在向抓取位置移动,其它的关节还在做本来应该做的事情,机器人往后退可能造成进一步的危害。
如果是正常工作的话,可以正常把物体放在这个位置,但现在的问题是,这个过程当中我们没有告诉控制者了解这件事情,然后让它进行重新编程运算。能够这样做的话这种情况就不会往后退了,距离放置的位置会更近一些,但永远不要到达那个位置,因为这已经超出了工作空间,所以答案是必须要预期,可能会出现问题,所以要用另外一种配置来到抓取的地方。虽然第一个关节出现了故障,但可以实时调整,所以这就是故障容忍的控制方式。
传统的方式是发现了故障,然后要确定故障,并且去恢复,但那样就太迟了,必须要预期这种故障的出现。我们现在可以做些分析,给了我们任何机器都可以分析在什么工作空间当中有可能出现什么故障。黑色的部分是故障容忍的区域,只要在这样的区域内有任何问题都可以及时作出反应,调整重新编程。
刚才讲的是抓取和放置的任务,然后是六维的轨迹测试,这就更加复杂一些,因为我们要做的事情是要到达某个地方,如果是喷涂的话就要关注加速速度和轨迹。我们需要确保每个个体和能够控制的关节点相关的矢量,缺少了一个的话其它的可以恢复,不会造成太大的影响,所以我们可以做的就是优化。这是非常好的几何计算,所有矢量都是等距离分开,如果出现一个关节点故障,一个矢量消失的话,另外两个通过某种方式结合起来,而且能够恢复。所以从数学分析的角度来说,可以把左边这张图变成动力学的设计,也就是右手边的机械臂,主要是有三个关节。我们不需要额外备用的关节,正常使用的时候三个关节都可以,即便有一个出现了故障,另外两个也可以结合使用。
我们可以对比最糟的情况和最好的情况,如果没有这样的故障容忍机制的话,只要有一个关节出现故障就不能往某个方向移动了,所以一定要有这样的故障容忍机制。
这是能源署的实验室,这个机器人首先是让你看到它有很多在这个位置的配置,所以就是从抓取和放置的角度来看它的故障容忍。这个方盒子有几个边,可以到达每个角去触摸。第一次所有的关节都在工作,机器人会做这样一个装载的工作,然后要让三个关节轮流出故障,看一看它的轨迹,现在所有的关节都在发生作用,灰褐色的关节出现问题仍然完成了任务,包括肩关节和肘关节出了问题。
大家可能会说这不公平,故意把这些关节停止了,但实际上这是现实当中有可能发生的一些事情,而且是在动态的、有速度的情况下发生的。我们对这些关节进行随机的扩张,但这种任务总是能够完成,不管是哪一个关节出现问题,其它两个都可以完成任务。
最后的几分钟,和大家简单地谈一谈另外一种故障模式。刚才给大家看到的是最常见的故障,就是锁住了,关节点不再能动了,或者配置不再有效了,但可能有其它类型的故障,就是自由摆动关节故障,想要一个液压的机器人,可能由于重力就会自己掉下来,这样势能就小了。这和锁定关节的失灵是不一样的,因为锁定关节至少可以将它锁定,然后知道问题在哪里,如果是自由摆动的关节,其实这些关节并没有锁定,可能就会造成更大的损害。
自由摆动的关节失灵怎么办呢?我们需要一些其它的方式考虑这些关节造成的效果,之前可能还在正常运转,突然出了问题掉下来,也就是从蓝色位置变成了黄色位置。可衡量的指标是转动的角度,也可以看到持有的物体本身发生了什么变化,衡量这两点之间的距离,或者是看它的移动路径。要是避免冲撞和障碍,要看它的移动方式和配置本身是不是有问题。
总结一下,容忍失灵控制系统其实是有些特点的:不要用传统的方法来想这个事情,传统的方式就是找到了失灵方式再找解决办法来解决这个问题,我们要做的是预测这些最差的情况出现该怎么办,设计的时候要保证没有哪个关节是真正的关键关节,这样的话就可以保证绝对的安全。