• DepthAIROS
  • Slow fps using OAK-D Pro PoE with ROS driver

We have noticed that when setting the fps parameter, it rarely achieves that desired frame rate. For example, with the following configuration:

  ros__parameters:
    camera:        
      i_pipeline_type: rgbd
      i_nn_type: none
      i_floodlight_brightness: 1000
      i_laser_dot_brightness: 1200
    rgb:
      i_fps: 10.0
      i_resolution: 4K       
      i_set_isp_scale: false
    stereo:
      i_width: 1280
      i_height: 720
      i_extended_disp: false
      i_subpixel: true
      i_depth_preset: HIGH_DETAIL
      i_enable_decimation_filter: false
      i_enable_temporal_filter: true
      i_enable_speckle_filter: true
      i_enable_spatial_filter: true
      i_lr_check: true
      i_median_filter: KERNEL_7x7
      i_confidence_threshold: 200
    left:
      i_publish_topic: true

We are unable to get the ROS node to publish the /oak/rgb/image_raw to anything more than 2 hz (as measured using ros2 topic hz /oak/rgb/image_rawand with these settings we are at 100% Leon CCS CPU usage. We can drop CPU utilization to 90% by setting i_fps=2 but at this point our frame rate is way too slow for it to be useful and even the measured frame rate is roughly 1.5Hz.

When running the provided latency test without ROS we get results consistent with what is posted online (3 ms) which leads me to believe that the problem might be with the ROS driver. Is slow fps with the ROS driver a known issues, or could it be that there is something wrong with my setup?

Hardware: OAK-D Pro PoE + Powered tp-link TL series switch
Environment: Linux (Ubuntu 22.04) running ROS within a Docker container.

    CamDuarte
    Seems like you are stressing the device too much, though 2FPS is a bit too low cc @Luxonis-Adam

    A tip: when setting brightness for IR - around 800 is the maximum brightness, after that, the duty-cycle decreases so the perceived brightness is lower.

    Thanks,
    Jaka

    Hi, as mentioned here, reducing 3A algorithms FPS could help with this issue, using VideoEncoder (low_bandwidth) for RGB data could also improve things a bit cc @jakaskerl what else could help.
    Regarding FPS - when checking large topics (4K images) with ros2 topic hz it unfortunately won't provide real numbers since it is using python implementation which involves additional message deserialization.