機器人通常配備攝像頭。在設計數字孿生仿真時,在模擬環境中準確復制其性能非常重要。
但是,為了確保模擬平穩運行,必須檢查運行模擬的工作站的性能。在這篇博客文章中,我們將探討在 NVIDIA Isaac Sim 上的工作站上設置和運行攝像頭基準測試的步驟。
在開始之前,我們將探索 Isaac Sim 如何添加攝像頭,以及如何導出 ROS 2 的輸出。
NVIDIA Isaac Sim 可以模擬多種類型的傳感器,從激光雷達、超聲波、通用范圍傳感器、接觸傳感器以及 IMU 力和接近傳感器等距離傳感器開始。
攝像頭傳感器是 Isaac Sim 中最先進的仿真技術,您可以使用用戶界面快速添加此傳感器。

此外,您還可以使用 Python 腳本從 Python 對象加載相機或多個攝像頭,如下例所示。
camera = Camera( prim_path = "/World/camera" , position = np.array([ 0.0 , 0.0 , 25.0 ]), frequency = 20 , resolution = ( 256 , 256 ), orientation = rot_utils.euler_angles_to_quats(np.array([ 0 , 90 , 0 ]), degrees = True ), ) |
有關 NVIDIA Isaac Sim 攝像頭的更多詳細信息,請查閱我們的 文檔.
設置演示
要使用此基準測試,您需要配備 NVIDIA RTX GPU 和最新版 NVIDIA Isaac Sim 2023.1.0 的工作站。此演示僅兼容運行 Ubuntu 20.04 或 Ubuntu 22.04 的基于 Linux 的計算機。
此腳本不需要用戶界面即可運行 Isaac Sim.它可以通過終端完成。該腳本將啟動模擬器,加載所有必要的攝像頭,并在終端中顯示輸出。
安裝和運行
克隆演示 isaac_camera_benchmark:
git clone https://github.com/nvidia_iot/isaac_camera_benchmark.git
cd isaac_camera_benchmark
此資源庫包含在屏幕上運行演示的所有腳本和文件,但在運行腳本之前,請記得下載 NVIDIA Isaac Sim.
如需指導,請參考NVIDIA Omniverse.

在此頁面中,選擇 NVIDIA Isaac Sim 2023.1.0 并下載。然后前往終端并運行腳本:
./run_camera_benchmark.sh
此腳本將自動啟動最新的 NVIDIA Isaac Sim 并初始化模擬。
在此模擬中,三個攝像頭圍繞小型虛擬倉庫內的三個不同位置順時針方向移動。同時,腳本會在終端上顯示當前幀率和平均 ROS 2 頻率輸出。

FPS 輸出可能會因工作站配置而異,并且可能與硬件設置不同。
要存儲來自此基準測試的 ROS2 輸出,請運行:
./ros2record.sh

所有 ros2bag 文件均位于該文件夾中isaac_camera_benchmark/rosbag
.
下一章節將介紹腳本的內部工作原理,以及如何更改其配置以測試多個攝像頭或使用不同的分辨率。
更改默認配置
主要有三個文件,您可以通過編寫配置文件來設計配置。
第一個腳本是run_camera_benchmark.sh
加載最新版本的 Isaac Sim,傳遞包含所有配置的腳本,并運行此演示。
此資源庫的主要腳本是camera_benchmark.py
腳本,該腳本僅使用 ROS2_bridge 擴展程序運行 Isaac Sim,默認情況下,它會加載warehouse_with_forklifts.usd
其中包含一個帶有兩臺叉車的小型虛擬倉庫。模擬將在光線追蹤照明中運行。
加載環境后,添加在名為 config.json 或加載三個分辨率為 640 × 480 的攝像頭。
此腳本會自動在環境中添加相機對象,還可以構建一個圖形,用于讀取來自 Isaac Sim 的輸出、修復分辨率并在 ROS 2 輸出上發布。

camera_benchmark.py
同時,camera_benchmark.py
加載名為 benchmark_camera_node 的 ROS 2 節點,該節點從 ROS 2 攝像頭輸出連接,并測量主題頻率平均值。
此腳本還可從 Isaac Sim 讀取相機 fps,并在終端上發布輸出。
要更改默認配置,您只需創建一個名為 config.json 的文件。此文件必須包含攝像頭的配置。您可以設置以下不同選項:
- 翻譯:相機應該位于環境中的特定位置,這個位置由一個包含三個坐標的向量來表示,例如 [0.0, 0.0, 0.0]。
- 分辨率:攝像頭輸出分辨率是攝像頭分辨率為 640 × 480 的整數向量。建議分辨率包括:
- 640*480
- 1024*768
- 1920 × 1080 (FHD)
- 2560*1440 (2K)
- 3840 × 2160 (4K)
以下是一個新的config.json
.
{ "camera": [ {"translate": [0.0, 0.0, 3.0], "resolution": [640,480]} {"translate": [-1.0, 0.0, 6.0], "resolution": [1024,768]} ] } |
此輸出會生成如下圖所示的新基準測試。

您可以向 config.json 文件添加配置,以指定要在 Isaac Sim 上啟動的模擬類型。
- 渲染器:選擇渲染類型。默認值為光線追蹤光照。
- 無外設:要在沒有用戶界面的情況下運行 Isaac Sim,您可以使用正確的命令行參數。
有關配置文件的另一個示例,請參閱以下內容。
{ "simulation": {"renderer": "RayTracedLighting", "headless": true}, "camera": [ {"translate": [0.0, 0.0, 3.0], "resolution": [640,480]}, {"translate": [-1.0, 0.0, 6.0], "resolution": [1024,768]} ] } |
結束語
此腳本允許您監控工作站上的攝像頭輸出和 ROS 主題的性能。它還提供了如何使用 ROS 2 創建新的 Isaac Sim 腳本的示例。
?