机器人通常配备摄像头。在设计数字孪生仿真时,在模拟环境中准确复制其性能非常重要。
但是,为了确保模拟平稳运行,必须检查运行模拟的工作站的性能。在这篇博客文章中,我们将探讨在 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
加载名为 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 脚本的示例。