Duplication of topic and low FPS

I have a launch file that performs the image processing in Nitros.
My input is 10 FPS however the output is around 5-6 FPS, In addition for each topic we have 2 types of topics:
the name that we chose and the same with _nitros suffices. (example bellow)
/dnn_image_encoder/camera/image_rect
/dnn_image_encoder/camera/image_rect/nitros
/dnn_image_encoder/camera/image_rect/nitros/nitros_image_rgb8
/dnn_image_encoder/camera_info_rect
/dnn_image_encoder/camera_info_rect/nitros

/dnn_image_encoder/crop/camera_info
/dnn_image_encoder/crop/camera_info/nitros
/dnn_image_encoder/crop/image
/dnn_image_encoder/crop/image/nitros
/dnn_image_encoder/crop/image/nitros/nitros_image_rgb8

I assume that there is a CPU and GPU publish.
1. Why the low latency
2. How can we avoid CPU usage all together and publish NITROS messages only

Out launch file":
Ahung> Let me move the content into test_nitros_launch_py.txt (5.8 KB) for readability

Hi @irena.br

Thanks for your post. I modified your post and moved the code into attached file for readability.

Your launch looks modified from dnn_image_encoder.launch.py. The low frame rate (5-6 FPS) you are experiencing compared to the input (10 FPS) suggests that there might be a bottleneck in the data processing pipeline. To better assist you, could you provide the context about your test and setup?

Best,
Ahung

Hi @Ahung,

You’re right—this is a modified dnn_image_encoder launch. Our goal is to run several networks via Nitros + TensorRT: per-network preprocessing → TensorRT inference → post-processing.

Two questions came up during testing:

  1. FPS drop: Input is ~10 FPS, but after the Nitros preprocessing chain we only see ~5–6 FPS.

  2. Duplicate topics: For many stages we see two topics—the one we configured and another with a _nitros suffix. For example:

/dnn_image_encoder/camera/image_rect
/dnn_image_encoder/camera/image_rect/nitros
/dnn_image_encoder/camera/image_rect/nitros/nitros_image_rgb8

Could you clarify why both appear, and whether they imply a CPU+GPU dual publish? Also, any pointers on keeping the pipeline Nitros-only (no CPU path) would be appreciated.

Thanks!

Hi @irena.br

Are you using AGX Orin devkit? What’s your camera sensor? It’d be helpful if you could provide your files and commands for us to reproduce the problem.

Best,
Ahung

Hi @Ahung,

Yes, we are using AGX Orin devkit
For this specific test I used a nag file that sent data at 10 FPS, so any bag file should work.
As you noticed, we stripped everything and left nitros processing only.
I cannot upload my bag file here. Any suggestions?

Thanks,
Irene

Hi @irena.br

The /nitros suffixed topics are normal, they’re how Type Negotiation works - the upstream/downstream nodes can negotiate the specific image format type they want to use. Not a sign of GPU/CPU duplication etc. that you are worried about

NITROS nodes are fast but not free, if the device doesn’t have enough resources etc. then image preprocessing could slow down the pipeline for sure. Can you check if you can get the similar result using the one in the reference sample - isaac_ros_image_proc ?

Best,
Ahung