View my account

Where does Dynamic Calibrator update the parameters

Comments

5 comments

  • MartyG

    Hi F Ricardo Auto  I believe that when loading a calibration from an XML file, it is only being loaded into the computer's memory temporarily, and to keep that calibration it would be necessary to write the loaded-in calibration to the camera hardware before turning off the computer. 

     

    So if you loaded in a calibration and then checked the camera's calibration values after performing a gold reset, the values provided by the camera would not be those of the loaded-in xml file, because the file's calibration details have not been saved to the camera after import.

     

    The user guide for the tool suggests using the -raw parameter to read the camera's stored calibration values.

    To read the coefficients:  Intel.RealSense.CustomRW.exe -r -raw 19 

    To read the depth table: Intel.RealSense.CustomRW.exe -r -raw 1f

    To read the RGB table: Intel.RealSense.CustomRW.exe -r -raw 20

     

    Have you been using the -raw parameter to read from the camera hardware, please?

     

    As the D405 camera model does not have an RGB sensor, you may find that the newer depth-only self calibration tools such as On-Chip can work just as well as the Dynamic Calibration tool, since the main benefit of using DC over On-Chip is that DC can calibrate the RGB sensor.  That benefit does not apply to D405.

    https://dev.intelrealsense.com/docs/self-calibration-for-depth-cameras

    0
    Comment actions Permalink
  • F Ricardo Auto

    Hello MartyG 

    Thank you very much for your answer, but I still have the same problem, I need the parameters of the calibration, because we are working on an uncertainty analysis of a robotic system...

    We need to perform several calibrations and then analyze the parameters, but I can't find them.... Let me explain again the procedure.

    1. I did a gold reset to get the original parameters:

     

    2. Then, we calibrate, and no change is produced in the parameters once you read them using -r

    3. To check this problem, we created a params.xml file, and using the same parameteres as the gold calibration, only eliminating decimals, we wrote the parameters to the camera using -w

    4. We calibrate, and then, reading the parameters with -r, we see the same as we wrote before, so the calibration is not stored in the camera, or it is not shown using -r

    The option of using -raw does not return readable parameters, and as I said before, we need the numerical parameters for the analysis.
    We also tried the "on chip" calibration in the RS viewer, but the matrix shown in that software does not change, and also is different from the gold calibration and the one we wrote... 

    We would very much appreciate clarification on where to find the parameters resulting from the calibration.
    Thanks.

    0
    Comment actions Permalink
  • MartyG

    After you perform a calibration, are you writing it to the camera hardware and exporting an xmil file after every calibration using the command below?

    Intel.RealSense.CustomRW.exe -w -f myfile.xml

     

    The documentation suggests also including the camera's serial number in the write instruction with the -sn parameter.  For example:

    Intel.RealSense.CustomRW.exe -sn 728612070840 -w -f myfile.xml 

     

    You are correct about -raw not returning human-readable numbers.  When exporting to xml file, the data is written to the file in a human-readable format.  This is a difference from the On-Chip calibration tool in the RealSense Viewer, which does not provide calibration data in a human-readable format.

     

    When it comes to reading the calibration back, this is where the documentation becomes less clear.  After reading it very carefully, my interpretation of it is that once you export the calibration to a human-readable xml file, you cannot re-import that xml file and write its values to the camera hardware, as the contents of the xml file are no longer in a raw format.

     

    Instead, the documentation suggests reading the calibration from the camera and then writing the calibration to a different file format, .bin.  For example:

    Intel.RealSense.CustomRW.exe -r raw 19 -f myfile.bin

     

    You can then read the .bin file with the raw values back in with the -w parameter and write the values in the file to the camera.

    Intel.RealSense.CustomRW.exe -w -raw 19 -f myfile.bin

     

    So: my interpretation is that after performing a calibration, you can write the calibration to an .xml file for future reference of the values in human-readable format.  But you cannot load that xml file back in and save it to the camera.

    0
    Comment actions Permalink
  • F Ricardo Auto

    Hello MartyG

    Just to let you know that we finally find a way to obtain the parameters. After a calibration with the Dynamic Calibrator, ask through the Python SDK:

    depth_intrinsics = depth_profile.get_intrinsics()
    The obtained matrix changes -minimally- after each calibration, as expected.
    Thank you very much for the support.
     
    0
    Comment actions Permalink
  • MartyG

    You are very welcome.  It's great to hear that you achieved a solution through the Python SDK.  Thanks very much for the update!

    0
    Comment actions Permalink

Please sign in to leave a comment.