NVIDIA 中国开发者日活动 中国・苏州 | 2025 年 11 月 14 日 了解详情
机器人

仅使用智能手机在 NVIDIA Isaac Sim 中重建场景

为机器人仿真构建逼真的 3D 环境可能是一项耗时且劳动密集型的任务。现在,借助 NVIDIA Omniverse NuRec,您只需使用智能手机即可完成整个流程。本文将逐步介绍操作方法:从使用 iPhone 拍摄照片,到利用 3DGUT 进行 3D 场景重建,再到将重建的场景导入 NVIDIA Isaac Sim 并添加机器人。若要跳过重建步骤(步骤 1–3),直接在 Isaac Sim(步骤 4)中探索该场景,可前往 NVIDIA Physical AI 上的 Hugging Face 获取相关资源。

第 1 步:捕捉真实场景

第一步是拍摄需要重建的真实环境的照片。如今已无需特殊硬件,使用普通的智能手机摄像头即可完成。

当您在场景中移动时,可以使用手机进行拍摄。以下是一些摄影测量的实用建议:

照明和焦点应准确且稳定。避免画面快速移动或出现模糊。若条件允许,建议使用更快的快门速度(例如 1/100 秒或更快)。

  • 在内置相机应用中,您无法直接设置快门速度,但可以采取以下措施进行优化:
    • 锁定对焦与曝光:长按画面主体可启用 AE/AF 锁定,随后轻微向下拖动曝光滑块(+0.3 至 +0.7 EV),有助于保留高光细节。
    • 保持稳定:建议使用三脚架或将设备靠在稳固表面上;每一帧越清晰,COLMAP 在特征追踪时的表现就越出色。
    • 避免自动切换微距模式:若使用 iPhone Pro 机型,为防止镜头间焦距突然切换,请前往“设置” →“相机” → 关闭“自动微距”功能。
  • 如需手动控制快门速度和 ISO,可选用以下支持固定快门与 ISO 的 iOS 应用程序:Lumina:手动相机、Halide、ProCamera、ProCam 8、Moment Pro Camera、Lightroom Mobile。
    • 建议快门速度设置为:户外 1/120 至 1/250 秒,室内 1/100 秒。ISO 值应尽量调低,以在保证合理曝光的同时减少噪点。
    • 同时建议锁定白平衡,避免不同帧之间出现色彩偏移。

为实现遮挡效果,请围绕该区域进行缓慢环绕,并从多个高度和角度进行捕捉。建议保持 60% 的重叠率以确保安全。

提示:COLMAP 需要标准图像格式。如果您的 iPhone 保存的是 HEIC 格式,请前往“Settings” (设置) + “Camera” (相机) + “Formats” (格式),然后选择“Most Compatible” (兼容性优先),以拍摄 JPEG 格式;或者在使用 COLMAP 前,将图像导出或转换为 JPG 格式。

第 2 步:利用 COLMAP 生成稀疏重建

当您拥有照片后,下一步是从这些图像中恢复出三维结构并确定相机的位置。本示例采用流行的开源运动恢复结构(Structure-from-Motion,SfM)与多视角立体匹配(Multi-View Stereo)工作流 COLMAP 来实现这一目标。COLMAP 将生成场景的稀疏点云,并估算每张照片对应的相机参数。

COLMAP 还提供了以下命令行路径。但请注意,使用 GUI 进行自动重建是更简便的入门方式。为了与 3DGUT 兼容,请选择针孔或简单针孔相机模型。

# Feature detection & extraction
$ colmap feature_extractor \
    --database_path ./colmap/database.db \
    --image_path    ./images/ \
    --ImageReader.single_camera 1 \
    --ImageReader.camera_model   PINHOLE \
    --SiftExtraction.max_image_size 2000 \
    --SiftExtraction.estimate_affine_shape 1 \
    --SiftExtraction.domain_size_pooling 1

# Feature matching
$ colmap exhaustive_matcher \
    --database_path ./colmap/database.db \
    --SiftMatching.use_gpu 1

# Global SFM
$ colmap mapper \
    --database_path ./colmap/database.db \
    --image_path    ./images/ \
    --output_path   ./colmap/sparse

# Visualize for verification
$ colmap gui --import_path ./colmap/sparse/0 \
    --database_path ./colmap/database.db \
    --image_path    ./images/

COLMAP 将输出项目文件夹(通常包含 database.db、images/ 文件夹,以及存放重建数据的稀疏/ 目录)。完成 COLMAP 处理后,您将获得:

  • 稀疏点云场景
  • 所有图像的相机位姿数据

这是使用 3DGUT 进行 3D 重建所需输入的信息(第 3 步)。

第 3 步:使用 3DGUT 进行密集 3D 重建的训练,并将结果导出为 USD

现在来看看效果。下一步,利用 3DGUT 算法将稀疏模型和图像转换为更加逼真的密集 3D 场景:

  • 设置 3DGUT 环境: 3DGUT 存储库需要在配备 CUDA 11.8、GCC ≤ 11 和 NVIDIA GPU 的 Linux 系统上运行。如需查看官方 3DGUT 代码,请访问 nv-tlabs/3dgrut 仓库,并按照说明安装所需的依赖库。
  • 克隆 3DGUT 存储库: 使用指定命令克隆并安装 3DGUT 存储库。为确保克隆成功,在继续操作前,请使用存储库中的示例数据集运行测试重建,以验证其功能是否正常。
git clone --recursive https://github.com/nv-tlabs/3dgrut.git
cd 3dgrut
chmod +x install_env.sh
./install_env.sh 3dgrut
conda activate 3dgrut
  • 准备 COLMAP 输出:请确认您已知晓第 2 步中生成的 COLMAP 输出目录的路径。本示例采用 apps/colmap_3dgut_mcmc.yaml 配置,该配置将 3DGUT 与 MCMC(Markov Chain Monte Carlo)密集化策略相结合。在实际应用中,该方法能够对重建过程中存在不确定性的高斯进行采样与密集化处理,有效增强薄结构和边缘的清晰度,提升整体重建保真度,同时相较于基准配置,训练耗时更少。
  • 运行 3DGUT 训练脚本并导出 USDZ:在激活当前环境后,您可通过执行提供的 train.py 脚本并指定 COLMAP 配置来启动训练。例如,命令可能类似于以下形式:
$ conda activate 3dgrut
$ python train.py --config-name apps/colmap_3dgut_mcmc.yaml \
    path=/path/to/colmap/ \
    out_dir=/path/to/out/ \
    experiment_name=3dgut_mcmc \
    export_usdz.enabled=true \
    export_usdz.apply_normalizing_transform=true

运行命令后,3DGUT 将开始训练,读取您的图像和 COLMAP 数据,并对 3D 表征进行优化。所需时间取决于场景的复杂程度和 GPU 性能,小型场景可能只需几分钟,而细节丰富的场景则可能需要数小时。

此过程完成后,应对场景进行密集重建,输出结果包含一个含有模型检查点的目录。设置 export_usdz.enabled=trueexport_usdz.apply_normalizaing_transform=true 标志还会生成 USDZ 文件。

  • export_usdz.enabled=true writes a USDZ of your reconstructed scene, so you can load it straight into Isaac Sim.
  • export_usdz.apply_normalizing_transform=true applies a primitive normalization (centers/scales the scene near the origin). It does not guarantee the floor is exactly at z = 0 . In Isaac Sim, you can add a Ground Plane or nudge the scene root (translate/rotate) for alignment.

将重建的场景导出为 USD 格式后,即可在 Isaac Sim 中使用。生成的 USDZ 文件采用自定义 USD 模式,本质上是一个打包的 USD 场景,包含 3D 重建中的全部高斯拼接数据。需要注意的是,AOUSD 正在讨论该模式的标准化。

第 4 步:在 Isaac Sim 中部署重建的场景,并添加机器人

有趣的是,随着现实世界场景在 USD 中被完整重建,它们便可在 Isaac Sim 中用于虚拟机器人的训练与测试。

要加载场景并插入机器人,请按以下步骤操作:

1. 启动支持 NuRec/3DGUT 功能的 Isaac Sim 5.0 或更高版本。打开 Isaac Sim 后,从空阶段开始(文件 > 新建)。

