隨著機器人承擔的動態移動任務日益增多,開發者需要具備物理級精度且能夠跨環境和工作負載高效擴展的仿真系統。訓練用于執行這些任務的機器人策略與模型依賴大量高質量數據,而現實世界中的數據采集通常既昂貴又耗時。
合成數據,利用NVIDIA Isaac Sim中的模擬環境生成,是擴展數據生成過程的一種有效方法。
在本博客中,我們將探討:
使用 NVIDIA Omniverse NuRec 引入環境素材,構建模擬環境。
將仿真就緒(SimReady)資產添加至仿真場景中。
利用 MobilityGen 在 Isaac Sim 或 NVIDIA Isaac Lab 中生成合成數據。
通過NVIDIA Cosmos世界基礎模型(WFM)對生成的數據進行增強。
使用 Omniverse NuRec 構建 3D 數字孿生
Omniverse NuRec 是一項基于真實傳感器數據,用于重建和渲染 3D 交互式仿真的技術。重建的環境可應用于機器人、自動駕駛以及工業和地理空間等領域,支持合成數據生成、AI 模型訓練及模型行為測試。
Isaac Sim 支持基于 NuRec Gaussian 的神經輻射場(NeRF)、3D Gaussian Splatting(3DGS)以及 3D Gaussian Unscented Transform(3DGUT)。渲染數據采用 OpenUSD 格式,適用于仿真場景。您可以在 Isaac Sim 中加載兼容的資源和場景,并通過OmniNuRecVolumeAPI屬性對渲染效果進行控制。如需了解更多關于 NuRec 在機器人應用中的使用案例,請參考相關文檔。
將 SimReady 資產添加至模擬場景中
SimReady 資產是基于OpenUSD的高精度 3D 模型,具備內置的語義標注、密集字幕以及基于USDPhysics的物理特性,可顯著簡化機器人仿真的配置流程。
SimReady Warehouse 01 資產包包含大量用于托盤、存儲機架和坡道等對象的USD 模型,可直接拖放到場景中使用。針對機器人及相關應用場景,可進一步探索物理 AI 數據集。
通過這種方式,我們可以在仿真中輕松構建包含多個對象的場景。這些模擬環境的一個重要用途是收集用于訓練機器人策略的合成數據,相關內容我們將在下一節中詳細介紹。
采用SimReady 標準化工作流程,在 OpenUSD 中設計、驗證并實施統一的 3D 資產規范。
使用 MobilityGen 生成合成數據
MobilityGen 是一個基于 Isaac Sim 構建的移動機器人數據生成工作流。它支持多種數據采集方式,包括通過鍵盤和游戲手柄進行遠程操作的手動方法,以及采用隨機加速和隨機路徑跟隨的自動化方法。
在以下示例中,您將學習如何使用MobilityGen為 Isaac Sim 中的H1 人形機器人生成數據。該工作流同樣適用于其他類型的機器人,例如四足機器人和自主移動機器人(AMR),并已在Spot和Carter機器人上完成驗證。
盡管 MobilityGen 的數據可用于訓練機器人的移動策略,但在數據中引入視覺多樣性時,性能將得到提升。下一節中,我們將探討如何利用 NVIDIA Cosmos 增強數據的視覺多樣性。
下文概述了使用 MobilityGen 生成數據的具體步驟。
構建占用地圖: 這是一種基于網格的環境表示方法,用于描述機器人所處空間,其中每個網格單元表示該位置被障礙物占據的概率。
記錄軌跡: 當移動機器人在環境中行進時,系統會記錄其運動軌跡,包含每一時刻的位置、速度和朝向信息。
回放和渲染: 支持對生成的軌跡進行回放,以便評估性能并實現數據的可視化呈現。
在以下示例中,我們將使用 Isaac Sim 提供的倉庫環境來運行 MobilityGen。您也可以利用上一節中介紹的 SimReady 素材,自行構建相應的環境。
構建占用地圖的步驟
加載倉庫階段:
打開內容瀏覽器(窗口 > 瀏覽器 > 內容)。 在 Isaac Sim/Environments/Simple_Warehouse/warehouse_multiple_shelves.usd 中加載倉庫 USD 文件。
創建占用地圖:
選擇“Tools”(工具)>“Robotics”(機器人)>“Occupancy Map”(占用地圖),以打開擴展程序。 在“Occupancy Map”(占用地圖)窗口中,將 Origin 設置為:
X:2.0 Y:0.0 Z:0.0
注意:要在文本框中輸入數值,請按 Ctrl + 左鍵單擊以激活輸入模式。
在“Occupancy Map”(占用地圖)窗口中,將“Upper Bound”(上限)設置為:
X:10.0 Y:20.0 Z:2.0(假設機器人可在 2 米高的立交橋下通行)
將“Lower Bound”(下限)設置為:
X:-14.0 Y:-18.0 Z:0.1(假設機器人可越過高于 5 厘米的障礙物)
單擊“Calculate”(計算)以生成占用地圖。 單擊“Visualize Image”(可視化圖像)查看生成結果。 在“Visualization”(可視化)窗口的“Rotate Image”(旋轉圖像)下方,選擇 180。 在“Visualization”(可視化)窗口的“Coordinate Type”(坐標類型)下,選擇“ROS Occupancy Map Parameters File YAML”(ROS 占用地圖參數文件 YAML)。 單擊“Regenerate Image”(重新生成圖像)。 將生成的 YAML 文本復制到剪貼板。 在所選的文本編輯器中,創建一個新文件,命名為:~/MobilityGenData/maps/warehouse_multiple_shelves/map.yaml(注意:在 Windows 系統中,請將 ~ 替換為自定義的目錄路徑) 將從“Visualization”(可視化)窗口復制的 YAML 文本粘貼至該文件中。 修改其中的行:image: warehouse_multiple_shelves.png為:image: map.png保存文件。 返回“Visualization”(可視化)窗口,單擊“Save Image”(保存圖像)。 在樹狀資源管理器中,打開文件夾:~/MobilityGenData/maps/warehouse_multiple_shelves在文件名輸入框中,輸入:map.png單擊“Save”(保存)。
請確認您當前是否存在名為~/MobilityGenData/maps/warehouse_multiple_shelves/的文件夾,且該文件夾中包含map.yaml和map.png兩個文件。
記錄軌跡的步驟
創建環境地圖后,您即可使用 MobilityGen 生成數據:
啟用 MobilityGen UI 擴展程序。
前往Window > Extensions,然后搜索MobilityGen UI。
單擊MobilityGen UI擴展程序的切換開關。
注意:此時應會出現兩個窗口。其中一個為 MobilityGen 用戶界面,另一個用于顯示占用地圖及可視化效果。窗口初次出現時可能相互遮擋,因此建議將它們分別拖動至窗口窗格中,以便同時查看這兩個窗口。
構建場景:
在MobilityGen窗口的Stage下,粘貼以下 USD 路徑:
http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.0/Isaac/Environments/Simple_Warehouse/warehouse_multiple_shelves.usd
在MobilityGen窗口的Occupancy Map區域,輸入此前創建的map.yaml文件的路徑:
~/MobilityGenData/maps/warehouse_multiple_shelves/map.yaml
在Robot下拉菜單中,選擇H1Robot。
在Scenario下拉菜單中,選擇KeyboardTeleoperationScenario。
單擊Build。
數秒后,請確認場景是否成功加載,并檢查占用地圖是否正常顯示。
使用以下按鍵試駕機器人:
W – 向前移動
A – 向左轉
S – 向后移動
D – 向右轉
開始錄制:
單擊Start recording以啟動日志記錄。
操控機器人在場景中移動。
完成操作后,單擊Stop recording以結束錄制。
默認情況下,數據現在會記錄到~/MobilityGenData/recordings。
回放與渲染步驟
在記錄軌跡(包括機器人位姿等數據)后,您即可回放該場景。
使用 Isaac Sim 自帶的replay_directory.pyPython 腳本。在 Isaac Sim 目錄下執行以下命令即可運行該腳本:
./python.sh standalone_examples/replicator/mobility_gen/replay_directory.py --render_interval 40 --enable isaacsim.replicator.mobility_gen.examples
腳本完成后,請確認您擁有~/MobilityGenData/replays文件夾,其中包含已渲染的傳感器數據。您可以打開該文件夾以瀏覽和探索相關數據。
有關如何加載和處理開源MobilityGen GitHub 倉庫中記錄數據的示例。建議您運行Gradio 可視化腳本,以直觀展示所記錄的數據。
如需了解更多信息(例如如何添加自定義機器人),請參閱使用 MobilityGen 生成數據的教程。
使用 NVIDIA Cosmos 增強生成式訓練數據
使用 MobilityGen 生成數據后,通過Cosmos Transfer從合成機器人數據生成逼真的視頻。該方法增加了視覺多樣性,有助于縮小仿真與現實之間的差距,并提升策略在實際部署中的表現。

