ISAAC argus camera and intrinsic parameters

Hi,

I am using a CSI IMX219-based camera and I have been doing some tests with the ISAAC argus_camera sample on a Jetson Nano board. I have read that the camera should have the intrinsic parameters stored in its EEPROM and that the argus-based driver should load them.

I have two questions:

  1. Is there an “easy” way (using v4l2-ctl, nvgstcapture or ISAAC Sight) to check what parameters are being used?
  2. I have done my own calibration. Can I use my own intrinsic parameters with ISAAC? For instance, by combining the isaac.ArgusCsiCamera, isaac.perception.ImageWarp and the isaac.message_generators.CameraIntrinsicsGenerator (and make them synchronize by the output of the ArgusCsiCamera)?

Thanks and best regards,
Hugo

Regarding my second question, I have just finished adapting the “april_tags_python” ISAAC sample to use the CSI camera through argus. I also calibrated the camera and published the camera parameters using the CameraIntrinsicsGenerator, triggered by the argus camera image. I got around 13.5 FPS for the april tags detection on a Jetson Nano with the camera running at 1280x720@60 FPS, according to ISAAC Sight.

I am still wondering, does anyone know the answer to the first question?

Best regards,
Hugo

There is a sample app on JetPack 4.5+ called syncStereo you can build and run in /usr/src/jetson_multimedia_api/argus/samples/syncStereo that will print out information about the your camera as below. This uses the Jetson Linux API Reference: Ext::SyncSensorCalibrationData API to pull calibration data from EEPROM (example usage here in Isaac ROS Argus).

Example output:

/usr/src/jetson_multimedia_api/argus/samples/syncStereo$ argus_syncstereo 
Executing Argus Sample: argus_syncstereo
Argus Version: 0.98.3 (multi-process)
getSensorPlacement for sensor i 0 is SENSOR_PLACEMENT_REAR_OR_BOTTOM
Found : HAWK1
getSensorPlacement for sensor i 1 is SENSOR_PLACEMENT_BOTTOM_RIGHT
Found : HAWK1
/**************************/
Identified HAWK1 module with 2 sensors connected
/**************************/
Session[0] : add cameraDevices[0]
Session[0] : add cameraDevices[1]
PRODUCER: Creating stream[0].
PRODUCER: Creating stream[1].
PRODUCER: Launching syncsensor consumer
CONSUMER: Creating FrameConsumer for left stream
CONSUMER: Creating FrameConsumer for right stream
CONSUMER: Waiting until Argus producer is connected to right stream...
PRODUCER: Enable stream[0].
PRODUCER: Enable stream[1].

 Image size = 1920, 1200

 Focal Length = 948.687134, 948.770996

 Principal Point = 1013.182312, 656.373535

 Skew = 0.000000

 Fish Eye mapping type = MAPPING_TYPE_EQUIDISTANT

 Lens Distortion type = DISTORTION_TYPE_POLYNOMIAL

 Radial coeffs count = 6

 Radial coefficients = 182.372192 141.772156 8.852983 182.149078 209.115158 42.099033 

 Tangential coeffs count = 2

 Tangential coefficients = -0.000798 -0.000424 rot3d x, y, x{-0.008395, 0.005823, 0.000398}
translation 3d x, y, x{-2.114820, 0.023411, -0.070532}

 Image size = 1920, 1200

 Focal Length = 946.778564, 947.101807

 Principal Point = 958.622803, 606.221252

 Skew = 0.000000

 Fish Eye mapping type = MAPPING_TYPE_EQUIDISTANT

 Lens Distortion type = DISTORTION_TYPE_POLYNOMIAL

 Radial coeffs count = 6

 Radial coefficients = 50.834507 30.287523 1.248714 51.124935 48.907627 7.497097 

 Tangential coeffs count = 2

 Tangential coefficients = -0.001167 -0.000719 rot3d x, y, x{-0.008395, 0.005823, 0.000398}
translation 3d x, y, x{-2.114820, 0.023411, -0.070532}
1 Like

Hi,

Thanks for the reply. I changed the code of the argus_syncstereo to provide the output with a single camera, but if the “if (iSyncSensorCalibrationData)” returns false: I guess that the camera I am using does not have any intrinsic parameters stored in its EEPROM.

Although one can create such an application from this sample, it would be nice to have one application sample included, that would just output this information from a given camera.

Thank you for the suggestion! We’ll follow up with the Argus team to resolve.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.