Version

5.1.1. 使用Orbbec ROS包降低CPU使用率

本文档概述了在使用Gemini 330系列相机的**OrbbecSDK_RO### 滤波器配置影响

| 应用的滤波### 进一步优化

参数 推荐值 说明
depth_registration false或使用align_mode=HWtrue 软件对齐消耗更多CPU
enable_point_cloud false 禁用点云减少CPU使用率
enable_colored_point_cloud false 禁用彩色点云减少CPU使用率
----------------------------------------------------- ---------------- ------------------
无滤波器(基准) 116.0% 0.0%(基准)
(软件)noise_removal_filter 148.2% +32.2%
(软件)noise_removal_filter + spatial_filter 169.3% +53.3%
hardware_noise_removal_filter 115.7% -0.3%
hardware_noise_removal_filter + spatial_filter 124.5% +8.5%

您可以在示例中找到示例使用代码。

5.1.1.1. 降低CPU使用率的推荐设置

为了在OrbbecSDK_ROS1中实现尽可能低的CPU使用率,建议配置以下参数。

参数 推荐值 说明
uvc_backend v4l2 libuvc相比CPU使用率更低
color_format RGB MJPG格式CPU使用率更低
filter 仅使用hardware_noise_removal_filter 其他滤波器会显著增加CPU使用率

5.1.1.2. 用于测试的启动文件

  • gemini_330_lower_cpu_usage.launch

  • multi_camera_lower_cpu_usage.launch

5.1.1.3. 测试环境

硬件配置

  • CPU: Intel i7-8700 @ 3.20GHz

  • 内存: 24 GB

  • 存储: Micron 2200S NVMe 256GB

  • GPU: NVIDIA GeForce GTX 1660Ti

  • 操作系统: Ubuntu20.04(虚拟机)

ROS配置

  • ROS版本: ROS1 Noetic

  • SDK版本: OrbbecSDK_ROS1 v2.2.1

相机设置

  • 设备: 2x Gemini 335, 1x Gemini 336, 1x Gemini 336L

  • 固件版本: 1.4.10

5.1.1.4. 测试设置

  • 流设置:

    • 深度 / 左红外 / 右红外: 848×480 @ 30fps

    • 彩色: 848×480 @ 15fps

注意:以下CPU使用率数据主要关注uvc_backendcolor_format和各种滤波器组合。

5.1.1.5. 测试结果

5.1.1.6. uvc_backend比较(RGB格式)

libuvc CPU使用率 v4l2 CPU使用率 绝对变化
116.0% 45.7% -70.3%

使用v4l2后端可以显著降低CPU使用率。在我们的实现中,v4l2无需对Linux内核进行任何补丁即可工作,允许用户轻松在v4l2和libuvc之间切换,并保持与标准Linux发行版的完全兼容性。

5.1.1.7. color_format比较(MJPG vs RGB)

后端 MJPG CPU使用率 RGB CPU使用率 绝对变化
libuvc 132.6% 116.0% -16.6%
v4l2 56.0% 45.7% -10.3%

选择RGB格式而不是MJPG可以降低CPU使用率,因为MJPG图像的解码会消耗主机CPU资源。

5.1.1.8. Filter Configuration Impact

Filters Applied libuvc CPU Usage CPU Usage Increase v4l2 CPU Usage CPU Usage Increase
No Filter (benchmark) 116.0% 0.0%(benchmark) 45.7% 0.0%(benchmark)
(software)noise_removal_filter 148.2% +32.2% 73.4% +27.7%
(software)noise_removal_filter + spatial_filter 169.3% +53.3% 93.3% +47.6%
hardware_noise_removal_filter 115.7% -0.3% 45.6% -0.1%
hardware_noise_removal_filter + spatial_filter 124.5% +8.5% 61.7% +16.0%

根据测试结果,仅使用hardware_noise_removal_filter对于libuvc(-0.3%)和v4l2(-0.1%)相比无滤波器基准,CPU使用率变化可忽略不计,因为此滤波器在相机硬件内部运行。相反,其他滤波器在主机系统上执行。将spatial_filter添加到硬件滤波器会导致CPU使用率适度增加,而应用基于软件的noise_removal_filter(无论是单独使用还是与spatial_filter结合使用)都会显著增加CPU负载。为了保持低CPU使用率,建议避免使用基于软件的滤波器,仅依赖hardware_noise_removal_filter

5.1.1.9. Further Optimization

Parameter Recommendation Note
depth_registration false or true with align_mode=HW Software alignment consumes more CPU
enable_point_cloud false Disabling point cloud reduces CPU usage
enable_colored_point_cloud false Disabling colored point cloud reduces CPU usage