-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
How to verify D435i imu calibration is correct? #5177
Comments
I hope the link below will be helpful. It describes how to use the RealSense Viewer after a Python script calibration has been done to verify the value when aiming to get it close to '9.8'. |
Thank you for your quick reply. |
Yes. When I check the python script result, it is as below. norm (raw data ): 9.646322 which means that it is verified. |
Yes. I've written the calibration result to the device, according to the white paper. Writing files: But the realsense viewer still shows acc output '9.3' with or without motion correction. |
In #4571 the user in that case, after having calibrated, had similar large deviations when pointing the D435i downwards or upwards instead of it facing straight ahead (they got 9.4 from the downward facing orientation). Is your camera pointing up or down please? That user also got values closer to their expectations when using the rs-motion sample program instead of the RealSense Viewer. Would it be possible for you to try this program if you have not done so already and see if it gives better results? https://github.com/IntelRealSense/librealsense/tree/master/examples/motion |
I performed a quick test according to your advice. // Get accelerometer measures
The result is as below.
So the viewer and the rs-motion example both gives abnormal value of gravity norm at some orientation. When I see the rs-motion estimated orientation visualization, it looks reasonable with some dynamic lag(up to 1 sec approximately) when I change the orientation. |
Thanks so much for the detailed test feedback! Do you require further assistance or are you satisfied with the results, please? |
As you can see the gravity norm value, it is not close to 9.8 even after the imu calibration. |
Are you resting the D435i on a completely level surface when doing the calibration, please? The link below may be useful reading. |
Thank you for reply in quick! |
I went through all of the data again several times and did further research. It seems that the problem is that you can achieve a good calibration result but it does not appear to persist after the calibration is written to the camera. If that is the case then one of the Intel RealSense team members such as @ev-mp will be best able to advise you on the next step in the investigation. Good luck! |
@jaehwan-pi , the results presented in your previous post show significant deviations in steps 5 and 6 that apparently weren't rectified by calibration:
Position 1 The scaling is off by ~5% along the specific axis, which is not acceptable. I suspect that this could be due to improper leveling of the device required in stages 2 and 4 (para 4.3.2.2, 4.3.24 accordingly) of the relevant white paper. But we'll wait for the calibration data before proposing rectification steps. |
Here is my calibration result. Device info: ..... Motion Intrinsic of "Gyro" MOTION_XYZ32F Motion Intrinsic of "Accel" MOTION_XYZ32F It is weird that the bias values are all zeros. |
The accelerometer's sensitivity matrix shows a notable bias for the third axis compared to the first two I'm not an expert but this might be due to the camera's axes being not strictly orthogonal during the calibration process. (Putting @dmirota on notice) |
I used D435i sensor box as recommended in " "librealsense/tools/rs-imu-calibration/images/" |
+1. |
I am also facing the same error. The error is more or less the same across 4 different D435i - also on untouched factory calibrated cameras. I have also tried to use an Xsense IMU as a reference point for the calibration. The result is still a weird sensitivity matrix. Motion Intrinsic of "Accel" MOTION_XYZ32F @ev-mp , @RealSense-Customer-Engineering have you been able to reproduce the error or figure out whats happening? Is it a firmware, software SDK issue, or? |
The rs_imu_calibration.py provided by Intel realsense requires that each position (write paper) needs to be completely horizontal or vertical during the calibration process. It is difficult to achieve absolute horizontal or vertical experimental conditions, and the accuracy of the calibration will be affected. Recently, I used other methods for calibration, and wrote the calibration results to the device through the rs_imu_calibration.py writer. I found that the results output using realsense-viewer and rs-motion are the same as above, and I suspected that it was an input device There was a problem with the post-correction imu data conversion process. Then I did this kind of experiment, let the equipment output the imu raw data, and use the calibration data to transform it by a program written by myself. As a result, the equipment was placed in a different way and the gravity acceleration was 9.8. Therefore, it is concluded from these experiments that the main reason for the inaccurate results after imu calibration is the problem of the underlying conversion. At the same time, I think that rs_imu_calibration.py is not a particularly good method, because reducing the accuracy requires more experimental equipment Horizontal and vertical. @MartyG-RealSense @ev-mp |
@lishanggui. Thanks so much for your very detailed feedback! I'm sure a member of the Intel RealSense team will be able to respond to your test conclusions. |
I come across with the same situation with my D435i. Such error happen on z-axis. |
This PR #6029 was implemented. Please have a look and try the latest updates to see if your issues are fixed. *If we don’t hear from you in 7 days, this issue will be closed. |
Before opening a new issue, we wanted to provide you with some useful suggestions (Click "Preview" above for a better view):
All users are welcomed to report bugs, ask questions, suggest or request enhancements and generally feel free to open new issue, even if they haven't followed any of the suggestions above :)
Issue Description
Hello, I've just performed D435i imu calibration by using python script, provided in realsense SDK.
Calibration result in terminal is as below.
[ -3.57099204e-03 8.14340250e-05 -1.73322418e-03]
[1000 1000 1000 1000 1000 1000]
using 6000 measurements.
[[ 1.01783041e+00 1.18498262e-02 1.62972744e-02]
[ 3.21068733e-04 1.01414161e+00 5.42254716e-02]
[ -1.94634955e-02 -5.37384002e-02 1.01510521e+00]
[ 7.22336602e-02 1.48811274e-01 1.43795810e-01]]
residuals: [ 6.52936376 24.36565831 38.79660801]
rank: 4
singular: [ 434.28531194 431.50442709 428.51429413 77.39974539]
norm (raw data ): 9.646322
norm (fixed data): 9.805926 A good calibration will be near 9.806650
As the gravity norm looks reasonable, I wrote the result to the device.
When I check the accelerometer value at some orientation in realsense-viewer, however, the norm of accelerometer value is not close to 9.8 m/s^2.
The value is around 9.3m/s^2 when I enable or disable motion correction.
In my intuitive thinking, the value should be close to 9.8 m/s^2 after imu calibration.
Is my situation is reasonable?
Any advice would be really appreciated.
The text was updated successfully, but these errors were encountered: