Where does Dynamic Calibrator update the parameters
Hello.
I am working with a D405.
I installed the Dynamic Calibration Tool, and ran it once, everything goes perfect, but I notice that the calibration after the process was the same than before (reading calibration with -r option of "Intel.Realsense.CustomRW.exe")
This should not be strange, but then I tried something else, I loaded a calibration set of parameters (using -w -f myfile.xml), and then after executing -r, the parameters were perfectly updated to the camera, everything working as supposed... The parameters I load was different from the gold calibration (-g) of the camera, changing the value in 1 unit and deleting all decimals.
After that, just to check the calibration, I run the dynamic calibrator once more, and after a successful process, receiving the message that the parameters were updated in the camera, I read the parameters from the camera using -r of "Intel.Realsense.CustomRW.exe", and the result was the same parameters I load, no update was made after running calibration...
And I think there is a problem here! When the Dynamic Calibrator shows the message that calibration was write to the camera, was it really write it?? how can I read this calibration?? why the tool returns the same values before and after calibration??
Thanks in advance!
-
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
-
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. -
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.
-
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.
Please sign in to leave a comment.
Comments
5 comments