圖 1。高級 SDG 工作流程包含使用 MobilityGen 生成合成數據,并通過 Cosmos Transfer 進行數據增強,從而構建用于訓練機器人模型的高質量數據集。
Cosmos Transfer 是一種 WFM,能夠根據 RGB、深度、分割等多種視頻模式的輸入生成逼真的視頻。除了輸入視頻外,您還可以提供文本提示,用于具體指導希望生成的視頻內容。以下是提示示例:
A realistic warehouse environment with consistent lighting, perspective, and camera motion. Preserve the original structure, object positions, and layout from the input video. Ensure the output exactly matches the segmentation video frame-by-frame in timing and content. Camera movement must follow the original path precisely.
使用 Cosmos Transfer 運行推理的示例命令如下:
|
export CUDA_VISIBLE_DEVICES="${CUDA_VISIBLE_DEVICES:=0,1,2,3}" export CHECKPOINT_DIR="${CHECKPOINT_DIR:=./checkpoints}" export NUM_GPU="${NUM_GPU:=4}" PYTHONPATH=$(pwd) torchrun --nproc_per_node=$NUM_GPU --nnodes=1 --node_rank=0 cosmos_transfer1/diffusion/inference/transfer.py \ --checkpoint_dir $CHECKPOINT_DIR \ --video_save_folder outputs/example1_single_control_edge \ --controlnet_specs assets/inference_cosmos_transfer1_single_control_edge.json \ --offload_text_encoder_model \ --offload_guardrail_models \ --num_gpus $NUM_GPU |
在實驗室的閉環評估過程中,基于合成數據與 Cosmos 增強數據訓練的策略表現 consistently 優于僅使用合成數據訓練的策略。這類結合了合成數據和 Cosmos 增強數據的訓練策略,能夠有效應對以下場景:
繞過透明的障礙物。
避開與背景融為一體的障礙物,例如灰色地板上的灰色電線桿。
靠近障礙物行駛,以縮短到達目標位置的總距離。
在光線較暗的環境中實現穩定導航。
在狹窄通道中完成精準通行。
您可以對任何真實或合成的視頻數據運行 Cosmos Transfer。另一個示例是使用 Cosmos 進行合成數據集增強的教程。該教程介紹了如何在 Isaac Sim 中利用 Replicator 生成合成數據。
入門指南
NVIDIA 提供豐富的OpenUSD 資源,助您加速學習進程。從自定進度的Learn OpenUSD、數字孿生和機器人培訓課程入手,逐步掌握本指南所涵蓋的核心技能。
對于希望在機器人領域職業發展上更進一步的專業人士,OpenUSD Development 認證提供了一項專業級考試,用以驗證您在使用 OpenUSD 構建、維護和優化 3D 內容流程方面的專業能力。您可在NVIDIA GTC 華盛頓特區現場獲取 OpenUSD 認證,并在物理 AI 與機器人日期間深入了解用于機器人開發的合成數據。
-
機器人
+關注
關注
213文章
30491瀏覽量
219113 -
NVIDIA
+關注
關注
14文章
5480瀏覽量
108958 -
數字孿生
+關注
關注
4文章
1604瀏覽量
13645
原文標題:借助 NVIDIA Isaac Sim 構建合成數據流水線,訓練更智能的機器人
文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄

利用NVIDIA Isaac Sim構建合成數據流水線
評論