CARVIEW |
Navigation Menu
-
Notifications
You must be signed in to change notification settings - Fork 4.9k
D435i IMU calibration script #3023
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
# Conflicts: # wrappers/python/python.cpp
|
||
header_size = header.size() | ||
data_size = 37*4 + 96 | ||
size_of_buffer = header_size + data_size # according to table "D435 IMU Calib Table" in "https://sharepoint.ger.ith.intel.com/sites/3D_project/Shared%20Documents/Arch/D400/FW/D435i_IMU_Calibration_eeprom_0_52.xlsx" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
will this be made public?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We usually do not release internal design documents directly. These get translated to white-papers and published on realsense.intel.com but it takes long time.
However, most of the information is already public inside ds5-motion.cpp.
The relevant table is structured this way:
This specific table is completely ignored by the firmware. If the calibration tool uses above table format, librealsense will automatically pick-up the values and apply them to the raw IMU data. In this case the calibration tool is this python script with linear regression along 6 known orientations.
Advanced user could implement a completely different calibration method and persist the calibration results on the device. In this case, librealsense will simply ignore it and pass raw IMU data to the application.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, thanks for the insight. Looking forward to trying this out.
tools/rs-calibration/README.md
Outdated
## Description | ||
D435i cameras arrive from the factory without IMU calibration. Hence the values may be slightly off. | ||
In order to improve accuracy, a calibration procedure should be done. | ||
The rs-calibration tool walks you through the calibration steps and saves the calibration coefficient to the EEPROM, to be used applied automatically by the driver. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
coefficients,...
used (xor) applied
* rs-calibration.py: Updated direction order and added direction labels as well as clarified prompts * rs-calibration.py: Added newline to status message
@ev-mp |
Using Anaconda Python3 distribution I had to make a couple modifications to the script for it to complete. I'm not sure if Python3 is officially supported so just including the diff below.
The above was because the call to dict.values returns a non list type
The above is because struct.unpack expects a 'bytes-like object'
raw_input now just input in python3 |
@barnjamin / @doronhi - we might need to add python3 in a separate PR, since I'd like to include this in the upcoming release. |
python.cpp: Add binding of motion_frame.