Comments (8)
Dead reckoning would use earth acceleration, not linear acceleration. Dead reckoning using an IMU is typically not possible due to the exponential accumulation of errors. You can explore this using simulated sensor data to see how small sensor errors have a big effect on the double integrated result.
from fusion.
After testing on several devices I am seeing that the NAN problem is random. And it appears to only occur, if at all, after I initiate my calibration procedure. When I do this, I set the minimums to a very positive number (1000) and the maximums to a very negative number (-1000).
Ahh! There's a thought. If the min & max are opposite of normal but otherwise equal in magnitude and they were used to generate magnitude adjustments...
...yes, there's the problem. A divide by zero in my calibration code created one NAN in the magnetometer 3 by 3 correction matrix. When used by the FusionAhrsUpdateNoMagnetometer() function, the NAN propagated to all the quaternion values. And from there on, nothing worked.
Other than the realization that once a NAN creeps into the quaternion values, there's likely nothing to be done except to call FusionAhrsInitialise() again ... I think we're good.
from fusion.
BTW, thanks for fixing the order of offset / magnitude adjustment in FusionCalibrationMagnetic() in hash 15e463c!
from fusion.
Also, is there a community where questions can be fielded by other uses regarding the Fusion code? I hate opening up issues that end up being a problem on my end. For instance, my magnetic compass was also working before I integrated the latest Fusion changes.
Now it appears I need to switch it from what NWU to NED to make it act correctly.
from fusion.
I am not aware of a such a forum. The only change related to magnetic performance was the switch from
from fusion.
This change is unrelated to the earth axes convention.
Agreed. In fact I was able to remove some of my code which adjusted the offset by the magnitude before passing the offset to the Fusion correction funcitons.
To make clear what I am seeing, I have and am calling both the function FusionCompassCalculateHeading() for a "magnetic bearing" and the functions (FusionAhrsUpdate(), FusionAhrsUpdateNoMagnetometer(), FusionAhrsGetQuaternion() & FusionQuaternionToEuler()) to get euler.angle.yaw which is as far as I understand is the "magnetic + gyroscope bearing".
Before the upgrade, the magnetic only bearing was fast but noisy. The magnetic + gyroscope bearing was smooth but still reactive. And would correct its self to agree with the magnetic bearing given time (additional several seconds).
But after the upgrade, the magnetic only bearing appeared to contain more noise and appeared to rotate in the reversed direction than expected.
It is not a very good fix, but switching just the FusionCompassCalculateHeading() from NWU to NED gives more reasonable bearing values. But they are still not as good as before merging in the current version of Fusion (1.2.1).
-thanks
from fusion.
If you would like assistance with this then I suggest you create an issue that clearly describes the unexpected behaviour using annotated plots and including code examples where appropriate.
If the issue is specifically an unexpected difference in behaviour between versions then I suggest you log sensor data to file and then demonstrate the different behaviour of each version using identical data.
from fusion.
Turns out it was a problem in my code. Logic error caused my code to assign the magnitude adjustment of the Y magnetometer sensor a near zero value. I gave that correction matrix to Focus and "bad in" / "bad out" ensued. Thanks for your help. Next up, I'm going to try X, Y, Z dead reckoning using the FusionAhrsGetLinearAcceleration() function.
from fusion.
Related Issues (20)
- Python 3.12 Install Issue HOT 3
- Question: About the details of the Fusion algorithm HOT 2
- Rust bindings HOT 7
- Guidance on tuning Fusion for "responsiveness" HOT 2
- Inferring gyroscope range HOT 3
- Roll and pitch relative to device, yaw relative to earth HOT 2
- Linear/earth acceleration very slow to catch up with movement HOT 3
- TEST data HOT 1
- Python "No code object available for imufusion" with Setup.py or pip install HOT 4
- Measurement convention for sensors other than x-imu HOT 3
- How to use the magnetometer data with different sampling frequency from the inertial sensors? HOT 1
- Gyroscope Offset Algorithm HOT 7
- Link to dissertation is broken HOT 1
- Q: Influence of motion and external acceleration HOT 3
- Very noisy Roll Pitch Yaw data HOT 5
- Recommended sampling rate? HOT 2
- yaw value changes while rotating on only roll or pitch axis. HOT 3
- 5 seconds delay in real-time operation (python) HOT 2
- Need some help setting up the algorithm. HOT 14
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fusion.