编者按:
软体机器人是一种使用空气驱动的新型柔韧机器人,可以通过主动改变自身形状和尺寸来完成很多传统刚性机器人很难完成的特定任务。同时,由于本身使用了弹性材料,软体机器人更适合于一些例如人机交互等对安全性要求较高的应用场景。所以软体机器人是近年来的研究热点之一。
但是,软体机器人的设计却非常复杂,很大程度上依赖于设计师个人的经验。本文中,微软亚洲研究院研究员张译中将为大家介绍了一种基于物理仿真的软体机器人自动化设计方法,可以大大降低机器人的设计成本。
还记得电影《超能陆战队》中那个萌萌的充气机器人大白么?身高两米六,而放气之后却小到可以塞进背包,能文能武,人畜无害。大白是艺术家梦想中气动软体机器人的样子,而科学家们正在将其变成现实。
软体机器人是近年来机器人领域研究的热点之一。许多仿生机器人都是由弹性材料制成,弹性体具有低硬度、大形变的物理特性,由弹性材料制成的软体机器人具有很高的生物相似性。例如由硅胶制成的气动弹性夹持器,对各种形状的物体具有广泛的适用性,在工业中获得了广泛的应用。
然而,软体机器人的设计却是一个充满挑战的工作。普通刚性机器人可以视为若干个通过关节连接的刚体,因此其运动的变量较少。而软体机器人是个连续的弹性体,处处可以形变,而且会受到其内部结构、材料属性、驱动方式等因素的影响,这些因素还会相互影响,使得软体机器人的设计非常困难。因此,目前软体机器人的设计还非常依赖设计师的经验,即使是一些简单的动作也通常需要借助大量实验来达成目标效果。
软体机器人自动化设计流程图
为了降低软体机器人的设计成本,我们提出了一种基于物理仿真的软体机器人自动化设计方法,方法的流程如上图所示。只需要给定模型的初始形状,以及形变之后的目标形状
,我们的方法就可以自动对模型的形变进行分析,从而计算出一个包含空腔结构
(气囊)
的三维模型。向空腔中充气使模型膨胀,并结合材料的分布使得形变呈现各向异性,从而实现我们想要的形变。设计出的模型可以通过多材料3D打印制作出来,并用气动系统来控制,从而制作出我们想要的软体机器人。
算法基本原理
气囊的充气过程类似于吹气球,充气会使得模型的体积膨胀。如果气囊由均一材料构成,气囊膨胀就会相对均匀。如果气囊是由非均一材质构成的,那么气囊的膨胀会受到材料分布的显著影响。上图所示的三个圆柱都是软材料与硬材料混合而成,在未充气的状态下,其形状都是相同的。然而由于硬材料分布的不同,圆柱在充气状态下其形状产生了显著的差别,硬材料使形变产生显著的各向异性。基于上述观察,我们通过观察模型体积的变化,在柔性体内部生成出若干个彼此独立的气囊,每个气囊都通过独立的气道连到模型的表面上,使每个气囊都能够独立控制,从而控制模型的总体形变。而环绕气囊周围的弹性膜,则通过各向异性对形变进行更加精细的控制。
我们算法主要分为两个步骤,第一步——生成几何形状,第二步——优化材料的分布。在第一步中,我们区分模型的刚性部分和弹性部分,从而划分空腔,并沿空腔表面生成网格状结构。第二步中,我们对模型的形变进行物理仿真,并优化网格结构中的材料分布。通过这两步计算出来的模型,可以实现我们需要的形变。
几何结构生成
在我们的算法中,系统的输入是模型的初始形状以及形变之后的形状,两者都是用相同拓扑结构的三角网格表示。这些三角网格只描述了模型的外观,我们的算法则需要通过对三角网格形状进行分析,从而计算出内部结构。这些内部结构包括刚性区域、气囊、以及环绕气囊的网格结构。
我们首先对静止状态的模型生成四面体网格,作为整个模型体空间的离散化。由于此时还不知道模型的内部结构,我们先假设模型是充满弹性材料的实心模型并对其进行形变,然后根据每个小四面体体积变化对模型进行分割。因为输入的三角网格拓扑结构相同,要获得在各形变目标下的四面体网格,只需要将静止状态四面体网格的表面各点形变到目标形状,其内部各点就能以连续弹性体的方式通过物理仿真进行形变。这样我们就得到了在不同目标形状下模型各处的体积变化情况。
上图的Target 1和Target 2是两个目标形状模型体积变化情况,红色表示大形变,蓝色表示几乎没有形变。可以看出,不同的目标形状下,模型的大形变部位有明显区别,我们根据形变对模型进行分块。如果某个区域在所有的目标形变中形状都不发生变化,那么该区域是刚性区域(上图Segmentation中标记为黑色的区域),我们直接将这些区域设置为硬材料,其余都是会产生形变的区域。由于充气会使模型体积变大,因此我们将该过程逆向思考,如果某区域的体积发生膨胀,则该区域应当设置气囊,才能实现让其体积增大的目标。但如果某体积膨胀的区域在不同目标形状下,膨胀的形状不同,则需要将该区域进一步分割,以实现不同的膨胀。最后给每个区域生成三角网格,作为气囊的表面(上图Chambers)。
气囊充气会使模型局部产生总体均匀的膨胀,为了对膨胀进行更精确地控制,我们需要在气囊表面生成网格结构(上图Wireframes),使得模型膨胀具有各向异性;而为了能够让各向异性产生最大的效果,我们希望网格结构能沿着拉伸方向分布。因此,我们首先计算形变过程中气囊表面的主应变方向场(上图Directional field),在这个场的指导下生成四边形网格(上图Quad mesh),最后以四边形网格的每条边为指导生成网格结构。这样既可以保证网格分布均匀,又能够与方向场保持一致。
材料分布计算
有了模型的几何结构之后,接下来就要计算材料应该如何分布才能使充气时形变具有各向异性。均一材质的气囊在充气时会向各个方向总体均匀膨胀,但如果材料本身具有各向异性(比如一个方向硬,另一个方向软),那么膨胀在容易拉伸的方向会更加明显。我们生成网格结构时已经与模型的拉伸方向进行了对齐,因此如果将材料优化限定在网格结构中,而其余部分用弹性材料填充而成,这样材料优化能够最大程度的符合材料各向异性的要求,尽可能达到最优的结果。
我们使用的3D打印机支持两种基础材料混合打印。这两种材料杨氏模量相差约1000倍,若将其按照一定比例混合,可以创造出更多介于两者之间的材料。因此我们在物理仿真的过程中,以每个气囊的气压,以及网格结构内每个边的杨氏模量为变量,以充气之后的模型与目标形状最为接近为目标,对变量进行优化。这样优化出来的材料分布最符合我们需要的各向异性的要求。
模型的制造与控制
有了模型的几何形状及材料分布之后,模型就可以通过3D打印来制造了。我们使用Stratasys Connex350两材料混合3D打印机,选择TangoPlus作为弹性材料,VeroBlack作为硬质材料,打印时将其混合则可以制作出更多不同弹性的材料。然而由于模型的空腔在打印时会被塞满支撑材料,这些材料需要再打印完成之后再手工去除,因此没有办法一次成型打印。所以我们只能在打印之前对模型进行切分,分块打印完成之后再用502胶将其粘成一个整体。上图就是心脏模型切分打印的各个部分。
微软亚洲研究院有一套原本用于人机交互的气动设备(上图),我们对其进行了改进。每个气囊通过气管连接两个电磁阀,一个与高压气泵联通,另一个与大气联通。电磁阀通断通过单片机由电脑直接控制,这样就可以对模型的运动进行编程控制。
通过这套方法,我们制作了多个气动模型。上图(左)的气动机械手能够实现物体的夹持;上图(中)的青蛙模型包含一个气囊,充放气能够让其像真青蛙那样呼吸;上图(右)的四足动物包含6个气囊,其协同充放气能够让模型在地面上爬动。更多的结果在视频中可以找到。
总结
我们提出了一种基于物理仿真的软体气动模型自动化设计方法。只需要给定模型的初始形状,以及形变之后的目标形状,我们的方法可以自动对模型的形变进行分析,从而计算出一个包含空腔结构的三维模型,并可以通过3D打印将其制造出来。这套方法为软体机器人的自动化设计提供了新的思路。
由于气动软体机器人使用弹性材料制成,其安全性比刚性机器人要高很多,因此特别适合人机交互的应用场景,比如机器人保姆、机器人管家。也许在不久的将来,电影可以变成现实,大白就将成为我们每个家庭的一员啦。