Unity AI 2021 实习生:利用机器人技术应对挑战

AI@Unity正致力于研究和开发机器人、计算机视觉及机器学习的相关产品,Unity的暑期AI实习生也在参与多个极具现实意义的AI项目。
在机器人结构越来越复杂的今天,机器人所能执行的任务也变得越来越复杂,研发对模拟的需求也越来越大。模拟技术可让开发者轻松地在每一种应用场景中展开测试,无须使用真正的机器人设备便能轻松拓展实验,并且还能模拟在实机部署之前,测试那些需要在机器人完全做好之后才能测试的任务。Unity Robotics团队的主要工作是借助Unity引擎的实时技术、资源和兼容性来实现机器人模拟,打造专门机器人研发工具和资源包,拓展引擎的模拟能力。Unity 机器人中心提供演示、教程和软件包,让您立即开始模拟您的机器人。
在2021年夏天,Unity的实习生们也通过辛勤的工作为Unity做出了宝贵的贡献。本文将介绍这些实习生所参与的项目和总结的经验。
今年夏天,我有幸加入了Unity Robotics团队,参与了将反向动力学和机器人控制器整合进Unity引擎。当用户需要模拟机器人,尤其是机械臂时,他们需要使用与控制真实机器人相同或类似的应用程序接口来控制机器人。这些应用程序接口被称为机器人控制器,可提供各种功能,包括将机器人从一个位置移动到另一个位置、移动单个关节(在关节空间内),甚至将机器人绕圈移动。机器人控制器主要在关节空间内工作,即以每个关节的目标角度发出指令。然而,人类只关心末端执行器在笛卡尔空间中的位置和方向(即三维世界中的 X、Y 和 Z 坐标)。反向动力学所做的就是将某关节角度与坐标系上的位置和方向对应起来。逆运动学是机器人专家工具包的重要组成部分,因此该软件包使 Unity 作为机器人仿真平台的能力更强、使用更方便。
事实上整合这些功能到Unity中是一项巨大的挑战,我得重新拿起线性代数、物理学、微积分、计算机科学,甚至是微积分基础等知识,同时将软件设计得尽量对用户友好。我还学习了在 VR 中模拟工业机器人,制作了一个演示,用户可以在 VR 中移动一个立方体,机械臂会跟随移动。然而,挑战伴随着巨大的机遇,能够独自设计、构建和发布这样一个用于在 Unity 中启用机器人的基础代码,我深感荣幸。员工发现自己每天都对工作充满期待并不断接受挑战,这实在是太难得了,而我很幸运地在 Unity 找到了这种体验!

在工业应用领域,同一项任务通常需要有多个职责不同的机器人分工协作。“多智能代理”项目使用了Unity辑器、机器人模拟资源包以及ROS 2创建了一个更为复杂的应用场景,让多台机器人在仓库中合作执行搜寻和运送任务。类似的多代理模拟在其它机器人模拟软件中制作起来较为困难,但Unity在这方面有着独特的优势。项目中包含两种机器人,分别称为Findbot和Ferrybot。数量众多的Findbot负责在仓库里寻找目标,而Ferrybot则负责运送、在指定地点捡起和放下方块。每个Findbot都配备了一个摄像头来检测目标,而Ferrybot则配备有一个机械臂用于装卸。机器人开发者和研究人员若想在模拟项目中用上Unity的机器人模拟工具,可以参考这个示例项目。
本项目对我们来说是一次非常宝贵的经历,我们在开发期间亲自尝试和整合了许多Unity资源包。例如,我们使用计算机视觉感知软件包收集数据,训练姿势估计模型。Ferrybot用于拾取方块的反向动力学软件包(即上方提到的Jacob项目)。作为与我们并行开发的项目,要采用其成果也是一招险棋,但这也是学习沟通协作的好机会。我们的项目将被用于筹备2021 年 ROSCon 研讨会,这也让我们受益匪浅。
如果您有兴趣与 Unity 一起参与具有挑战性的人工智能项目,积累实际工作经验,请查看我们的大学招聘页面。您可以通过Unity Robotics Hub 上的演示和教程,在家开始构建自己的体验。