2. 导入 USD 场景: 从菜单中选择“File” (文件) > “Import” (导入),然后定位到场景的 USDZ 文件。 alternatively,也可将 USDZ 文件从 Isaac Sim 内容浏览器直接拖拽至场景中。当 Isaac Sim 加载该文件时,您将在视口中看到重建的环境,呈现为彩色点云或高斯点的集合。通过相机视角观察时,其效果近乎一张逼真的 3D 图像。

  • 提示:您可以通过 Isaac Sim 导航功能使用 WASD 键,或右键单击并拖动,在场景中自由移动,从不同角度进行查看和检查。

3. 为物理效果添加地平面: 您重建的场景仅包含视觉几何图形(来自 3DGUT 的点或体素),不具备固有的碰撞属性。为了让机器人能够在场景中移动,需要添加一个地面,使其有可支撑的表面。在 Isaac Sim 中,此操作非常简便:点击“Create”(创建)>“Physics”(物理效果)>“Ground Plane”(地面平面)。此时会生成一个平面(通常位于 z = 0),覆盖场景的占地面积。您可能需要调整其缩放比例(例如,将 x 和 y 均设为 100,如视频 1 所示)。请进一步调节该平面的位置、旋转和缩放,使其与重建的地板对齐。

接下来,连接代理网格以接收阴影。代理网格是一种简单的支撑结构,通过提供可投射阴影的表面,使场景中的物体在视觉上更好地与地面衔接。您已经创建了一个网格,即地平面。要将其设置为代理网格,请执行以下步骤:

  1. 选择 NuRec Prim(位于全局 xform 下的体积 Prim)。在“Raw USD Properties”(原始 USD 属性)面板中,找到 NuRec/Volume 部分,并定位到“Proxy”(代理)字段。
  2. 点击以添加您的代理网格基元。
  3. 再次选择您的地平面,确保“Geometry”(几何图形)>“Matte Object”(哑光对象)属性已启用。
视频 1。了解如何在将场景导入 Isaac Sim 时,为渲染场景添加地平面网格及物理属性。

4. 从 Isaac Sim 资产中插入机器人: Isaac Sim 提供了多种 SimReady 机器人模型。要在场景中添加机器人,请前往顶部菜单栏,选择“Create” (创建) > “Robots” (机器人),然后从列表中选取所需的机器人。例如,可选择广受好评的 Franka Emika Panda 机械臂,也可根据 Isaac Sim 库中的可用资源,选择 LeatherBack、Carter 或 TurtleBot 等移动机器人,甚至人形机器人。

单击您选择的机器人素材后,该素材将被添加到场景中。请使用“Move/ Rotate” (移动/ 旋转) 工具,将机器人调整至重建场景中的合适位置。

5. 按下“Play”(播放)并观看: 此时,机器人应位于逼真的 3D 场景中,可以坐姿或站姿呈现。如果是机械臂,您还可以为其添加动画,甚至运行强化学习,具体取决于您的应用场景。现在,现实世界环境已导入 Isaac Sim,您可以像操作其他仿真环境一样对其进行处理。

在 NVIDIA Isaac Sim 中开始重建场景

这个简洁而真实感十足的仿真工作流,可将日常的 iPhone 拍摄照片转化为交互式、机器人就绪的场景。整个流程就像在 NVIDIA Isaac Sim 中完成图像采集、COLMAP 处理、3DGUT 重建、USDZ 导出并加载使用一样简单。该工作流用一种简单且可复现的数字孪生路径,取代了传统耗时的摄影测量流程,让你能够快速进行驱动、路径规划与测试。准备好开始体验了吗?

准备好开始体验了吗?

  • 打开现成场景: 从 Hugging Face 的 NVIDIA 物理 AI 集合中获取 NuRec 样本,并在 Isaac Sim 中加载运行。
  • 试用真实到仿真的参考工作流: 基于 Isaac Sim、Isaac ROS、3DGUT、cuSFM、nvBlox 和 FoundationStereo,按照从立体摄像头数据重建场景的流程,为机器人开发构建高保真的 3D 环境,请遵循 从立体摄像头数据重建场景 的步骤。

通过订阅 NVIDIA 新闻,并在 DiscordYouTube 平台关注 NVIDIA Omniverse,及时获取最新资讯。

使用开发者入门套件,快速开发并增强您自己的应用与服务

加入我们于 物理 AI 与机器人日活动,届时将汇聚开发者、研究人员和技术领导者,共同探讨 NVIDIA 技术如何推动 AI 新时代的发展。

 

标签