You are currently viewing 【NVIDIA Isaac Sim 實戰】打造你的數位孿生實驗室:從 Docker 部署到遠端串流全攻略

【NVIDIA Isaac Sim 實戰】打造你的數位孿生實驗室:從 Docker 部署到遠端串流全攻略

  • 隨著 AI 與機器人技術的飛速發展,如何在低成本、零風險的環境下訓練智慧體,成為開發者的首要難題。這正是 NVIDIA Isaac Sim 大顯身手的地方。作為一款建立在 NVIDIA Omniverse 平台上的機器人模擬應用程式,Isaac Sim 提供了逼真的物理模擬(PhysX)與電影級的光線追蹤視覺效果。
  • 它不僅能讓開發者在虛擬世界中建立「數位孿生(Digital Twin)」,模擬真實場景中的物理互動,更強大的是其合成數據生成(Synthetic Data Generation)功能,透過域隨機化(Domain Randomization)產生成千上萬種變化的訓練資料,大幅縮短模型訓練週期。無論是驗證導航演算法、訓練機械手臂抓取,還是與 ROS/ROS2 系統的無縫接軌,Isaac Sim 都是目前最強大的開發利器。本系列教學將帶領大家從零開始,掌握這個強大的模擬工具。
  • 首先必須先確保 Docker 環境已就緒,且最重要的 NVIDIA Container Toolkit 已正確配置,讓容器能順利穿透並調用底層的 GPU 算力;同時,你也需要確保能連線至 NGC (NVIDIA GPU Cloud) 伺服器以獲取映像檔。
  • 方法其實很多種, 但是小編最推薦使用Docker 的映像檔, 透過Image 可以非常快的就建立好所有的環境, 只需要執行即可
  • Step1: 下載 Isaac Sim Docker 映像檔
    • 一切的起點,始於正確的映像檔(Image)。由於 Isaac Sim 是一個高度複雜的軟體集合體,包含了 Omniverse Kit、Python 環境、ROS 橋接器以及大量的物理引擎函式庫,因此我們不透過傳統安裝方式,而是利用 NVIDIA NGC (NVIDIA GPU Cloud) 來獲取打包好的 Docker Image。
    • docker pull nvcr.io/nvidia/isaac-sim:5.1.0
  • Step2: 建立掛載資料夾(cache / logs / data)
    • 在使用 Docker 進行開發時,新手最常犯的錯誤就是忽略了「容器是揮發性的(Ephemeral)」。一旦容器關閉或刪除,裡面未保存的數據就會煙消雲散。為了避免每次重啟 Isaac Sim 都要重新編譯 Shader 或重新下載資產,我們必須在 Host 端(你的主機)建立專屬的資料夾,並將其掛載(Mount)進容器中。
    • mkdir -p ~/docker/isaac-sim/cache/kit mkdir -p ~/docker/isaac-sim/cache/ov mkdir -p ~/docker/isaac-sim/cache/pip mkdir -p ~/docker/isaac-sim/cache/glcache mkdir -p ~/docker/isaac-sim/cache/computecache mkdir -p ~/docker/isaac-sim/logs mkdir -p ~/docker/isaac-sim/data mkdir -p ~/docker/isaac-sim/documents
mkdir -p ~/docker/isaac-sim/cache/kit
mkdir -p ~/docker/isaac-sim/cache/ov
mkdir -p ~/docker/isaac-sim/cache/pip
mkdir -p ~/docker/isaac-sim/cache/glcache
mkdir -p ~/docker/isaac-sim/cache/computecache
mkdir -p ~/docker/isaac-sim/logs
mkdir -p ~/docker/isaac-sim/data
mkdir -p ~/docker/isaac-sim/documents
  • Step3: 啟動 Isaac Sim Docker 容器
    • 啟動一個需要重度 GPU 運算的容器,絕非簡單的 docker run 可以解決。這是整個教學中最關鍵、參數也最複雜的一步。我們需要透過特定的 Flag(旗標)來告訴 Docker 守護進程:這個容器有權限直接存取底層的 NVIDIA GPU 硬體,並且需要與 Host 端共享網路堆疊。
docker run --name isaac-sim \
--entrypoint bash -it --gpus all \
-e "ACCEPT_EULA=Y" \
-e "PRIVACY_CONSENT=Y" \
--rm --network=host \
-v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw \
-v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
-v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
-v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
-v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
-v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
-v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
-v ~/docker/isaac-sim/documents:/root/Documents:rw \
nvcr.io/nvidia/isaac-sim:5.1.0
  • Step4: 進入container 後執行
    • 當容器成功運行後,我們其實只是進入了一個裝有 Isaac Sim 的 Linux 環境,模擬程式本身尚未啟動。對於伺服器或雲端部署來說,我們通常不需要(也無法)在伺服器端直接顯示圖形介面,這就是所謂的 Headless Mode(無頭模式)
    • ./runheadless.sh –livestream webrtc
  • Step5: client 端下載streaming client
    • 既然我們的 Isaac Sim 是運行在 Docker 容器(可能是遠端伺服器)中,那我們要如何看見模擬畫面並與之互動呢?這就需要 Omniverse Streaming Client。這項技術將原本需要在本機進行的繁重圖形運算留在伺服器端,並將渲染好的畫面以低延遲的視訊流(Video Stream)傳送到你的筆電或桌機上。
    • 本章節將教你如何在 Client 端(你的操作電腦)下載並安裝這個客戶端軟體。這實現了完美的「前後端分離」:後端 Docker 負責沉重的物理模擬與光追運算,前端只需要輕量級的應用程式來接收畫面與傳送滑鼠鍵盤指令。無論是透過 WebSocket 還是 WebRTC,這都是目前體驗雲端機器人模擬最流暢的方式,讓你像是在玩雲端遊戲一樣操作精密的機器人模擬。
  • 執行成功的畫面
    • 經過了一連串的環境配置、指令輸入與連線設定,終於來到了見證成果的時刻。當 Streaming Client 成功連線到 Docker 內的 Isaac Sim 實例時,你不應該只看到黑畫面,而應該看到一個清晰、具備光影效果的 3D Viewport 介面。
    • 這個章節將展示「成功」是什麼樣子:你會看到 Isaac Sim 的標準 GUI 載入,右上角的 FPS 數值穩定跳動,且能夠透過滑鼠自由旋轉視角。如果畫面中出現了經典的 Grid 地板或是預設的機器人手臂,並且沒有報錯彈窗,那麼恭喜你,你已經成功搭建了一套企業級的機器人模擬環境。這張截圖不僅是教學的終點,更是你開始訓練 AI、測試導航演算法的起點。
0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments