25年4月来自英国 UCL 的论文“Unreal Robotics Lab: A High-Fidelity Robotics Simulator with Advanced Physics and Rendering”。

高保真仿真对于机器人研究至关重要,它能够安全高效地测试感知、控制和导航算法。然而,同时实现逼真的渲染和精确的物理建模仍然是一个挑战。本文提出一种仿真框架——Unreal 机器人实验室(URL),它将Unreal engine的先进渲染功能与MuJoCo的高精度物理仿真相结合。该方法能够在保持精确物理交互的同时,实现逼真的机器人感知,从而促进基于视觉的机器人应用的基准测试和数据集生成。该系统支持复杂的环境效应,例如烟雾、火焰和水动力学,这对于评估机器人在恶劣条件下的性能至关重要。用该框架对视觉导航和SLAM方法进行基准测试,展示其在受控但多样化的场景中测试真实世界鲁棒性的实用性。通过弥合物理精度和逼真渲染之间的差距,该框架为推进机器人研究和仿真-到-现实的迁移提供一个强大的工具。

用于机器人仿真的物理引擎

物理引擎对于逼真的机器人仿真至关重要,尤其是在模拟接触、软体动力学和流体相互作用方面。各种引擎已从精度、效率和可扩展性方面进行评估,它们在机器人应用方面的适用性存在显著差异[20]。MuJoCo[3]在软接触建模、精度和稳定性方面表现出色,使其成为抓取和运动等复杂机器人任务的理想选择。然而,它缺乏内置的高保真渲染功能。ODE(开放动力学引擎)[10]常用于Gazebo,但在高自由度任务中存在稳定性问题,并且需要大量的参数调整。Bullet[12]因其在强化学习和操作方面的应用而广受欢迎,但其精度落后于MuJoCo。

Unreal Engine 的Chaos& Havok[21]针对游戏物理和实时特效进行优化,在破坏、流体和基于粒子的仿真方面表现卓越。然而,它们并非为需要软接触建模或高精度关节动力学的机器人应用而设计。NVIDIA PhysX [22] 提供适用于快速强化学习的 GPU 加速仿真,但由于其忽略科里奥利(Coriolis)力,因此不适用于高精度控制。

URL

本文方法 URL 将 MuJoCo 的精确物理引擎与Unreal Engine的先进渲染技术相结合,从而在机器人应用中实现了照片级真实感和精确仿真。
模拟器(URL)集成 MuJoCo 和 Unreal Engine,提供一个能够高度模拟真实世界交互的综合仿真环境。只需添加相应的 MuJoCo XML 描述和相关的 Unreal Engine 资源,即可轻松集成机器人。该系统支持标准机器人配置和传感器,包括摄像头、惯性测量单元 (IMU) 和力传感器,确保广泛的兼容性。整个系统如图所示。该系统由外部组件和内部模拟器组成。系统包含一个模块化的 SimManager,用于管理由基准测试 (Benchmark)、回放 (Replay) 和场景生成 (SceneGen) 模块组成的子模块。它管理所有对 UE 数据的引用,并以 UE 插件的形式开发,可以添加到任何项目中。
请添加图片描述

为了表示场景中的物体,引入一种中间表示形式,称为 PhysicsObject,它封装几何信息和状态信息。这能够在 UE 和 MuJoCo 之间高效地管理和转换场景元素,同时确保变换和动态交互的正确同步。

场景中的物体被分类为预定义的类型。具体来说,资源被标记为以下类别之一:EP STATIC、EP STATIC COMPLEX、EP DYNAMIC、EP DYNAMIC COMPLEX 和 EP PRIMITIVE (类别)。静态物体在整个仿真过程中保持不变,而动态物体会被主动跟踪,其变换在 UE 中异步更新。简单动态物体和复杂动态物体之间的区别决定了物体是否需要经过 CoACD 的凸分解。CoACD 将网格分解为一系列凸包,而常规的 mujoco 编译每个物体只会生成一个凸包。这使得 CoACD 能够表示非凸几何体,并且 MuJoCo [20] 也推荐使用这种方法。此分类信息记录在相应的物理对象中,以指导后续处理。资源分类完成后,基于网格的资源将导出为 OBJ 文件,确保与 MuJoCo 兼容。此外,如果场景中存在地形,则会对其进行扫描并转换为高度场,以便在模拟中使用。此过程在地形上使用自定义碰撞通道,然后利用自动生成的边框,执行多线程光线投射来确定要使用的高度。此边框将光线投射限制在预定义分辨率的该区域内。这避免扫描整个地形。

之所以选择这种方法,是因为场景可能非常庞大,用户可能并不想将整个场景转换为物理模型。此外,它还具有在高度场中对小型杂物和装饰物进行建模的优势。此过程使得 MuJoCo 能够无缝重建大规模地形,并保留实现精确物理交互所需的关键环境特征。

资源处理完成后,系统会自动生成一个 XML 场景描述来初始化 MuJoCo。该 XML 封装所有相关的对象数据,包括网格文件引用、物理属性和层级关系。系统会特别关注在 MuJoCo 环境中检测的机器人资源,并将其映射回相应的 UE 实体。在此过程中,XML 中指定的相机和传感器会在 UE 中实例化,以确保两个环境的一致性。传感器元素在 MuJoCo 中以站点的形式表示,从而可以在物理模拟中进行精确放置和交互。

物理模拟以异步方式运行,在单独的执行线程中运行,以最大限度地提高性能。为了与 MuJoCo 保持实时同步,变换更新也在 UE 内部的专用异步线程中进行管理。MuJoCo 中施加的外部力可以传播到 UE 实体,从而实现模拟和渲染环境之间的双向交互。UE 物理引擎仍然可以用于 MuJoCo 未管理的对象。

为了提高计算效率,模拟运行之间保持不变的资源会被缓存,从而避免不必要的重复计算和冗余的文件导出。这种缓存机制确保静态元素不会产生额外的处理开销,使系统能够专注于需要持续状态更新的动态实体。最终的 XML 场景描述以及自动生成的网格资源,使得可以直接在 MuJoCo 中作为独立模拟执行。这里提供一个辅助脚本来简化此过程,以便在需要时独立于 UE 使用相同的环境。

基准测试系统

基准测试系统可在整个仿真过程中自动记录和管理评估指标。其核心由 MetricManager 和 BaseMetric 类组成,提供了一个结构化且可扩展的框架来跟踪性能指标。

BaseMetric 类定义所有指标的基本接口,封装一个二维浮点数组,用作时间序列数据的存储机制。该类提供一些基本方法,包括初始化、重置和将数据导出为 CSV 格式。这些方法确保每个指标实现都遵循一致的生命周期,从而简化将新指标集成到系统中的过程。派生指标可以重写这些基本方法来实现特定领域的逻辑,同时仍然可以受益于结构化的数据存储和导出机制。

MetricManager 负责自动发现和注册所有指标实现。它通过扫描相应的类定义来动态填充可用指标列表,从而实现模块化和可扩展的指标跟踪。用户可以通过专用用户界面启用或禁用特定指标,从而灵活地为特定实验选择相关的性能指标。

默认情况下,系统跟踪核心指标,包括:DistanceToGoal(目标距离),用于跟踪实体到预定义目标位置的剩余距离;Collisions(碰撞),用于记录与障碍物或其他实体的碰撞事件;TimeToGoal(到达目标所需的时间),用于测量到达目标所需的时间;以及 GlobalPose(全局姿态),用于记录实体随时间变化的绝对位置和方向。

所有指标均以离散的时间间隔记录,并自动保存为指定实验文件夹中的 CSV 文件,确保结果井然有序且易于访问。系统还具有宽限期(延迟数据记录 n 秒)和超时(在 n 秒后终止记录)功能,从而提高仿真运行的效率和可重复性。

场景生成

模拟器包含一个实验性的场景生成模块,该模块主要针对室内环境设计,并利用 OpenAI 的 ChatGPT [25] API。当 ASceneGenerator 的 Actor 实例存在并被分配 RoomType 时,系统会根据指定的场景类型自动生成目标摆放位置(如图所示)。该模块会向 ChatGPT 发送包含可用资源列表的结构化提示,并接收 JSON 格式的响应,其中指定目标的位置。然后,系统会解析这些摆放位置,并在环境中实例化相应的资源。为了确保空间连贯性,系统会使用 Unreal Engine 的物理系统检测重叠目标。如果发生重叠,迭代优化循环会向 ChatGPT 提供反馈,以更新摆放建议,直到所有碰撞都得到解决或达到预定义的迭代次数限制为止。这种方法能够高效地生成无碰撞的场景,从而生成多样化且结构化的环境,适用于机器人实验。
请添加图片描述

回放

系统具备传感器和人体姿态数据的自动记录和回放机制,可实现高效的数据采集和实验。它使用自定义结构体仅跟踪关键信息——姿态数据、传感器读数和时间戳——并将它们存储在队列中,以最大限度地减少开销并实现精确的序列重现。数据流通过单独的 JSON 文件进行管理,所有这些文件都可以在运行时动态保存和加载。通过将回放数据发布到与实时数据相同的 ROS 主题上,该系统可以与现有流程无缝集成。这使得研究人员只需采集一次数据,即可在视觉修改后的环境中回放数据,从而支持域自适应、鲁棒性测试以及用于机器学习和基准测试的数据集增强。

扩展功能

系统利用Unreal Engine 的高级渲染和仿真功能,超越 MuJoCo [3]、Gazebo [10] 和 Isaac Sim [5] 等传统机器人模拟器。关键特性包括实时全局光照(Lumen)、高精度网格渲染(Nanite)和基于物理的反射,这些特性增强了基于感知的机器人研究。程序动画、NavMesh导航和内置环境工具能够高效地创建动态仿真,而Niagara粒子系统则有助于在恶劣的视觉条件下(例如烟雾、雾)进行测试。此外,打包的独立部署提高可重复性和可扩展性,克服传统仿真器的局限性。

机器人、控制器和视觉规划器部署示例

该系统提供一个统一的框架,其中机器人、控制器和规划器像在真实世界部署中一样运行。所有组件都通过ROS进行通信,确保与外部系统无缝集成。

  1. 机器人集成示例:该框架支持四足机器人、四足移动机械臂、无人机和机器人机械臂,从而能够实现用于运动、空中导航和操作的各种实验设置。
  2. 控制器:该系统包含基于位置和扭矩的关节控制器,以及更高级的控制器,例如 Walk-These-Ways [26] 和 VBC [27]。无人机使用基于 PID 的控制器,而机械臂则依赖于逆运动学 (IK) 方法,例如 Mink [28]。由于控制器在 ROS 生态系统中运行,因此可以轻松集成新的控制策略。
  3. 规划器:运动规划采用基于学习和基于优化的规划器,例如 ViNT [29]、GNM [30] 和 NoMAD [31]。该框架基于 ROS 的架构确保与外部规划器的兼容性。
  4. 视觉 SLAM:该系统包含视觉 SLAM 技术,例如 OrbSLAM2 [32]、OrbSLAM3 [33] 和 MASt3R-SLAM [34],从而实现实时定位和建图。这些方法直接集成到框架中,从而能够在模拟环境中实现逼真的感知和建图。
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