When running the camera and RosBridge, irrespective of what is being set on the camera prim of the CameraRos component the published image is the one that is being shown in the viewport even if the viewport is showing a different camera.
Additionally, if camera is in active viewport and gets deleted isaac crashes (should fall back to some “no camera selected” screen instead)
Currently the output of the renderer is tied to a viewport. Which means that the ROS publisher can only publisher what is visible in a viewport. You can open a second viewport if you need a different camera viewpoint however.
The Omniverse rendering team is working on removing this restriction so camera images are rendered offscreen and not tied to a viewport, but the restriction remains for the time being.
I’ll file a bug about deleting the camera prim causing a crash, thanks for reporting that!
Thanks @Hammad_M. What is strange on the current behaviour is that you associate the camera to the prim, and it shows the viewport information even if the viewport is not showing the camera.
A more understandable way would probably be to publish the images if the camera is in the viewport, also to avoid confusion and possible misunderstandings while running the code.
Can you also clarify what is the relation between the viewport parameters, the camera parameters and the ROSCamera parameters? It is kinda fuzzy and I did not have many chances to dig into that.
To me, it seems that the camera prim defines the parameters (like focal, fov…), the viewport the rendering size, and then the image is scaled to the ros topic that will be then published. What is confusing is that one can define the principal point (and that does not seem to have any effect), or the “clipping distance”.