-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Mekf Wind INS #2320
Mekf Wind INS #2320
Conversation
- state interface is not updated directly, it should go through air_data or eventually some INS filter - NPS is updated as well - tas_from_eas (air_data) takes at least the altitude into account (not temperature) when direct measurements of P and T are not availble
- the behavior is now the same than before paparazzi#2303: default pressure output is PSI, butterworth filter enabled by default - add an auto_offset setting to zero the sensor before flight
- full INS including wind estimation using MEKF filter - integration using the C++ Eigen matrix library (included as a submodule) - using airspeed, angle of attack and sideslip sensor in addition to IMU, GPS and baro - wind estimation part can be disabled - test program for eigen + fake syscalls to run on MCU
- flight recorder - configurable power switch init - configurable chibios AP stacks
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.
Looking good! I like that you used C++/Eigen for more sensible matrix operations.
Just have one question about the syscalls shim.
On a side note, ChibiOS provides heap allocation - have you looked into using some dynamically allocated code?
I am thrilled about seeing this PR! By the way, what is the status of using Eigen while debugging? Can you compile with -o0, make some complex operations such as inverses and still print the values of matrices? I remember you were facing the same problems as me several years ago with Eigen in the microcontroller (and I never figured out the why of the problem). |
You can compile with -o0 in simulation of course. I don't remember if I managed to do it for real target in the end. But you can definitely do some complex operations. Their is a small test program that I kept in the PR to only test basic Eigen stuff. You can try it. |
Fair enough indeed. Yes, the problems were/are in the ARM, not in the simulation (and to be honest, it is in the simulation where I check/validate the numerical implementation of an algorithm). Thanks again for this PR. In fact, it would make much easier the implementation of the GVF in 3D for rotorcraft. |
@podhrmic do you validate the PR ? |
Yes I do:-) |
This new module is a full INS including wind estimation based on IMU/GPS/baro + airspeed/AoA/Sideslip measurements with MEKF filter.
The integration is using the C++ Matrix library Eigen included as a submodule.
Some minor changes:
Reference:
Martin Brossard, Jean-Philippe Condomines, Silvère Bonnabel. Tightly coupled navigation and wind estimation for mini UAVs. AIAA GNC 2018, AIAA Guidance, Navigation, and Control Conference, Jan 2018, Kissimee, United States.
https://hal-enac.archives-ouvertes.fr/hal-01814261