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

圖 1。高級 SDG 工作流程包含使用 MobilityGen 生成合成數(shù)據(jù),并通過 Cosmos Transfer 進行數(shù)據(jù)增強,從而構(gòu)建用于訓練機器人模型的高質(zhì)量數(shù)據(jù)集。
Cosmos Transfer 是一種 WFM,能夠根據(jù) RGB、深度、分割等多種視頻模式的輸入生成逼真的視頻。除了輸入視頻外,您還可以提供文本提示,用于具體指導希望生成的視頻內(nèi)容。以下是提示示例:
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 |
在實驗室的閉環(huán)評估過程中,基于合成數(shù)據(jù)與 Cosmos 增強數(shù)據(jù)訓練的策略表現(xiàn) consistently 優(yōu)于僅使用合成數(shù)據(jù)訓練的策略。這類結(jié)合了合成數(shù)據(jù)和 Cosmos 增強數(shù)據(jù)的訓練策略,能夠有效應(yīng)對以下場景:
繞過透明的障礙物。
避開與背景融為一體的障礙物,例如灰色地板上的灰色電線桿。
靠近障礙物行駛,以縮短到達目標位置的總距離。
在光線較暗的環(huán)境中實現(xiàn)穩(wěn)定導航。
在狹窄通道中完成精準通行。
您可以對任何真實或合成的視頻數(shù)據(jù)運行 Cosmos Transfer。另一個示例是使用 Cosmos 進行合成數(shù)據(jù)集增強的教程。該教程介紹了如何在 Isaac Sim 中利用 Replicator 生成合成數(shù)據(jù)。
入門指南
NVIDIA 提供豐富的OpenUSD 資源,助您加速學習進程。從自定進度的Learn OpenUSD、數(shù)字孿生和機器人培訓課程入手,逐步掌握本指南所涵蓋的核心技能。
對于希望在機器人領(lǐng)域職業(yè)發(fā)展上更進一步的專業(yè)人士,OpenUSD Development 認證提供了一項專業(yè)級考試,用以驗證您在使用 OpenUSD 構(gòu)建、維護和優(yōu)化 3D 內(nèi)容流程方面的專業(yè)能力。您可在NVIDIA GTC 華盛頓特區(qū)現(xiàn)場獲取 OpenUSD 認證,并在物理 AI 與機器人日期間深入了解用于機器人開發(fā)的合成數(shù)據(jù)。
-
機器人
+關(guān)注
關(guān)注
213文章
31124瀏覽量
222439 -
NVIDIA
+關(guān)注
關(guān)注
14文章
5602瀏覽量
109828 -
數(shù)字孿生
+關(guān)注
關(guān)注
4文章
1664瀏覽量
13985
原文標題:借助 NVIDIA Isaac Sim 構(gòu)建合成數(shù)據(jù)流水線,訓練更智能的機器人
文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
FPGA中的流水線設(shè)計
流水線中的相關(guān)培訓教程[4]
如何選擇合適的LED生產(chǎn)流水線輸送方式
利用合成數(shù)據(jù)和NVIDIA ISAAC Sim加速機器人訓練
NVIDIA Isaac Sim 2022.1版本的亮點及功能
使用Omniverse Replicator構(gòu)建自定義合成數(shù)據(jù)生成管道
利用NVIDIA Isaac Sim構(gòu)建合成數(shù)據(jù)流水線
評論