Multi-camera (more than 6) setup, nvarguscamerasrc sensor-id assignments

Hi,

I’m currently working with a GMSL-2, multi-camera system that consists of 16 cameras in total. I have been able to configure and unlock the virtual channel support in the Jetson Xavier AGX and the serdes link but I’m struggling to find a reference on how to perform the assignment of the camera modules so that the nvarguscamerasrc “sensor-id” property has a meaning and respects the order of how the cameras are numbered and connected to the Xavier.

I’m using JetPack 4.4 (L4T 32.4.3), my understanding is that the way to control the indexing order for the “sensor-id” property (at least in previous versions of the L4T) is through the module’s “position” property as described in the following link:

and the Camera Driver Development Guide basically describes the same and for a maximum of 6 cameras:

Camera position. Values supported depend on the number of cameras in the system:

• In a two-camera system: rear and front.
• In a three-camera system: bottom, top, and center.
• In a six-camera system: bottomleft, bottomright, centerleft, centerright, topleft, and topright.

My question would be, what is the suggested approach to properly map the sensor-id to match the order of the cameras I have in my setup (16 cameras)? In the forum entry I pasted above, it is suggested to perform a remap of the sensor GUID and module index instead of using the “position” property, however, this approach is not clear to me in terms of the changes to be performed and the files to be modified.

Thanks

hello diego.chaverri,

this is a property refer to camera facing from Android.
it’s a property to define the actual hardware configurations.
this camera position supported depend-on the number of cameras in the system; the maximum support number is six, you may consider it as a small cube, so there’re six orientations in total.

however,
it’s different story when it’s coming through aggregator,
you may refer to CSI Connectivity, it’s aggregator (i.e. SerDes chip) between camera sensor and CSI brick.

therefore,
the camera facing property is now less important.
you may having definition as camera_[index] to assign all your 16-camera to the position property.
please also check Jetson Virtual Channel with GMSL Camera Framework for more details.
thanks

Hi @JerryChang , thanks for your reply, so, you are suggesting that in order to remap the indexing of the sensor-id property of the nvarguscamerasrc, I should change the value of the position property of each on my camera modules entries in the following manner?

tegra-camera-platform {
    compatible = "nvidia, tegra-camera-platform";
    modules {
        module0 {
            xxxxxx
            position = "camera_0";
            xxxxxx
            };
         module1 {
            xxxxxx
            position = "camera_1";
            xxxxxx
            };
            .
            .
            .
            .
       module15 {
            xxxxxx
            position = "camera_15";
            xxxxxx
            };
        };
    };

hello diego.chaverri,

that’s correct,
once the allocated cameras beyond Android’s maximum positions. (i.e. 6), it’ll use module index instead.
thanks

1 Like

Hi,

The solution didn’t work for me, so just if someone does find this post, what eventually worked for me was to just use a number in strings:

badge = "xxxx_0_xxxx";
position = "0"

Just change 0 with the desired number, and obliviously the x with some significant value.
I had no way to test more than 10 cameras, maybe a HEX from A to F could work for 16 cameras. i.e “A” to “F”

Best Regards,
Roberto Gutierrez
Embedded Software Engineer

1 Like