-
Notifications
You must be signed in to change notification settings - Fork 117
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
imu data not consistent with earth gravity at rest (needs zgo calibration?) #319
Comments
This indeed should be the case, as a matter of fact, I tested on several boards, and the coordinate system is the same for gravity/accelerometer. Here is the test script.
Currently we don't calibrate IMU, so no extrinsic calibration or static/dynamic calibration is performed therefore there are differences between boards/accuracy. We expect to add IMU calibration next year in Q1. |
Hi. I see unexpected results.
The "10" component is changing axes between X and Y. Info debug output shows significantly different versions that yours...
|
@diablodale you have a device that was shipped before factory calibration, which has older IMU FW. We don't have access to the IMU FW, this issue looks like got fixed with a FW update. |
Yes. This was discovered and led to me using the cali tool for depth<->color several weeks ago. It is possible now or in the future for customers to have IMUs that don't meet the requirements of
|
Yes, will add it. |
Got it. I also understand you have a queue of dev work. |
No improvement with updated IMU firmware. My OAK-D IMU accelerometer outputs are still unexpected/inconsistent
ResultNo change. The outputs continue to be unexpected. I get the same signs and values as in the OP.
|
@diablodale check #375 Calibration will be adressed later. |
@diablodale I would agree with you here that I observe the same thing on quite a few Series 2 units I have, installed with BNO085. The gravity vector is often too large at rest. |
@szabi-luxonis I tested again with depthai-core v2.15.4 (it includes pr #375)
I consider the axis portion of this issue as resolved. 👍 |
hi @szabi-luxonis, how can an app using depthai-core v2.20.2 know that the IMU needs a firmware update? |
The accelerometer data on my OAK-D-PRO-POE continues to be wrong. #375 did not fix this. Below data is with both sensors level using depthai-core v2.25.0 example imygyroaccel.exe adapted to show accel and accel_raw. OAK-D-PRO-POE
OAK-D
|
Data returned from an IMU node is not consistent with Earth gravity of 9.81 m/s^2 on the Y-axis.
My OAK-D instead returns a vector magnitude value 10.20799. And the gravity component changes between X and Y axes.
Please reference the IMU Datasheet provided by Luxonis https://www.ceva-dsp.com/wp-content/uploads/2019/10/BNO080_085-Datasheet.pdf
Setup
Repro
imu_gyroscope_accelerometer.exe
Result
The magnitude of the accelerometer data above is 10.20799 which is 4% larger than expected.
The IMU datasheets claims an accuracy of 0.3 m/s^2.
10.20799 - 9.81 = 0.39799 making it outside the datasheet's accuracy claim and 5% larger than expected 9.81.
This unexpected accelerometer data is seen in all enums ACCELEROMETER, ACCELEROMETER_RAW, and GRAVITY
In a separate app I wrote, I see the same errors across different outputs...
In addition, the gravity component (very likely the 10.1 value) changes between the X and Y axes depending on what output is chosen with
enum class dai::IMUSensor
. This is unexpected and not in alignment with the IMU datasheet section 2 which specifies a fixed coordinate system. This would then make it impossible for the gravity component to change axes.Expected
At rest, the normal of the x,y,z vector from the accelerometer should be ~9.81.
I would expect the coordinate system for acceleration and gravity to be shared as documented in IMU datasheet section 2. Since gravity is derived from the raw accelerometer. Meaning I would e:xpect: accelerometer_linear + gravity = accelerometer. But that is not possible given the actual data being output via depthai APIs.
It is also unusual the gravity component changes +/-, but maybe the documentation is lax in that.
Yes, I can negate and flip order...but it is suspicious that the "10" component is changing its coordinate system. It makes me suspect math error, or pointer offset error, struct member name/misuse, etc.
Notes
Is the 5% error due to section 3.2.1 ZGO errors?
If so, then we need a mechanism to "dynamic calibrate" datasheet section 3 the accelerometer -as distinct- from extrinsic calibration of #155
Or has there been a "Static calibration" datasheet section 3 burned into the IMU already?
The text was updated successfully, but these errors were encountered: