搜索 Unity

Made with Unity:制作和训练机器人数字孪生

2021年10月11日 类别 技术 | 8 分 阅读
kitchen digital twin with a robot on a dining table
kitchen digital twin with a robot on a dining table
涵盖的主题
分享

我们的Made with Unity: AI博文系列主要展示由Unity创作者使用Unity AI产品制作的Unity项目。在本文例子中,我们将介绍一个近期参加了OpenCV Spatial AI竞赛的作品,作品以一系列出色的实例展示了Unity中的机器人、计算机视觉、强化学习和增强现实技术。

Unity是一个世界领先的实时3D引擎。引擎的功能和工具在以往主要支持的是游戏开发,但AI@Unity小组正在为机器学习、计算机视觉和机器人等领域打造工具,意图将引擎的应用范围扩展到游戏之外,尤其是那些依赖AI和实时3D环境的应用。

Gerard Espona及其Kauda Team的OpenCV Spatial AI参赛作品中包含了多个使用Unity AI工具和软件包制作而来的实例。Perception Package被用于辅助训练计算机视觉模型,ML-Agents工具套被用于训练机器学习模型及机械臂的sim2real演示。因此,我们决定采访Gerard来了解项目背后的灵感。请在下文详细了解团队如何在Unity和现实世界中将项目转变为现实。

OpenCV项目

Made with unity logo with updated cube

Kauda Team的队名是从哪来的?

Kauda Team由Giovanni Lerda和我(Gerard Espona)两人组成,队名来自Giovanni开发的可3D打印、电脑主机大小、免费开源的五轴机械臂:Kauda。这款机械臂能由任何人用3D打印设备制作,我们也用它开展了项目的远程协作。

Robotic arm

Unity中的Kauda数字孪生是怎样制作的呢?

我们专门开发了一个Unity应用:Kauda Studio,来驱动Kauda的数字孪生。软件提供了一个功能齐全、精确的Kauda模拟,带有反向运动学(IK)控制、USB/蓝牙连接,还支持多个OpenCV OAK-D摄像机。

什么是OAK-D摄像机,它如何在Unity中使用?

OAK-D摄像机由两个立体深度摄像机、一个带有内置处理功能(由英特尔MyriadX VPU驱动)、可自动识别多种特征的4K彩色摄像机组成。在参赛期间,我们为OAK设备创建了一个Unity插件,并且也想在Unity中为其制作一个数字孪生。OAK-D的Unity数字孪生集成了一个虚拟的3D摄像机,其精确的模拟能力可用于收集合成数据。摄像机还支持将虚拟图像传输到真实设备上,我们能用Unity Perception Package和模拟的OAK-D摄像机收集合成数据、训练项目。

Grey background with 3D models of equipment
Unity中的OAK-D摄像机模型

在Unity中制作数字孪生的重要性

我们可以使用数字孪生为Kauda开发更多的功能。你可以使用Unity的增强现实(AR)功能在现实环境中与虚拟的机器人进行互动,比如在无机器人实物的情况下学习机器人维护,或者使用虚拟但精确的机器人模型来无代码地编写连续性任务。

数字孪生还使得强化学习(RL)训练成为了可能。RL的训练周期普遍较长,如果训练不是极其简单的例子,模拟的使用就会非常必要。在Unity中制作出Kauda模型后,我们使用了ML-Agents工具套来进行操控相关的RL训练。

我们还在Unity中使用机器人与摄像机来检测人类在工作区域内的位置,用于实验人机协作和安全程序。如果一个大型机器人在运行中发生故障,就很可能会对人造成伤害,因此这种实验非常有必要。模拟环境能让我们在不冒危险的情况下开展测试。

项目怎样是用到ML-Agents工具包的?

RL是一个强大的机器人框架,而Unity ML-Agents是工具套能让数字孪生学习并执行复杂任务。由于时间有限,我们的目标是实现一个简单的“触碰”任务,并让模型在OAK-D设备有能力进行推理。在ML-Agents的帮助下,机器人习得了最佳运动路径,可借助IK来灵活地触碰检测到的3D物体。

Unity ML agents training on digital twins

为了达成这一目标,我们首先使用spatial tiny-YOLO开发了一个3D物体检测器。RL模型(PPO)使用检测结果和IK控制点的位置作为观测输入,动作输出则由IK控制点的3轴运动实现。在模型的奖励机制中,每一步运动都会带来少量的惩罚,而触碰到物体则会带来大量奖励(1.0)。为了加快训练速度,我们使用了多个智能代理同时训练,成倍地生成spatial tiny-YOLO的训练数据。

在训练完成后,我们接着使用OpenVino工具包将模型转换为OpenVino IR和Myriad Blob格式,方便在OAK-D设备上加载模型并运行推理。最后一道流程是结合spatial tiny YOLO与RL模型。多亏我们的Unity插件,我们能够在Unity内比较ML-Agents和OAK-D代理的推理成果。

此内容由第三方提供商托管,该第三方提供商不允许在未接受“Targeting Cookies”的情况下观看视频。如果想观看来自这些提供商的视频,请将“Targeting Cookies”的 Cookie 首选项设置为“是”。

用ML-Agents进行训练,并比较代理与OAK-D的推理成果

合成数据在项目中起了什么作用?

我们开发流程的第一阶段制作一个3D物体检测器,这也是AI计算机视觉和机器人开发的常见起点。这里,我们使用Unity Perception软件包来训练tiny YOLO v3模型识别自定义的物品类型。Perception包能够在几分钟内生成大量的3D合成数据,还能自动标注出参考边界框,如果人工来收集数据和添加标注会耗费大量时间。支持生成丰富的数据集,以及转向、光照、纹理等多种随机化选项是一个很大的优势。

此内容由第三方提供商托管,该第三方提供商不允许在未接受“Targeting Cookies”的情况下观看视频。如果想观看来自这些提供商的视频,请将“Targeting Cookies”的 Cookie 首选项设置为“是”。

使用Perception Package生成和使用合成数据

你们有遇到什么困难吗?

虚拟物品与现实物品的同步时机有时会出现偏差。不过幸亏Unity支持ROS(Robot Operating Syetem,机器人操作系统),我们可以在以后使用ROS来解决这个问题。

此内容由第三方提供商托管,该第三方提供商不允许在未接受“Targeting Cookies”的情况下观看视频。如果想观看来自这些提供商的视频,请将“Targeting Cookies”的 Cookie 首选项设置为“是”。

最终版sim2real解决方案

了解更多详情

Gerard在自己频道的视频列表里记录了两人的参赛之旅,其中两人参与的OpenCV网络研讨会最终版参赛视频十分值得学习研究。他还在Github上发布了Unity的OAK-D插件,来帮助其他人启动自己的机器人项目。

很高兴看到Unity的工具在开发者手中发挥作用。如果你也想为自己的Unity项目加入人工智能,可以前来学习我们的示例项目与教程!你也可以使用Unity Perception Package在Unity中轻松生成合成数据。而Unity Robotics Hub上的教程和资源包可帮助初学者快速入门ROS集成和机器人模拟。最后,ML-Agents工具套带有的多个训练环境也能让强化学习入门更为简单。

2021年10月11日 类别 技术 | 8 分 阅读
涵盖的主题