利用NVIDIA Isaac Sim和Marble加速机器人仿真环境构建
Simulate Robotic Environments Faster with NVIDIA Isaac Sim and World Labs Marble
2025年12月17日
作者:Wonsik Han, Rishabh Chadha, Isaac Deutsch, Raffaello Bonghi
World Labs的Marble等生成式世界模型,与NVIDIA Isaac Sim相结合,显著加速了为机器人技术创建逼真、可用于仿真的3D环境的过程,将设置时间从数周缩短至数小时。该工作流程包括:将AI生成的详细场景导出为高斯溅射(PLY)和碰撞网格(GLB),使用NVIDIA Omniverse NuRec将PLY转换为USDZ格式,在NVIDIA Isaac Sim中导入并对齐资源,以及设置物理和光照以实现精确仿真。环境搭建完成后,机器人开发者可以快速添加和控制机器人,从而在高度逼真的虚拟世界中实现更快的测试和模拟到现实的迁移。
传统上,为机器人仿真构建逼真的3D环境是一个劳动密集型过程,通常需要数周的手动建模和设置。现在,借助生成式世界模型,您可以在极短的时间内从文本提示转换到一个逼真的、可用于仿真的世界。通过将开源机器人参考框架NVIDIA Isaac Sim与World Labs的Marble等生成模型相结合,您可以根据文本或图像提示创建用于机器人开发的完整3D场景。
World Labs最近发布了案例研究“Scaling Robotic Simulation with Marble”,展示了研究人员如何利用Marble的生成式世界来加速机器人训练、测试和模拟到现实的迁移。在本教程中,我们将逐步介绍一个端到端的工作流程:
- 场景导出:从Marble图库中将现有场景导出为高斯溅射(PLY)和碰撞网格(GLB)。
- 场景转换:使用NVIDIA Omniverse NuRec将Marble输出转换为USD格式。
- 场景导入与构建:导入到NVIDIA Isaac Sim。
- Isaac Sim中的仿真:添加机器人并运行仿真。
通过本教程,您将拥有一个逼真的虚拟环境,机器人可以在其中进行物理交互,其构建速度远超传统方法。让我们开始吧。
第一步:从World Labs Marble获取3D厨房场景
World Labs Marble能生成丰富的视觉细节和几何数据(如深度和表面法线),以及一个可导出的用于物理仿真的碰撞网格。本教程中,我们将使用Marble示例图库中已有的厨房场景,而非从零生成一个新厨房。这节省了时间,并确保我们有一个现成的逼真环境。所选场景是一个详细的厨房和客厅内部,配有家具和典型的厨房用品。
从Marble导出厨房世界的步骤:
- 登录Marble:在网页上登录您的Marble账户。登录后,导航到预制的厨房场景。
- 打开场景:点击世界,在Marble的3D查看器中加载它。您可以使用WASD键和鼠标像在游戏中一样探索它,以确认其效果良好。
- 下载世界:在Marble界面底部的工具栏中找到“Download”按钮。
- 选择“Splats (PLY)”下载高斯溅射表示。Marble的高斯溅射以
.ply文件形式提供,其中包含数百万个半透明粒子,高保真地呈现了场景。 - 选择“Collider Mesh (GLB)”下载场景的三角形网格。这将包含厨房的几何形状,作为一个标准的glTF模型。
- 选择“Splats (PLY)”下载高斯溅射表示。Marble的高斯溅射以
请注意,在World Labs Marble中导出PLY和GLB文件需要付费计划。如果没有,World Labs从其图库中提供了示例PLY和GLB文件。在本教程中,我们将使用厨房场景的PLY和GLB文件作为示例。将文件保存为MarbleKitchenwithLight.ply和MarbleKitchenwithLight_collider.glb。
此时,我们有了两种形式的厨房环境:高斯溅射和三角形网格。每种都有不同的用途:PLY捕获了场景的全部视觉细节,而GLB提供了仿真中物理和碰撞所需的网格几何体。
视频1. 探索Marble示例场景并下载PLY和GLB文件
第二步:将下载的PLY转换为USDZ
NVIDIA Isaac Sim使用通用场景描述(USD)作为其场景格式。为了在Isaac Sim中使用Marble生成的世界,我们需要将导出的PLY转换为USD格式。然后,我们将利用NVIDIA Omniverse NuRec高效渲染基于点的场景。
NuRec的核心是基于高斯的重建和渲染算法3DGUT。NVIDIA 3DGRUT仓库包含一个脚本,用于将.ply溅射文件转换为USDZ文件(一种包含USD特定数据的zip压缩存档)。我们将使用它来转换我们的Marble PLY文件:
-
设置3DGRUT:克隆3DGRUT仓库并安装其环境。在本教程中,我们在一个名为“3dgrut”的专用Conda环境中设置3DGRUT。
该环境需要配备NVIDIA GPU、CUDA 11.8+和GCC 11或更低版本的Linux系统。如果您已经有了包含所需库(如PyTorch)的Python环境,也可以在该环境中直接运行转换Python脚本。
git clone --recursive https://github.com/nv-tlabs/3dgrut.git cd 3dgrut chmod +x install_env.sh ./install_env.sh 3dgrut conda activate 3dgrut -
将PLY转换为USDZ:设置好3DGRUT后,使用提供的转换脚本将Marble点云转换为USDZ:
$ python -m threedgrut.export.scripts.ply_to_usd \ /path/to/MarbleKitchenwithLight.ply \ --output_file /path/to/MarbleKitchenwithLight.usdz此命令将读取
.ply文件并生成一个.usdz文件。USDZ使用自定义的USD模式(UsdVolVolume的扩展)以Omniverse可以渲染的方式表示高斯溅射。本质上,它将点云嵌入为一个体积基元,保留了Marble场景的视觉保真度。有关NuRec神经体积及其在Omniverse中渲染方式的更多详细信息,请参阅NuRec渲染文档。
现在,我们有了一个USDZ文件和一个GLB文件:
MarbleKitchenwithLight.usdz– 视觉溅射世界MarbleKitchenwithLight_collider.glb– 我们将用于物理的碰撞网格。
第三步:将USDZ/GLB导入Isaac Sim并构建场景
生成USDZ文件后,下一步是将厨房场景导入Isaac Sim,将网格与高斯溅射对齐,并添加物理和光照,使其为交互做好准备。
由于要编辑场景内容,需要解压USDZ存档。解压文件并打开生成的default.usda文件,然后执行以下步骤:
几何对齐高斯体积:
我们希望确保导入场景的原点和比例与Isaac Sim匹配。为此:
- 向场景中添加一个地面平面。这将用作导入高斯体积的地面参考,并作为一个光滑的碰撞体。
- 导入的高斯体积包含在一个“xform”基元中,该基元用于变换体积。为了将体积与地板对齐,选择该xform基元并调整其“Translate”值,使厨房地板恰好落在地面平面上。使用地面平面作为视觉参考,移动高斯体积,直到点云的地板与其重合。
- 生成的场景可能比现实世界的尺度小或大。为了大致匹配现实世界的尺度,我们可以使用一个默认的立方体作为视觉参考,其边长为1米。插入一个立方体对象后,可以相应地调整X、Y和Z的整体缩放。对于我们的厨房场景示例,缩放因子为2大致给出了合适的大小(例如,对于橱柜和炉灶)。
- 最后,微调xform基元的旋转,确保高斯点云尽可能准确地与地面对齐。验证此操作的一个简单方法是使用厨房墙上的瓷砖作为参考,并旋转高斯对象,使其与创建的地面平面完全平行。对齐后,将地面平面向下移回,使其恰好位于厨房地板水平面。
视频2. 几何对齐高斯体积
为场景添加物理和光照:
现在我们已经对齐了导入的高斯溅射,我们希望添加物理和光照,以便阴影和物体交互按预期工作。
- 我们将使用之前创建的立方体再次调整场景比例,以测试阴影和物理。
- 在地面平面的碰撞网格上,开启“Matte Object”(哑光对象)属性。这确保它能正确地作为阴影接收器。
- 向场景添加一个穹顶光(dome light)。
- 在Stage窗口中选择“gauss” Volume基元,然后在属性窗口中,向下滚动到“Raw USD Properties”,点击三角形图标以显示更多设置。然后,滚动到“proxy”字段,点击“Add Target”。最后,选择GroundPlane CollisionMesh作为目标。
视频3. 添加物理和光照
- 移动立方体,确保阴影按预期显示。
- 将立方体设置为带有碰撞体的刚体,并在仿真中点击播放,立方体会按预期与地面平面交互。但是,它会“穿过”高斯溅射。现在,我们继续设置高斯表示的物理。
- 高斯溅射的碰撞信息包含在GLB文件中。导入此网格,将其与高斯体积对齐,并启用为碰撞体。
- 将
MarbleKitchenwithlight_collider.glb文件拖放到高斯体积下。确保它位于高斯体积下方,因为层级结构很重要。碰撞体将显示在场景中。 - 稍微缩小场景,将X旋转设置为-90,以匹配高斯体积的坐标系。现在,渲染的体积和碰撞网格完全对齐。
- 为导入的碰撞网格启用物理碰撞体预设。
- 关闭碰撞体的可见性,因为它与高斯体积重叠。这只会影响场景的视觉效果;物理将使用我们刚刚在场景中设置的碰撞体。
- 将
视频4. 导入碰撞网格
现在,场景的几何形状、物理和光照都已就绪:高斯体积提供了逼真的视觉效果,而GLB碰撞体和地面平面处理了物理和阴影。场景现在已准备好添加机器人。
第四步:添加机器人并运行仿真
厨房场景已对齐且物理功能已启用,最后一步是添加机器人并驱动它以验证设置。
- 将NVIDIA Nova Carter机器人拖放到场景中。
- 为机器人添加一个差速控制器并启用键盘控制。这将创建必要的动作图,使我们能够使用键盘移动机器人。
- 切换到安装在机器人上的摄像机视角并点击播放。使用WASD键移动机器人,并验证它是否遵循厨房几何形状:它应该停在地板上,与台面和家具碰撞,并且不会从场景中掉落。
至此,Marble厨房场景已作为一个支持物理的环境完全集成到Isaac Sim中,您现在可以交互式地驱动机器人在其中穿梭。
视频5. 添加机器人并导航场景
总结
在本教程中,我们下载了一个包含几何形状的AI生成的3D环境,然后将其作为仿真就绪场景导入Isaac Sim。我们在AI生成的世界中设置了机器人。现在,这个端到端的工作流程只需数小时即可完成。这种快速生成各种高保真世界的能力为仿真中的机器人开发解锁了更高的可扩展性。借助Marble和Isaac Sim,只要您能描述一个世界,您很可能在同一天就能开始测试它。
要了解更多,请尝试以下内容:
- 使用World Labs Marble创建您自己的自定义环境 – 您可以从文本描述、单张图像、不同角度的多张照片,甚至是一个粗略的3D布局开始。
- 使用输入图像创建您自己的自定义环境,并通过Lyra(某机构关于通过视频扩散模型进行生成式3D场景重建的研究计划)将其用于Isaac Sim。
了解有关仿真创新的更多信息,并与某机构的专家会面。FINISHED
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)