Isaac Sim 機器人模擬器介紹、安裝與 Docker [1]

2023-01-07 21:00:17

前言與參考

此文書寫於: January 6, 2023, 更新於 January 6, 2023 ;可能會隨著時間的變化 此教學會有過時概念哦

Isaac Sim 相關參考連結:

  1. 官方檔案地址
  2. 官方docker image 映象地址
  3. 官方討論 論壇連結,建議沒啥事就可以逛逛,看問題和回答也是件很有意思的事

本篇主要是根據參考1,相當部分文字直接翻譯而來


Test computer and System:

  • Desktop setting: i9-12900KF, GPU 3090, CUDA 11.3
  • System setting: Ubuntu 20.04, ROS noetic (Python 3.8)

Introduction 介紹

Isaac Sim是什麼勒?是一個針對於機器人的模擬器;之前我有寫過一系列的CARLA模擬器教學,而這裡為什麼要新開模擬器呢?主要就是CARLA的定位是針對於室外無人駕駛的,而Isaac Sim更多針對於室內的機器人系列,包括AGV, 車上帶個機械臂,其實更靠近 CoppeliaSim VREP 的使用方向。

官方截圖

既然介紹到了模擬器,那一口氣都說一下好了 【我和小夥伴已知的】:

Some simulators for robotics or autonomous driving scenarios

Isaac Sim背靠NVIDIA 英偉達!所以對比與coppeliasim 它對於感測器和世界的模擬更更為真實一點【我沒非常仔細對比過 說錯了不怪我 純肉眼看的感覺】,然後是對於GPU的支援,只要GPU到位 模擬收資料速度什麼的都應該可以很快

官方介紹翻譯:

Isaac Sim 具有構建虛擬機器器器人世界和實驗的基本功能。它為研究人員和從業者提供了建立穩健、物理上準確的模擬和合成資料集所需的工具和工作流程。Isaac Sim 通過 ROS/ROS2 支援導航和操作應用程式。它模擬來自 RGB-D、鐳射雷達和 IMU 等感測器的感測器資料,用於各種計算機視覺技術,例如域隨機化、地面實況標記、分割和邊界框。

開發工作流程圖

從圖裡能看出來 整個workflow,UI、Python API、ROS等 均可以通訊

看官方檔案 應該是熟悉一下UI 比如新增物品之類的

本機環境

Install 安裝

點選Download,然後填寫資訊後就可以選擇下載Window or Linux了,安裝完成後進入Running 執行部分;前提提要 安裝顯示卡及顯示卡驅動,詳情點選此文字 見部落格

2. Workstation Installation - Omniverse Robotics documentation

此為Ubuntu範例,WIndow內建有nvidia官方拍的視訊

  1. 下載 Download the Omniverse Launcher.

  2. 安裝執行 Install Omniverse Launcher

    sudo chmod +x omniverse-launcher-linux.AppImage
    ./omniverse-launcher-linux.AppImage
    
  3. 下載 Isaac Sim;如圖 【全UI操作】 下載 Isaac Sim 需要 7.49G

Running 執行

如圖 安裝完成後會出現 isaac sim 然後點一下launch,然後再按個start;後續可以從LIBRARY處點選launch

右鍵隨便加了一個圓錐 順便截圖有指明視訊記憶體耗的情況【顯示器是1080p的】

Docker及雲端

Install 安裝

3. Container Installation - Omniverse Robotics documentation

Docker 安裝見 詳情點選此進入對應部落格文章

如下 需要像dockerhub一下注冊賬號等

docker login nvcr.io

docker pull nvcr.io/nvidia/isaac-sim:2022.2.0

然後呢 需要用 Omniverse Streaming Client 來進行視窗展示

注意如果是伺服器!!大部分伺服器為了安全著想 只會開幾個固定埠進行連結,所以一定要確保自己以下埠開啟並可以連線:

Should the host be located on the infrastructure of a third-party Cloud provider, 
it may additionally be required that the following ports be opened, and that 
firewall rules allow traffic inbound and outbound traffic:

TCP: 47995 to 48012
TCP: 49000 to 49007
TCP: 49100
UDP: 47995 to 48012
UDP: 49000 to 49007

更多可見 官方給的提示,點選此跳轉官方網頁

Running 執行

因為手頭沒有可用伺服器,所以就展示一下Docker的用法,主要是--net=host後一切都好辦

  1. 用image開一個container

    docker run --name isaac-sim --entrypoint bash -it --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
        -v /usr/share/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json \
        -v /usr/share/vulkan/implicit_layer.d/nvidia_layers.json:/etc/vulkan/implicit_layer.d/nvidia_layers.json \
        -v /usr/share/glvnd/egl_vendor.d/10_nvidia.json:/usr/share/glvnd/egl_vendor.d/10_nvidia.json \
        -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/config:/root/.nvidia-omniverse/config: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:2022.2.0
    

    唯一一個需要注意的點【因為官方預設的不適配我的環境 上述已經是變了的】 找到自己nvidia_icd.json 檔案地址;可能地址如下:

    # 官方預設
    -v /etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json \
    -v /etc/vulkan/implicit_layer.d/nvidia_layers.json:/etc/vulkan/implicit_layer.d/nvidia_layers.json \
    
    # 我的環境
    -v /usr/share/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json \
    -v /usr/share/vulkan/implicit_layer.d/nvidia_layers.json:/etc/vulkan/implicit_layer.d/nvidia_layers.json \
    
  2. 在container執行一行

    # inside container
    ./runheadless.native.sh
    

    請遵循官方的手冊 等到終端列印出 再進行下面的視窗展示 【第一次一般慢一點 官方文字:It may take a few minutes for Isaac Sim to be completely loaded.】

    Isaac Sim Headless Native App is loaded.
    # 實際上我顯示的是這個
    [22.315s] app ready
    
  3. Omniverse Streaming Client 來進行視窗展示

    然後注意這一步 一開始可能顯示的是RTX Loading 就是還在編譯 ray tracing shaders,這一點官方也有提示 第一次的時候 一般需要幾分鐘,比如我的設定 耗時了212s去完成這個顯示

    The first time loading Isaac Sim will take a while for the shaders to be cached. Subsequent runs of Isaac Sim with be quick once the shaders are cached and the cache is mounted when the container runs.

    在如右RTX ready後 隨手加了create 兩個mesh shape

最後在docker內 視窗好像有點沒法變 這一點好像得設定一下 restart 具體見官方連結操作吧

# Default value is set to `1.0`, and can be adjusted for best results:
--/app/window/dpiScaleOverride=1.5

還有docker執行裡 隨手開了一個example的場景也還行:

總結

以上 為 Isaac 相關介紹啦~ 包括一系列的安裝 後續可能再來一個放個小機器人 搞幾個感測器 開收資料 差不多就結束了 API可以對著官方檔案看就行


贈人點贊 手有餘香