新技能,机器人可通过自带的 CAD数据实现自我维修
2020-04-16编辑部编译
编辑部编译
如今,越来越多的机器人开始走向家庭场景,化身我们的生活好帮手。但当它们出现故障时需要花费大量的维修成本,能不能畅想一下让机器人实现“自我维修”?最近,东京大学的科学家们提出了一种新方法,当机器人身上的螺钉出现松动时,机器人可以通过自身带有的CAD数据精准计算出松动螺钉的位置,进而使用螺丝刀进行拧紧松动螺钉的操作,实现机器人的自我修复和自我拉伸。
在本文中,我们提出了一种用于机器人使用驱动装置拧紧自身螺钉的方法,该方法可以实现机器人的自我修复和自我拉伸。对于机器人来说,拧紧自身螺钉有两个困难。首先,需要精确计算螺钉位置,当使用摄像机对可视图像进行计算时,观测误差非常大。机器人的优点是它具有自身身体的CAD数据,基于此,它便可以利用自身的CAD数据计算出精确的螺钉位置。其次,由于在拧紧自身螺钉时所形成的环闭合度很小,无法解决反向动力学问题,因此机器人有时无法移动螺丝刀以使其绕螺钉旋转。为了解决这些问题,我们提出了一种新方法,可以在无法解决反向动力学问题的情况下,通过重新抓住螺丝刀来实现拧紧动作的生成。通过这些方法,类人机器人PR2和HIRO通过拧紧自身螺钉实现了自我修复和自我拉伸。
介绍
随着技术的不断进步,类人机器人(Humanoid robots)有望在家庭环境或灾难现场进行持续性工作,然而,机器人的硬件有时会出现故障,需要维修。因此,对于类人机器人来说,掌握自我修复的方法至关重要。我们人类可以通过视觉信息察觉到自己的异常情况,进而计划修复,并在需要时使用适当的工具执行该计划。类似地,我们希望类人机器人自己能够修复自己的身体。对于机器人来说,有时会出现螺钉松动需要修理的情况。因此,在本文中,我们主要研究的是机器人自己拧紧松动的螺钉进行自我修复的情况。另外,机器人可以通过拧紧螺钉来实现自我伸展,因此我们的研究也将重点放在机器人的自我拉伸上。
对于包括类人机器人在内的机器人来说,它们的优点之一是具有自己的软件/硬件设计信息。基于此,机器人通过使用自身描述硬件信息的CAD数据,比基于视觉的计算更精确地实现了螺钉姿势的计算。STEP文件作为CAD数据的一种格式,被广泛地用作中间文件,因此,在该研究中我们也使用这种格式,使用FreeCAD从STEP文件中提取每个部分。
当对一个外部对象而不是机器人本身进行拧紧螺钉的操作时,该机器人可以相对于这个对象进行移动,但在拧紧自身螺钉的情况下,反向动力学的可解性由于连接所形成的环封闭程度小而受到很大限制。因此,在本研究中,当反向动力学问题无法求解时,可以通过改变抓握姿势而不改变工具的姿势来解决这一问题,我们将其称之为重新抓取。结合这些方法,我们的目标是使机器人在没有任何帮助的情况下拧紧自身的螺钉。
相关研究
实际上,关于机器人自我修复、自我治愈或自我安装的话题已经得到了广泛研究。一些模块化机器人可以进行自我重新配置,但是,模块化机器人在强度、精度以及机械和电气稳定性方面具有一定的局限性。为此,研究者们还开发了自我修复系统的其他解决方案,例如对螺钉本身的机械改进或SH(自修复)软材料的改进。
但是,很难将这些机械或材料合并到现有的机器人中,因为这样的改造工作需要大量的成本和工作。因此,对于机器人来说,最好的选择就是像人一样用手来修复自身,特别是该机器人是类人机器人时就再好不过了。关于手动拧紧螺钉的研究,专家们已经开发了能够使用机械臂或通过人机交互拧紧螺钉的系统,但是在这种情况下,需要将螺丝刀固定在机器人身上。
对于拧紧螺钉的任务来说,关键问题在于需要有关螺钉姿势的准确信息。在诸如拧紧螺钉或孔内钻眼等需要精确信息的任务中,专家们提出了使用力—扭矩传感器的方法,或基于视觉的方法。但是,直接从力—扭矩传感器计算出螺钉的姿势显然是不可能的。因此,需要能够插入螺钉或孔内的器具,并且基于视觉的系统的性能取决于机器人摄像机的性能,而摄像机并非总是足够的精确,可以计算出精确的螺丝姿势。
拧紧螺钉的系统概述
在图2中,我们展示了拧紧螺钉系统的概述。机器人考虑使用一些触发器来帮助拧紧自身的螺钉。例如,作为常规检查,机器人会检查自己的身体是否出现异常,或者,通过机器人某种超出理想姿势的方式以及其他人的指示来发现自身松动的螺钉。然后,根据该触发器的相关信息,机器人将计算出需要拧紧的螺钉的大致位置(A),而借助自身的CAD数据,机器人可以计算出需要拧紧的精确的螺丝姿势(B)。在计算出精确的螺丝姿势之后,机器人将生成拧紧动作,并在需要进行拧紧操作时重新握紧螺丝刀(C)。
松动螺钉的感知
接下来,我们将展示两个感知松动螺钉的示例。一种是机器人自己感觉到松动的螺钉,另一种是机器人通过交互,从其他人的指示中感知到松动的螺钉。
机器人自己感知到松动的螺钉
机器人可以通过使用关节编码器计算关节角度来计算机器人每个连接处的姿势。螺钉松动导致的不良结果很多,一个很明显的例子是,连接处的姿势偏离了理想姿势,如图3所示。更为详细地说,应用一个机器人自身的掩码图像,其黑色区域代表着机器人,其白色区域代表使用RGBD摄像机观察到的RGBD图像的其他区域,那么,就可以计算出仅描述机器人的RGBD图像。然后,机器人从该RGBD图像中重建点云,获得有关自身的点云。如果其中的某些点不在理想状态中,则将该连接处的姿势确定为脱离理想状态。这意味着此处可能有松动的螺钉,因此该信息将被发送到图2中“螺钉姿势计算器”的下一步操作中。
根据他人的指示感知到松动的螺钉
当然,机器人不能全靠自己感知到所有松动的螺钉。因此,如图4所示,通过交互,根据别人的指示让机器人获知自己有松动的螺钉也是很重要的。在这项研究中,我们可以通过手指的指向或是类似“有一颗螺钉松了”的声音让机器人获知松动螺钉的所在位置。我们使用OpenPose实现了对人的姿势进行计算,然后,机器人会感觉到有一个松动的螺钉,并以手指所给出的指向位置大致计算出该松动螺钉的位置。接下来,机器人会将此信息发送到图2中的“螺丝姿势计算器”的下一步操作中。
螺丝姿势的计算
螺钉判断
当发现有松动的螺钉后,我们的目标是检测到距离指定位置最近的螺钉。首先,描述一种算法来判断组成机器人的这个部分是否是螺钉。STEP文件中的每个部分都是以shell为单位表示的,每个shell都有组成这个部分的边和顶点的信息。我们可以用如图6所示的信息对螺钉进行相应的描述。
计算螺钉姿势
当机器人找到了松动的螺钉之后,接下来,就需要计算出准确的螺钉姿势。如图7所示。
借助螺丝刀拧紧自身的螺钉
当机器人掌握了螺钉的所在位置以及具体姿势后,抓住螺丝刀,对反向动力学问题进行计算,以使螺丝刀的尖端位置与螺钉的头部位置相匹配,更好地完成拧紧自身螺钉的操作。
结论
在本文中,我们通过研究机器人拧紧自身螺钉的方法,解决了机器人进行自我修复和自我拉伸的问题。总体而言,我们的主要研究成果如下:
·我们通过研究类人机器人拧紧自身松动的螺钉的方法,提出了一种机器人进行自我修复和自我拉伸的方案。
·我们提出了一种利用机器人自身CAD數据计算精确螺钉姿势的方法。
·我们提出了一种方法来判断是否可对螺丝刀进行重新抓紧,以解决机器人在拧紧螺钉时由于连杆闭合度小产生的反向动力学问题。
·我们提出了一种在考虑重新抓握螺丝刀的情况下,通过图形搜索生成拧紧动作的方法。
为了验证这些方法的有效性,我们利用一个真实的类人机器人来进行自我修复和自我拉伸的实验。为了使该系统以后具有更好的泛化性,我们想要建立一个统一的感知松动螺钉的方法。当然,掌握松动螺钉的后续进展情况也是很重要的。当机器人拧紧螺钉后,它就会记住这个螺钉以及这一系列的操作。通过持续地存储信息,机器人就会知道哪些螺钉容易松动,哪些不会松动。除此之外,由于实际抓取姿势和期望抓取姿势不同,在抓取螺丝刀时的抓取姿势往往误差较大,在本文中我们忽略了这一点。因此,当机器人抓取螺丝刀之后,需要观察机器人手臂的抓取姿势,以便对抓取姿势进行更好的计算。可以说,本文提出的拧紧系统中所涉及的方法对于类人机器人维护自身系统来说具有很大的作用,将帮助它们更好地帮助人类完成协助性工作。