MIPI CSI-2 cameras for TX2 for outdoor object detection

Hi guys,

I am having a hard time selecting MIPI CSI-2 cameras for an object detection application with Jetson TX2. I need 6 cameras in total which will be connected to a customized camera interposer module and to TX2, based on the design guide. These 6 cameras will be used for outdoor object detection (i.e., vehicles, traffic lights) for an autonomous robot. I am looking for low-price cameras due to my limited budget, and as a novice in this field, it will be really helpful if anyone could give me some suggestions on the cameras! Please feel free to ask anything that may help in suggesting a camera module.

Thanks,
Will

Hi,
There are camera modules from our partners. Please check
Jetson Ecosystem | NVIDIA Developer

You may contact the vendors for further information.

Hi DaneLLL,
I have checked those camera modules from them. Unfortunately, they are quite expensive comparing to my budget. I wonder if the Raspberry Pi camera module V2 will be compatible with TX2, when 6 of them connect to a camera interposer that connects to TX2.

Thanks,
Will

Hi,
Pi camera V2 is not supported on TX2 devkit. We support two Pi camera V2 on TX2 NX devkit.

If you need 6-camera board, we would still suggest check with our partners.

Hi,
I recently saw a post on the Forum saying there is no problem using the Pi camera V2 on TX2. It needs software configuration for it to work, creating dtb file to enable the imx219 on TX2. Could you please confirm that?

Thanks,
Will

H,
It is possible but there is no existing patch. You would need to refer to sensor driver programming guide to modify device tree and port sensor driver accordingly.

Hi,

That’s good to know. I will go through the sensor driver programming guide.

Thanks

Hi DaneLLL,

I also got a question about the EEPROM for each camera. Do I need to write any data to the camera EEPROM before using it with TX2 or an empty will automatically work during first-time start-up? Is it possible to write to EEPROM through TX2 I2C?

Have a check this document for EEPROM structure.

https://developer.nvidia.com/embedded/dlc/jetson-agx-xavier-series-camera-module-hardware-design-guide

Hello, I would like to know where can I check the parameters of the MIPI CSI camera that comes with the TX2 development kit? Can you provide me with some information?

Hello Shane,

I went over the Sensor Softwave Driver Programming Guide and raised some questions. The sensor I am going to use is IMX219.

  1. VideoCone IV in the sensor has a sophisticated ISP, which converts “raw” bayer-format RGB input images from the sensor into YUV-format output images. In this case, I should choose the Camera Core Library Interface. Does it sound right to you? Will the model_type be yuv in the Individual Imaging Device since the input images are already converted to YUV format?
  2. I have 6 cameras which all have an imx219 sensor. When setting up the Device Tree, besides differentiating the sensors by setting up 6 different positions (badge, position and orientation), what else parameters I should set up to differentiate 6 sensors (i.e., pcl_id, devname, and proc-device-tree)? For orientation with 6 sensors scenario, should the values be from 0 to 5?
  3. In the individual Imaging Device part, since each sensor will have an EEPROM that communicates with the I2C bus, which will share the same address, does it make sense to put the same address for all 6 sensors’ reg (I2C slave address)?

Thanks,
William

@18272077327
What’s kind of parameter? Please give more detail information.

@WilliammB

  1. No, use v4l2 API or V4L2 base APP like v4l2-ctl
  2. Suppose yes, you can reference to …//hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-modules/tegra186-camera-e3322-a00.dtsi
  3. The EEPROM here is on the sensor board instead of sensors. For multiple sensor on the same board need different i2c bus and suggest to use i2c mux like the reference board use tca9548 to extend the i2c bus.
1 Like
    tegra-camera-platform {
        compatible = "nvidia, tegra-camera-platform";
        modules {
            module0 {
                badge = "imx185_bottom_liimx185";
                position = "bottom";
                orientation = "0";
                drivernode0 {
                    pcl_id = "v4l2_sensor";
                    devname = "imx185 30-001a";
                    proc-device-tree =
          "/proc/device-tree/i2c@3180000/tca9546@70/i2c@0/imx185_a@1a";
                };
            };
        };
    };

For example, in the code for imx185 sensor, badge, position, and orientation defines the sensor ID and position of the camera. If I want to setup 6 of these sensors, the badge and position will be different for each of the sensor because of different position, will the devname and proc-device-tree be different as well? For orientations with 6 sensors, are they gonna be from “0” to “5” for each position?

Badge need to be different and don’t duplicate with any of reference board’s badge strings.
Have a check this doc for device tree configure.

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/camera_sensor_prog.html#wwpID0E0UBB0HA

Right, I have this TCA9548 I2C MUX on my camera interposer module, and 6 EEPROMs for each sensor. In this case, will the reg(I2C slave address) have the same address since they all connect to one MUX?

Yes, the slave address can be the same while it connect to the i2c mux. But the bus are different, like you can see the bus number start from 30 to 35.

In this line you just sent, …//hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-modules/tegra186-camera-e3322-a00.dtsi, I assume a00 is referred to the first camera, and the rest will follow the order like a01 to a05?

This file define 6 cameras in one dtsi file.
Please check the l4t document to download the source code to check it.

1 Like

Hi,
In the device tree node example for imx185 sensor driver:

    mode0 {
        mclk_khz = "37125";
        num_lanes = "4";
        tegra_sinterface = "serial_a";
        phy_mode = "DPHY";
        discontinuous_clk = "no";
        dpcm_enable = "false";
        cil_settletime = "0";
        dynamic_pixel_bit_depth = "12";
        csi_pixel_bit_depth = "12";
        mode_type = "bayer";
        pixel_phase = "rggb";
        active_w = "1920";
        active_h = "1080";
        readout_orientation = "0";
        line_length = "2200";
        inherent_gain = "1";
        mclk_multiplier = "2";
        pix_clk_hz = "74250000";

Could you explain how to find or calculate the line_length value? For mclk_multiplier, since it is noted as deprecated in the programming guide, do I still need to include this value?

Please check the programing guide.

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/camera_sensor_prog.html#