让机器人更安全——(4.机器人的碰撞标准)

3/3/2017来源:C/C++教程人气:1095

(来源链接http://mp.weixin.QQ.com/s/Fd7iR6a9NesPtXVVLQLFYQ)

机器人也需要碰撞标准?

当我们评价一款车的安全性时,经常会以碰撞测试成绩作为一个主要的参考项。始于1997年的NCAP为提升汽车的被动安全性做出了巨大贡献,在此之前,由于没有明确的汽车安全设计和测试标准,导致各大厂商要不对安全指标不关心,要不就按照自己的理解来做,因此在九十年代末期进行的NCAP测试中,几乎所有车型的成绩都在3星以下,按照今天的平均水平来看的话是非常差的。

设计指导思想的差异,导致1998年款奥迪A6的碰撞成绩还不如2006年款标致207:

▲1998年款A6(C5),碰撞三星,中国市场上第一批圆头圆脑的A6L即源自这一代,至今还能在街上看到。

▲小巧的标致207。大约从2006年开始,市面上销售的大部分合资微型车成绩已经到5星了。

标准的进步促使厂商修改了产品需求和设计目标,从而为我们提供更为安全的汽车,让人们更安全的享受汽车带来的便利。

长期以来,机器人行业标准里有关机器与人之间如何安全交互的内容一直缺失,大部分都是“在使用机器人之前,应进行安全评估以保证人员安全”之类的模糊描述。

随着ISO 15066的出现,机器人行业第一次有了自己的“碰撞标准”。

在让机器人更安全(三)中,我们讲到协作机器人最重要的一种协作方式是Power and force limiting (功率和力限制),那么对于具备这一特性的机器人来讲,究竟把功率和力的大小限制到何等程度才算是安全呢?

既然协作机器人强调的是“人机”协作,那么很自然我们可以想到: 机器与人发生碰撞时,能够保证人体不受疼痛/伤害影响的值是才是安全的。

这看上去像是一句废话,但其实它传达了ISO15066的一个核心的理念:


if contact between robots and humans is allowed,and incidental contact does occur,then that contact shall not result in pain or injury.


要想获得这个安全的值,我们需要一个前提假设:符合碰撞标准的机器人能量最大值可以根据人类的疼痛阈值(pain sensitivity thresholds)计算出来。

要实现这个前提,我们需要:

人体模型(human body model)

人体各部位对安全的要求是不同的,需要分区域对待;

疼痛阈值(pain sensitivity thresholds)

以力(N)/压强(N/cm^2)/能量(J)的方式来定义或反映该阈值;

碰撞模型及计算方法

提供一个可用度和复杂度相对平衡的换算机制,这个机制结合上面的数据,就可以反求出机器人的运动限制;

根据以上信息,我们就可以得到一系列在设计、部署机器人时的限制数据,用于指导机器人的开发和使用。

ok,让我们开始探索人体吧!

人体模型与疼痛阈值

上图是乱入的,这里我们只要用到生物力学(biomechanical)的一些简单知识(生物学的不好,不知道是不是这么翻译。。。)。

ISO15066里用到的人体模型比较简单,只把人体划分为26个区域,有的区域会区分一下身体的前后,见下图中红点标识的地方,原图的清晰度不高,见谅。

▼▼ 看图说话,比比谁认识的医学名词多~

以上引用的Biomechanical数据来源于University of Mainz的一项关于协作机器人与人员碰撞数据的专项研究,这项研究中使用了100名身体健康的成年实验对象,分别对上述26个区域进行单独的疼痛测试,下面表格中的最大值是使75%测试人员开始感觉疼痛的值(节选):

▲在准静态和瞬态接触两种情况下,人体不同区域对于产生疼痛感时的压强和力的阈值。

这么多数据看起来有没有一种很头疼的感觉。

其实表格的内容很简单,就是整个实验过程的一个数据统计,把人体各部位在准静态接触和瞬态接触两种情况下所能允许的压强和压力分别列出来而已。这个数值,是人体开始感觉到疼痛的阈值(Pain Onset Level)。

例如,以胸部区域(Chest)为例,在准静态接触时,胸骨和胸肌所能允许的最大压强分别为120N/cm^2和170N/cm^2,最大压力为140N;而在瞬态接触时,以上数值最多可以乘以2倍(Multiplier,乘子)。

胸骨比胸肌所能承受的压强小,很容易理解,回想一下小腿骨前部磕到桌子时的感受。

没磕过的欢迎去尝试一下,其实也没啥,可以增添一些美好回忆。

上表中给出压强和力两个数值,是因为有些时候力不大,但是压强很大,反之亦然。

在UR机器人的宣传资料中,有这么一句话:


in a collision, the robot delivers less force than the 150 Newton.


50N的数值,基本上可以满足上面表格中绝大部分的情况,是一个相对安全的数值。 ok,数值有了,那么在部署机器人系统时,怎么换算成机器人的运动限制呢(速度/功率)?

计算运动限制

首先,对于准静态接触来说,可以直接通过机器人内置的测量机制(力/力矩传感器,末端力估计等)来判断机器人对外输出的静力是否超过限制。

对于瞬态接触,情况要稍微复杂一些。

由于涉及到碰撞,因此我们需要一个碰撞模型。在ISO 15066中把机器人和人员之间的碰撞用一个简化的非弹性碰撞模型来描述:

▲ 等效碰撞模型,A是碰撞面积;mH是碰撞区域中的人体有效质量;mR是机器人的有效质量,是机器人姿态和运动的函数;Vrel是二者的相对速度。

出于计算需要,我们还需要得到人体各部位的有效质量和有效弹性常数:

 人体不同区域有效弹性系数与有效质量,用于计算各区域所能承受的最大能量值。

(之后使用的数据和计算中,碰撞面积A为1cm^2)

对于每一个区域而言,碰撞时允许传递的最大能量可以用下式来计算:

其中,E是所允许传递的最大能力,Fmax和Pmax是上面提到的最大允许压力和压强,A是接触面积,k是弹性常数,将该式应用于上表,可以获得人体不同区域,引起疼痛时的能量阈值:

▲ 在人体各主要部位上引起疼痛的能量阈值。

但是能量这个东西不好理解,在机器人上也不好进行限制,因此我们需要把它进行一下处理,转换成机器人经常使用的参数:速度。

基于完全非弹性碰撞的假设,我们可以得到下列式子(对数学不感兴趣的同学可以直接跳过到后面  展望  的章节):

▲ 上述三个式子中,μ是two-body系统的折算质量,mH是人体的有效质量,mR是机器人的有效质量。

对于机器人的简化模型,可以使用下图来表示:

▲ 上图中,mL是机器人的有效负载,包括工具和工件,M是机器人所有运动部件的总质量,ω是旋转角速度。

联立A.2~A.5,我们终于可以得到机器人的最大允许速度:

应用式子A.6,我们可以计算出一个示例,来表示在接触面积为1cm^2时,机器人质量和最大允许速度之间的关系:

▲ 可以看到,如果机器人的运动有效质量为20kg(目前绝大多数小型机器人的质量都在20kg附近),接触面积为1cm^2,主要碰撞区域为手臂时,最大速度应不超过1.4m/s。

这个例子中,接触面积为1cm^2,而在实际使用中,接触面积应取机器人和人员面积较小的一个,面积越小,压强越大,这也是为什么协作机器人的表面都很圆滑,不会出现尖锐边缘的原因。

展望

ISO 15066目前只是一个TS(Technical Specification),还不是一个正式的标准(Standard),里面提供了目前所知最新的关于协作机器人的设计准则和安全标准,但是技术进步如此迅速,在以后的时间里根据最新的科研/产业成果更新内容的可能性很大。

完整读完上述内容的读者应该发现,ISO 15066提供的碰撞标准相对来讲是比较简陋的,对实际情况做了很多理想的假设和简化,这也是未来新的标准需要细化完善的地方。

除此之外,相对于机器人这样一个比较确定的系统,“人”的因素就显得非常多变。在人体模型和疼痛阈值研究中就发现,不同的人每个区域采集到的数据上下限差距很大,例如对于食指来讲,100个人平均阈值为58N,最低为35N,最高为102N。

而且该项研究仅适用于健康的成年人,不适用于体弱多病的人(sick people),不适用于儿童。

因此,整个机器人的安全工作任重而道远。

最后,贴两张人体疼痛测试的图片,更多图片见参考资料。

参考资料

Robotiq关于15066的介绍:ISO/TS 15066 explained

人体碰撞模型的研究报告(德文版):http://www.dguv.de/ifa/forschung/PRojektverzeichnis/ff-fp0317-2.jsp