Skip to content
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

Merged
Merged

Conversation

gautierhattenberger
Copy link
Member

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:

  • airspeed and incidence sensors using ABI
  • improve some drivers and system configuration
  • example airframe, tested in flight

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

- 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
Copy link
Member

@podhrmic podhrmic left a 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?

sw/airborne/pprz_syscalls.c Show resolved Hide resolved
@noether
Copy link
Member

noether commented Sep 5, 2018

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).

@gautierhattenberger
Copy link
Member Author

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.

@noether
Copy link
Member

noether commented Sep 5, 2018

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.

@gautierhattenberger
Copy link
Member Author

@podhrmic do you validate the PR ?

@podhrmic
Copy link
Member

podhrmic commented Sep 7, 2018

Yes I do:-)

@gautierhattenberger gautierhattenberger merged commit de839dc into paparazzi:master Sep 7, 2018
@gautierhattenberger gautierhattenberger deleted the mekf_wind-integration branch September 7, 2018 20:40
shuoli-robotics pushed a commit to shuoli-robotics/paparazzi that referenced this pull request Oct 15, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants