机器人通常都会配备摄像头,设计数字孪生仿真时,在模拟环境中准确复制其性能十分重要。
为了确保仿真能够顺利进行,对运行仿真的工作站进行性能检查至关重要。本文将介绍在您的工作站上使用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 脚本的示例。
审核编辑:刘清
-
机器人
+关注
关注
213文章
30600浏览量
219657 -
NVIDIA
+关注
关注
14文章
5496浏览量
109110 -
摄像头
+关注
关注
61文章
5059浏览量
102460 -
接近传感器
+关注
关注
5文章
201浏览量
25209 -
IMU
+关注
关注
6文章
403浏览量
47604
原文标题:开发者专区丨利用 NVIDIA Isaac Sim 对工作站的摄像头性能进行基准测试
文章出处:【微信号:Leadtek,微信公众号:丽台科技】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
远程图形工作站-----设计方案
如何利用摄像头将处于摄像头正下方的物体进行拍照
利用CreateCaptureWindowA和picturebox 进行USB摄像头采集
应用于苹果、华为手机摄像头测试座
应用于苹果、华为手机摄像头测试座
如何用VideoCapture进行USB摄像头的视频捕捉呢
工作站,工作站原理是什么?
DXOMARK扩展其手机后置摄像头的测试基准
摄像头如何进行气密性防水检测
基于Omniverse的NVIDIA Isaac Sim现已发布公测版
NVIDIA Isaac Sim 2022.1版本的亮点及功能
NVIDIA AI机器人开发— NVIDIA Isaac Sim入门
使用 NVIDIA Isaac 仿真并定位 Husky 机器人

如何利用NVIDIA Isaac Sim对工作站的摄像头性能进行基准测试呢?
评论