機器人通常都會配備攝像頭,設計數字孿生仿真時,在模擬環境中準確復制其性能十分重要。
為了確保仿真能夠順利進行,對運行仿真的工作站進行性能檢查至關重要。本文將介紹在您的工作站上使用NVIDIA Isaac Sim設置和運行攝像頭基準測試的各個步驟。
在開始之前,我們先來了解一下 Isaac Sim 是如何設計添加攝像頭,以及如何導出用于 ROS 2 的輸出結果。
NVIDIA Isaac Sim 可以仿真多種類型的傳感器,包括激光雷達、超聲波、通用測距傳感器、接觸傳感器、IMU 和接近傳感器等測距傳感器。
攝像頭傳感器是 Isaac Sim 中先進的仿真傳感器,您可在用戶界面上快速添加該傳感器。
▲ 圖 1 在 NVIDIA 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), )
1
設置 Demo
您需要一臺配備NVIDIA RTX GPU并安裝了新版本 NVIDIA Isaac Sim 2023.1.0 的工作站才能運行此基準測試。本 demo 僅與運行 Ubuntu 20.04 或 Ubuntu 22.04 的 Linux 機器兼容。
該腳本無需用戶界面即可運行 Isaac Sim,可以通過終端完成。該腳本將啟動模擬器、加載所有需要的攝像頭,并在終端中顯示輸出結果。
2
安裝和運行
克隆 isaac_camera_benchmark demo:
git clone https://github.com/nvidia_iot/isaac_camera_benchmark.git cd isaac_camera_benchmark
該資源庫包含在您的屏幕上運行 demo 的所有腳本和文件,但在運行腳本之前,請務必下載 NVIDIA Isaac Sim。
請按照NVIDIA Omniverse 上的說明進行操作。
▲ 圖 2 NVIDIA Omniverse、程序庫頁面
和 NVIDIA Isaac Sim 下載按鈕
選擇該頁面上的 NVIDIA Isaac Sim 2023.1.0 并下載。然后進入終端并運行腳本:
./run_camera_benchmark.sh
該腳本將自動啟動新版本 NVIDIA Isaac Sim 并將仿真初始化。
在該仿真中,三個攝像頭圍繞一個小型虛擬倉庫中的三個不同位置,以順時針方向移動。同時,腳本會在終端上顯示當前幀率和 ROS 2 平均頻率輸出結果。
▲ 圖 3 終端上的攝像頭輸出結果示例
FPS 輸出結果可能因工作站配置和硬件設置而發生變化。
如要保存該基準測試的 ROS2 輸出結果,請運行:
./ros2record.sh
▲ 圖 4 記錄所有已配置攝像頭
輸出結果的腳本
所有 ros2bag 文件都在 isaac_camera_benchmark/rosbag 文件夾中。
下一章將解釋該腳本的內部工作原理,以及如何通過更改其配置來測試多個攝像頭或使用不同的分辨率。
3
更改默認配置
共有三個主要文件,您可以通過編寫一個配置文件來設計自己的配置。
第一個腳本是 run_camera_benchmark.sh,它加載 Isaac Sim 的新版本、傳遞一個包含所有配置的腳本并運行此 demo。
該資源庫的主要腳本是 camera_benchmark.py,該腳本僅使用 ROS2_bridge 擴展運行 Isaac Sim,并在默認情況下加載 warehouse_with_forklifts.usd 環境,其中包含一個帶有兩輛叉車的小型虛擬倉庫。該仿真將在光線追蹤照明下運行。
加載環境后,添加在名為 config.json 的文件中配置的每個攝像頭,或者加載三個分辨率為 640 × 480 的攝像頭。
該腳本會自動在環境中添加一個攝像頭對象,同時構建一個圖形,用于讀取來自 Isaac Sim 的輸出結果、修復分辨率,并發布于 ROS 2 輸出結果中。
▲ 圖 5 從 camera_benchmar.py 中生成的圖形
同時,camera_benchmar.py 會加載一個名為 benchmark_camera_node 的 ROS 2 節點,該節點與 ROS 2 攝像頭輸出結果相連,并測量主題頻率平均值。
該腳本還從 Isaac Sim 讀取攝像頭幀率,并在終端上發布輸出結果。
如要更改默認配置,只需新建一個名為 config.json 的 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]} ] }
該輸出結果將生成下圖中所示的新基準。
▲ 圖 6 示例:輸出攝像頭以及終端上的
FPs ros 主題和 Isaac Sim fps 示例
您可以在 config.json 文件中添加配置,指定要在 Isaac Sim 上啟動的仿真類型。
renderer(渲染器):選擇渲染器類型。默認為 RayTracedLighting。
headless(無頭):要在沒有用戶界面的情況下運行 Isaac Sim,可以將此布爾變量改為 True。
另一個配置文件示例如下。
{ "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]} ] }
4
總結
通過該腳本,您可以在工作站上監控攝像頭的輸出結果和 ROS 主題的性能。它還提供了一個如何使用 ROS 2 創建新 Isaac Sim 腳本的示例。
審核編輯:劉清
-
機器人
+關注
關注
211文章
28379瀏覽量
206916 -
NVIDIA
+關注
關注
14文章
4978瀏覽量
102987 -
攝像頭
+關注
關注
59文章
4836瀏覽量
95599 -
接近傳感器
+關注
關注
5文章
188瀏覽量
24423 -
IMU
+關注
關注
6文章
306瀏覽量
45726
原文標題:開發者專區丨利用 NVIDIA Isaac Sim 對工作站的攝像頭性能進行基準測試
文章出處:【微信號:Leadtek,微信公眾號:麗臺科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論