前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前沿 | 从虚拟世界伸到现实的机械臂,靠摄像机就能玩转任何物体

前沿 | 从虚拟世界伸到现实的机械臂,靠摄像机就能玩转任何物体

作者头像
机器之心
发布2018-08-07 19:59:27
8160
发布2018-08-07 19:59:27
举报
文章被收录于专栏:机器之心机器之心

选自OpenAI

机器之心编译

OpenAI 训练了一个机械臂,能够非常灵巧地控制物体。据介绍,该系统名为 Dactyl,经过了完全模拟训练,能够把知识迁移到现实中,即使用 OpenAI 一直以来研究的技术把训练得到的知识应用到真实物理环境中。Dactyl 使用了 OpenAI 在 Dota2 系统 中使用的同一通用强化学习算法与代码。结果显示,没有对物理世界准确建模的情况下,在模拟环境中训练智能体并用它解决现实任务是可以做到的。

论文链接:https://d4mucfpksywv.cloudfront.net/research-covers/learning-dexterity/learning-dexterity-paper.pdf

视频内容

任务

Dactyl 是一个使用机械臂操控物体的系统。我们把一个方块或棱柱放在其手掌,然后要求 Dactyl 重置该物品的方向。例如,旋转方块,使其另外一面朝上。网络仅观察指尖坐标和三个常规 RGB 摄像头中的影像即可。

尽管几十年前人们就开发了首个机械臂,但长期以来,利用它们有效地操控物体一直是机械臂控制领域的一大难题。与其他问题(如移动)不同,使用传统机械臂技术实现灵活操控一直进展缓慢,而利用现有技术也很难操控现实世界中的物体。

用机械臂改变物体方向需要解决以下问题:

  • 在现实世界操作。虽然强化学习在很多模拟测试和视频游戏中都取得了成功,但它在现实世界中表现平平。我们在一个机械臂上测试了 Dactyl 系统。
  • 高维控制。与传统拥有 7 个自由度的机械臂相比,Dactyl 的机械臂有 24 个自由度。
  • 噪声和局部观察。Dactyl 要在现实世界中操作,因此必须解决噪声和传感器读数延迟问题。当指尖传感器被其它手指或物体遮挡时,Dactyl 只能收到局部信息。此外,许多物理方面的问题(如摩擦和滑移)无法被直接观察到,必须要对其进行推断。
  • 操控多个物体。Dactyl 要设计得非常灵活才能操控多个物体。这意味着我们不能使用仅针对特定几何对象的策略。

方法

Dactyl 学习完全在模拟中解决目标再定向任务,而无需任何人工输入。在完成训练阶段后,学习的策略可以在不需要任何微调的情况下迁移到机械臂。

视频内容

Dactyl 实现 50 次连续旋转测试最大值。

机械操作的学习方法身处一个两难境地。模拟的机械臂可以很轻松的提供足够的数据来训练复杂的策略,但大多数的操作问题不能实现精确建模,这些策略进而也不能应用到真实机械臂上。即使是对两物体触碰后的变化进行建模——这是操作中最基础的问题——也是一个活跃研究领域,目前仍未有被广泛认可的解决方案。直接在物理机械臂上进行训练可以让策略在现实世界的物理中学习,但今天的算法需要多年的经验来解决像物体再定向这样的问题。

我们的方法是域随机化(domain randomization),这种方法通过在模拟场景中学习而不是尽量现实化,且模拟场景通过设计提供了各式各样的经验。这给了我们最好的方法:通过在模拟中学习,我们可以通过扩展来收集更多的经验,通过不强调现实意义,我们可以解决模拟器只能近似模拟的问题。

OpenAI 和一些其他组织也表示,域随机化可以处理越来越复杂的问题——域随机化甚至还用来训练 OpenAI Five。现在,我们想要看扩展域随机化是否能够解决当前机械臂技术中无法解决的问题。

我们通过使用 MuJoCo 物理引擎构建了机械臂系统的模拟版本。这个模拟仅仅是真实机械臂的粗略近似:

  • 测量诸如摩擦力、阻尼和滚动阻力等物理属性是很困难的。随着机械臂的使用磨损,它们也会随之改变。
  • MuJoCo 是一个刚体模拟器,也就是说它不能模拟手部姿势或肌腱的拉伸。
  • 我们的机械臂只能通过反复接触来操纵物体,然而接触力很难被精确模拟出来。

通过校准参数来匹配机械臂行为能使仿真更加逼真。但在目前的模拟器中,许多这样的效果没办法被精确建模。

相反,我们在分布式模拟环境中训练策略,其中物理和视觉属性是随机选择的。随机值是表示物理系统不确定性的自然方式,也能防止对单个模拟环境的过拟合。如果训练出的策略能够完成所有模拟环境的任务,它就很有可能完成真实世界的任务。

学习如何控制

通过构建支持迁移的模拟,我们减少了在实际场景中控制机械臂完成模拟任务的问题,该问题非常适合使用强化学习进行求解。虽然通过模拟的手臂操作一个物体已经非常困难了,但是在所有随机物理参数组合下学习如何操作物体要更难。

为了泛化到不同的环境,如果相同的策略能在不同的动力学环境中执行不同的动作,那无疑会非常有用。但是大多数动力学参数(dynamics parameters)并不能从单个观察样本中直接推断出,因此我们使用一种带记忆的神经网络 LSTM,这种记忆机制使得网络能学习动力学环境。LSTM 相比于不带记忆的策略大约实现了两倍的旋转。

Dactyl 使用 Rapid 进行学习,Rapid 是近端策略优化的大规模实现,它允许 OpenAI Five 解决 Dota 2 任务。我们使用了与 OpenAI Five 不同的模型架构、环境和超参数,但还是使用了相同的算法和训练代码。Rapid 使用 6144 个 CPU 核心与 8 张 GPU 来训练我们的策略,且智能体在 50 个小时内大约获得了 100 年的经验。

对于开发与测试,我们针对具有嵌入式运动追踪传感器的物体验证了控制策略,其中该传感器能分离控制与视觉网络的性能。

学习如何观察

Dactyl 旨在能操作任意目标,而不仅仅是那些经过特殊处理以支持追踪的目标。因此,Dactyl 使用常规的 RGB 摄像图来估计目标的位置与反向。

我们使用卷积神经网络训练一个姿态估计器,该神经网络能从位于机械臂周围的三个摄像头获取视频流输入,并输出估计的目标位置与方向。此外,使用三个摄像头能有效解决图像模糊和遮挡等问题。我们再次使用领域随机化训练该网络,并在 Unity 游戏开发平台上进行模拟,该平台相比于 Mujoco 可以建模更广泛的视觉现象。

控制网络能在给定姿态估计的情况下再调整目标,而视觉网络能将从摄像头获取的图像映射到目标的姿态。通过结合这两个独立的网络,Dactyl 能在观察到目标后就对它做一些操作。

用于学习评估方块姿态的训练图像样本。

结果

出现的行为

当部署了我们的系统时,我们注意到 Dactyl 使用了丰富的「掌中灵巧操控策略」(in-hand dexterous manipulation strategies)集合来求解任务。这些策略也被人类所常用。然而,我们并没有明确地教过他们这些策略;所有的行为都是自动发现的。

视频内容

由Dactyl自动学习到的灵巧操控行为示例。

Dactyl 抓握类型(根据 GRASP taxonomy)。从左上到右下:指尖捏、掌捏、三指抓取、四指抓取、强力抓握和五指精确抓握。

我们观察到对于精确抓握,例如指尖捏,Dactyl 使用拇指和小指。人类更倾向于使用拇指以及食指或中指。然而,由于额外的自由度,机械臂的小指更加灵活,这也许解释了 Dactyl 为什么更钟爱用小指。这意味着 Dactyl 可以重新发现人类的抓握行为,但能将其进行调整以更好地适应其自身的极限和能力。

迁移能力

我们测试了 Dactyl 在丢掉它掌中物体之前可以实现多少次旋转,是超时,还是能成功实现 50 次旋转。在模拟环境训练的策略使机械臂能成功地在真实世界种成功地操控物体。

Dactyl 实验设置,包含机械臂、相空间运动追踪摄像机和 Basler RGB 摄像机。

对于方块操控任务,结合随机化的训练策略相比没有使用随机化的训练策略可以实现更多的旋转次数,如下所示。此外,使用结合视觉姿态估计的控制网络可以实现与直接从运动追踪传感器读取姿态相近的性能。

学习进展

大部分的训练时间都被用来使策略对不同的物理动态更加鲁棒。在模拟环境中不使用随机化来学习旋转物体需要大约 3 年的模拟经验,而在完全随机化的模拟环境中实现相似性能需要大约 100 年的模拟经验。

有和没有随机化过程的模拟经验(年)对应的学习进展。

惊喜之处

  • 操纵现实世界中的物体不需要触觉感知。我们的机械臂仅接收五个指尖的位置及方块的位置和方向信息。尽管机械的指尖有触觉传感器,我们也不需要。总的来说,我们不需要一套具有难以建模的值的丰富传感器,利用一套有限的传感器就能提升机械臂的表现,这些传感器可以在模拟器中有效建模。
  • 为一个对象开发的随机化泛化到具有类似属性的其它对象。在为操纵方块问题开发了一个系统之后,我们打印了一个八棱柱并使用它训练了一套新的规则,然后试图操纵该棱柱。令我们惊喜的是,机械臂仅利用为方块设计的随机化就表现出了优异的性能。然而,操纵球体的规则在一系列测试中仅能成功几次,或许是因为我们没有随机化任何建模滚动行为的模拟参数。
  • 在物理机械臂中,良好的系统工程与好的算法一样重要。某次,我们注意到,在运行同样的规则时,一个工程师的表现总是优于其他工程师。之后,我们发现他的笔记本电脑比其他人的快,而他的电脑隐藏了一个影响表现的计时 bug。bug 修复之后,相对地团队中其他人电脑上的表现就提了上去。

不足之处

我们还惊讶地发现有几项常用的技术并没有提升我们的结果。

  • 减少反应时间并不能提升性能。传统观点认为减少动作间隙的时间应该能提升性能,因为状态之间的变化将变得更小,因此更容易预测。我们当前使用的动作间隙时间是 80ms,小于人类反应时间(150-250ms),但显著高于神经网络的计算时间(大约 25ms)。令人惊讶的是,虽然增加额外的训练时间可以将动作间隙时间减少到 40ms,但在现实世界的任务中并没有显著提升性能。有可能这个经验法则并不适用于神经网络,而更适用于如今常用的线性模型。
  • 使用真实数据来训练视觉策略并没有什么效果。在早期实验中,我们使用了模拟数据和真实数据的组合来提升模型性能。真实数据可以通过目标结合嵌入式跟踪标识器的试验来获取。然而,真实数据相比模拟数据有很大的缺点。跟踪标识器的位置信息具有延迟和测量误差。更糟的是,真实数据很容易因为常见的配置变化而失效,使其很难收集足够的有用数据。随着方法的不断发展,我们的「仅模拟」误差一直在增加,直到与使用模拟-真实混合数据的误差相匹配。我们最终的视觉模型没有使用真实数据来训练。

原文链接:https://blog.openai.com/learning-dexterity/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档