為機器人仿真構(gòu)建逼真的 3D 環(huán)境可能是一項耗時且勞動密集型的任務(wù)。現(xiàn)在,借助NVIDIA Omniverse NuRec,您只需使用智能手機即可完成整個流程。本文將逐步介紹操作方法:從使用 iPhone 拍攝照片,到利用3DGUT進行 3D 場景重建,再到將重建的場景導入NVIDIA Isaac Sim并添加機器人。若要跳過重建步驟(步驟 1–3),直接在 Isaac Sim(步驟 4)中探索該場景,可前往NVIDIA Physical AI上的 Hugging Face 獲取相關(guān)資源。
第 1 步:捕捉真實場景
第一步是拍攝需要重建的真實環(huán)境的照片。如今已無需特殊硬件,使用普通的智能手機攝像頭即可完成。
當您在場景中移動時,可以使用手機進行拍攝。以下是一些攝影測量的實用建議:
照明和焦點應(yīng)準確且穩(wěn)定。避免畫面快速移動或出現(xiàn)模糊。若條件允許,建議使用更快的快門速度(例如 1/100 秒或更快)。
在內(nèi)置相機應(yīng)用中,您無法直接設(shè)置快門速度,但可以采取以下措施進行優(yōu)化:
鎖定對焦與曝光:長按畫面主體可啟用 AE/AF 鎖定,隨后輕微向下拖動曝光滑塊(+0.3 至 +0.7 EV),有助于保留高光細節(jié)。
保持穩(wěn)定:建議使用三腳架或?qū)⒃O(shè)備靠在穩(wěn)固表面上;每一幀越清晰,COLMAP 在特征追蹤時的表現(xiàn)就越出色。
避免自動切換微距模式:若使用 iPhone Pro 機型,為防止鏡頭間焦距突然切換,請前往“設(shè)置” →“相機” → 關(guān)閉“自動微距”功能。
如需手動控制快門速度和 ISO,可選用以下支持固定快門與 ISO 的 iOS 應(yīng)用程序:Lumina:手動相機、Halide、ProCamera、ProCam 8、Moment Pro Camera、Lightroom Mobile。
建議快門速度設(shè)置為:戶外 1/120 至 1/250 秒,室內(nèi) 1/100 秒。ISO 值應(yīng)盡量調(diào)低,以在保證合理曝光的同時減少噪點。
同時建議鎖定白平衡,避免不同幀之間出現(xiàn)色彩偏移。
為實現(xiàn)遮擋效果,請圍繞該區(qū)域進行緩慢環(huán)繞,并從多個高度和角度進行捕捉。建議保持 60% 的重疊率以確保安全。
提示:COLMAP 需要標準圖像格式。如果您的 iPhone 保存的是 HEIC 格式,請前往“Settings” (設(shè)置) + “Camera” (相機) + “Formats” (格式),然后選擇“Most Compatible” (兼容性優(yōu)先),以拍攝 JPEG 格式;或者在使用 COLMAP 前,將圖像導出或轉(zhuǎn)換為 JPG 格式。
第 2 步:利用 COLMAP 生成稀疏重建
當您擁有照片后,下一步是從這些圖像中恢復出三維結(jié)構(gòu)并確定相機的位置。本示例采用流行的開源運動恢復結(jié)構(gòu)(Structure-from-Motion,SfM)與多視角立體匹配(Multi-View Stereo)工作流COLMAP來實現(xiàn)這一目標。COLMAP 將生成場景的稀疏點云,并估算每張照片對應(yīng)的相機參數(shù)。
COLMAP 還提供了以下命令行路徑。但請注意,使用 GUI 進行自動重建是更簡便的入門方式。為了與 3DGUT 兼容,請選擇針孔或簡單針孔相機模型。
# Feature detection & extraction
$ colmap feature_extractor \
--database_path ./colmap/database.db \
--image_path ./images/ \
--ImageReader
# 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/ 文件夾,以及存放重建數(shù)據(jù)的稀疏/ 目錄)。完成 COLMAP 處理后,您將獲得:
稀疏點云場景
所有圖像的相機位姿數(shù)據(jù)
這是使用 3DGUT 進行 3D 重建所需輸入的信息(第 3 步)。
第 3 步:使用 3DGUT 進行密集 3D 重建的訓練,并將結(jié)果導出為 USD
現(xiàn)在來看看效果。下一步,利用 3DGUT 算法將稀疏模型和圖像轉(zhuǎn)換為更加逼真的密集 3D 場景:
設(shè)置 3DGUT 環(huán)境:3DGUT 存儲庫需要在配備 CUDA 11.8、GCC ≤ 11 和 NVIDIA GPU 的 Linux 系統(tǒng)上運行。如需查看官方 3DGUT 代碼,請訪問nv-tlabs/3dgrut倉庫,并按照說明安裝所需的依賴庫。
克隆 3DGUT 存儲庫: 使用指定命令克隆并安裝 3DGUT 存儲庫。為確??寺〕晒Γ诶^續(xù)操作前,請使用存儲庫中的示例數(shù)據(jù)集運行測試重建,以驗證其功能是否正常。
|
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)密集化策略相結(jié)合。在實際應(yīng)用中,該方法能夠?qū)χ亟ㄟ^程中存在不確定性的高斯進行采樣與密集化處理,有效增強薄結(jié)構(gòu)和邊緣的清晰度,提升整體重建保真度,同時相較于基準配置,訓練耗時更少。
運行 3DGUT 訓練腳本并導出 USDZ:在激活當前環(huán)境后,您可通過執(zhí)行提供的 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 數(shù)據(jù),并對 3D 表征進行優(yōu)化。所需時間取決于場景的復雜程度和 GPU 性能,小型場景可能只需幾分鐘,而細節(jié)豐富的場景則可能需要數(shù)小時。
此過程完成后,應(yīng)對場景進行密集重建,輸出結(jié)果包含一個含有模型檢查點的目錄。設(shè)置export_usdz.enabled=true和export_usdz.apply_normalizaing_transform=true標志還會生成 USDZ 文件。
export_usdz.enabled=truewrites a USDZ of your reconstructed scene, so you can load it straight into Isaac Sim.
export_usdz.apply_normalizing_transform=trueapplies a primitive normalization (centers/scales the scene near the origin). It does not guarantee the floor is exactly atz = 0. In Isaac Sim, you can add a Ground Plane or nudge the scene root (translate/rotate) for alignment.
將重建的場景導出為 USD 格式后,即可在 Isaac Sim 中使用。生成的 USDZ 文件采用自定義 USD 模式,本質(zhì)上是一個打包的 USD 場景,包含 3D 重建中的全部高斯拼接數(shù)據(jù)。需要注意的是,AOUSD 正在討論該模式的標準化。
第 4 步:在 Isaac Sim 中部署重建的場景,并添加機器人
有趣的是,隨著現(xiàn)實世界場景在 USD 中被完整重建,它們便可在 Isaac Sim 中用于虛擬機器人的訓練與測試。
要加載場景并插入機器人,請按以下步驟操作:
1. 啟動支持 NuRec/3DGUT 功能的 Isaac Sim 5.0 或更高版本。打開 Isaac Sim 后,從空階段開始(文件 > 新建)。
2. 導入 USD 場景: 從菜單中選擇“File” (文件) > “Import” (導入),然后定位到場景的 USDZ 文件。 alternatively,也可將 USDZ 文件從 Isaac Sim 內(nèi)容瀏覽器直接拖拽至場景中。當 Isaac Sim 加載該文件時,您將在視口中看到重建的環(huán)境,呈現(xiàn)為彩色點云或高斯點的集合。通過相機視角觀察時,其效果近乎一張逼真的 3D 圖像。
提示:您可以通過 Isaac Sim 導航功能使用 WASD 鍵,或右鍵單擊并拖動,在場景中自由移動,從不同角度進行查看和檢查。
3. 為物理效果添加地平面: 您重建的場景僅包含視覺幾何圖形(來自 3DGUT 的點或體素),不具備固有的碰撞屬性。為了讓機器人能夠在場景中移動,需要添加一個地面,使其有可支撐的表面。在 Isaac Sim 中,此操作非常簡便:點擊“Create”(創(chuàng)建)>“Physics”(物理效果)>“Ground Plane”(地面平面)。此時會生成一個平面(通常位于z = 0),覆蓋場景的占地面積。您可能需要調(diào)整其縮放比例(例如,將 x 和 y 均設(shè)為 100,如視頻 1 所示)。請進一步調(diào)節(jié)該平面的位置、旋轉(zhuǎn)和縮放,使其與重建的地板對齊。
接下來,連接代理網(wǎng)格以接收陰影。代理網(wǎng)格是一種簡單的支撐結(jié)構(gòu),通過提供可投射陰影的表面,使場景中的物體在視覺上更好地與地面銜接。您已經(jīng)創(chuàng)建了一個網(wǎng)格,即地平面。要將其設(shè)置為代理網(wǎng)格,請執(zhí)行以下步驟:
選擇 NuRec Prim(位于全局 xform 下的體積 Prim)。在“Raw USD Properties”(原始 USD 屬性)面板中,找到 NuRec/Volume 部分,并定位到“Proxy”(代理)字段。
點擊以添加您的代理網(wǎng)格基元。
再次選擇您的地平面,確?!癎eometry”(幾何圖形)>“Matte Object”(啞光對象)屬性已啟用。
4. 從 Isaac Sim 資產(chǎn)中插入機器人: Isaac Sim 提供了多種 SimReady 機器人模型。要在場景中添加機器人,請前往頂部菜單欄,選擇“Create” (創(chuàng)建) > “Robots” (機器人),然后從列表中選取所需的機器人。例如,可選擇廣受好評的 Franka Emika Panda 機械臂,也可根據(jù) Isaac Sim 庫中的可用資源,選擇 LeatherBack、Carter 或 TurtleBot 等移動機器人,甚至人形機器人。
單擊您選擇的機器人素材后,該素材將被添加到場景中。請使用“Move/ Rotate” (移動/ 旋轉(zhuǎn)) 工具,將機器人調(diào)整至重建場景中的合適位置。
5. 按下“Play”(播放)并觀看: 此時,機器人應(yīng)位于逼真的 3D 場景中,可以坐姿或站姿呈現(xiàn)。如果是機械臂,您還可以為其添加動畫,甚至運行強化學習,具體取決于您的應(yīng)用場景?,F(xiàn)在,現(xiàn)實世界環(huán)境已導入 Isaac Sim,您可以像操作其他仿真環(huán)境一樣對其進行處理。
在 NVIDIA Isaac Sim 中開始重建場景
這個簡潔而真實感十足的仿真工作流,可將日常的 iPhone 拍攝照片轉(zhuǎn)化為交互式、機器人就緒的場景。整個流程就像在 NVIDIA Isaac Sim 中完成圖像采集、COLMAP 處理、3DGUT 重建、USDZ 導出并加載使用一樣簡單。該工作流用一種簡單且可復現(xiàn)的數(shù)字孿生路徑,取代了傳統(tǒng)耗時的攝影測量流程,讓你能夠快速進行驅(qū)動、路徑規(guī)劃與測試。準備好開始體驗了嗎?
準備好開始體驗了嗎?
打開現(xiàn)成場景:從 Hugging Face 的NVIDIA 物理 AI集合中獲取 NuRec 樣本,并在 Isaac Sim 中加載運行。
試用真實到仿真的參考工作流:基于 Isaac Sim、Isaac ROS、3DGUT、cuSFM、nvBlox 和 FoundationStereo,按照從立體攝像頭數(shù)據(jù)重建場景的流程,為機器人開發(fā)構(gòu)建高保真的 3D 環(huán)境,請遵循從立體攝像頭數(shù)據(jù)重建場景的步驟。
-
智能手機
+關(guān)注
關(guān)注
66文章
18683瀏覽量
185810 -
機器人
+關(guān)注
關(guān)注
213文章
30892瀏覽量
221158 -
NVIDIA
+關(guān)注
關(guān)注
14文章
5565瀏覽量
109374
原文標題:僅使用智能手機在 NVIDIA Isaac Sim 中重建場景
文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
僅使用智能手機在NVIDIA Isaac Sim中重建場景
評論