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

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

利用NVIDIA Isaac Sim構(gòu)建合成數(shù)據(jù)流水線
評論