UniDoorManip团队 投稿
量子位 | 公众号 QbitAI
搜集了328×204条数据,只为让机器人把开门这一件事做到极致。
这是来自北大董豪团队和北邮何召锋团队的新研究。
做到了开箱即用,不需要在现实世界重新微调,就能操控房门、车门等各种能想到的门。
无论是普通的圆形的门把手;
还是需要钥匙才能打开的储物柜;
甚至是开保险柜,对它来说都不在话下。
目前项目主页和论文都已上线,数据集和仿真环境的代码也已经开源。
所以,这个专门开门的机器人框架,都有什么厉害的地方呢?
开门任务新SOTA
这个框架名为UniDoorManip,集成了庞大的仿真数据集,并对真实世界的门操作机制进行有效的模拟。
与之前CMU的开门策略相比,该框架首次提出了一套规模与多样性兼具的仿真环境门类物体数据集。
通过收集大规模仿真数据实现对门类物体的操作,UniDoorManip利用门机制的特点训练出了跨类别的统一的开门策略。
为了测评机器人的实际表现,作者在最具挑战性的拉门任务上进行了实验。
之所以说最具有挑战性,是因为机器人需要在机械臂夹爪一直抓住把手不脱落的同时,保证机械臂自身的姿态以及底座的移动不影响开门的操作。
下表对比了在训练集和测试集下,UniDoorManip和baseline方案(比如强化学习以及一些启发性算法)把门开到45°的成功率,证明了该框架的有效性。
进一步地,为了进一步验证该框架在更大开门角度的鲁棒性,作者进行了进一步的实验。
结果在角度增大到60度时,该框架仍然保持了70%左右的成功率。
所以,在开门这件事上,这个机器人框架,或许真的是比人更加“见多识广”……
那么,UniDoorManip框架又是如何让机器人如何学会自主开门的呢?
像人类一样完成动作
我们不妨先想一想,人类在开门时是如何操作的?
在动手之前,我们先要准确找到门把手的位置,然后基于把手的不同形状,做出抓握和旋转操作。
受人类开门过程的启发,研究团队对整个开门操作进行了阶段性解耦,每个阶段均配备专门的操作策略决策专家。
通过整合各阶段专家的策略,形成了一套通用的开门操作策略框架,从而提高了机器人的操作效率和适应能力。
当然只有策略还不够,还需要有训练数据,才能让机器人学会不同情况的应对策略。
所以,为了提升机器人应对不同环境的通用性,研究团队构建了一套庞大的仿真数据集,在模拟环境中再现多种复杂开门场景。
以往的数据集比如DoorGym和PartNet-Mobility缺少类似门这类型的物体,因此作者基于现实生活中常见的拥有类似开门机制的物体,构建了一个大规模的仿真数据集urdf模型。
该数据集包含了六类物体——门、窗户、保险箱、车、橱柜以及冰箱。
同时,该数据集利用部件组合的特点,先构建把手和门板的数据集,再进行装配组合,保证了数据集的易用性和可扩展性。
到目前为止,该数据集包括328个门板和204个把手,可以组装成8000多个的urdf(统一机器人描述格式)模型。
目前作者团队正在对该数据集进行进一步的扩展,以覆盖更多操作机制更加复杂的物体。
为了更加贴近生活中场景开门场景,作者对UniDoorManip开门机制进行了专门设计,保证只有按压把手完成后,才能把门推开。
由于仿真环境中碰撞计算的不稳定性,直接使用门闩去控制门锁的开关容易导致容易门闩和门板之间出现穿模的问题。
而真实世界中当人们去拉开一扇锁住的门时,门闩会在门板上产生与人的拉力相反的平衡力作用,使得门板保持静止。
考虑到这个问题,作者采用外加反抗力来替代门闩的特性,从而模拟了真实场景中门锁的机制。
解决了和真实场景的差异,还有一个问题是,由于开门过程整个动作空间非常大,直接采用端到端的策略不可行。
作者将开门过程分解成了三个阶段,各自得到一个通用的操作策略,再整合到一起,并通过反向训练的方法克服阶段中间策略转换的状态不匹配问题。
- 初始阶段,模型基于输入的观测点云预测了视觉可操作性先验Affordance,该视觉先验指引机器人去抓住把手上能够使得开门成功率最高的位置;
- 第二阶段,作者采用了生成器与判别器的框架,生成器采用条件变分自编码器(cVAE)的网络结构去生成下一步可执行的动作,而判别器则基于当前的点云以及机械臂状态的观测,对生成的一系列动作进行成功率打分,最后执行得分最高的动作。该阶段需要保证输出动作的策略能够泛化到各种各样的操作机制,从而将门解锁。
- 最后阶段采用了与上一阶段类似的架构,模型输出闭环的动作来不断将门拉开,这里输出的动作既能够保证稳定的抓住门把手不脱落,又能防止机械臂自身不与门有碰撞。
论文地址:
https://arxiv.org/abs/2403.02604
项目主页:
https://unidoormanip.github.io/
GitHub:
https://github.com/sectionZ6/UniDoorManip