-
Notifications
You must be signed in to change notification settings - Fork 13.3k
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
WIP: IEKF estimator and minimal ROS port for PX4 #6045
Conversation
This will be great in conjunction with the new VIO interface : https://github.com/mhkabir/Firmware/tree/uasys-devel |
ea6048b
to
f71f127
Compare
ababd5f
to
689b181
Compare
@jgoppert Very interesting! What benefits are you expecting besides the replacement of the Q-attitude estimator? With LPE I find results heavily depending on the accelerator noise level. |
Motivation
Benefits
|
@jgoppert Thanks for the explanation. Let me know if I can help somehow. |
da7f7d9
to
828f546
Compare
Latest commit adds wind states and airspeed measurement. Once I get it tuned, it should help vtol. |
a5c58d7
to
db87aba
Compare
fe93712
to
b7605bf
Compare
582946c
to
008ca92
Compare
@jgoppert Just an idea, you might find it worth to think about: For direct estimator comparison / estimator settings comparison, it would be great to run two different estimators / two instances of an estimator in parallel. With that a direct benchmark of the whole estimator chain would be possible. As I am not that deep into the firmware, I cannot estimate what this would require. IEKF could be a starting point for that. What do you think? |
@ecmnet I think that is a good idea. I think that on a pixhawk ekf2 and iekf couldn't run side by side (due to memory and cpu limitations), but we could do it on sitl. We would have to choose one estimator to publish the control state, or use a 3rd estimator to do that so the evaluation is more fair. |
I like that idea, @ecmnet. What do you think about, instead of running the filters at the same time, logging the sensor data and replaying it offline with the different estimators, the way that EKF2 supports it? |
@ecmnet @ndepal @jgoppert We already support system-wide replay. I had been using it for benchmarking VIO for a while. Instructions are here : https://github.com/PX4/Devguide/blob/master/advanced-replay.md. No idea why it doesn't show up the Devguide side-pane or why this link is broken : http://dev.px4.io/advanced-replay.html. Will find and fix. |
@mhkabir the replay page got dropped in PX4/PX4-Devguide@c053216 by @LorenzMeier. I assume this was a mistake, I added it again on master PX4/PX4-Devguide@79aaffe. Should be online soon. |
SITL optical flow with terrain video: https://www.youtube.com/watch?v=fx5MeMG-DM0&feature=youtu.be |
cf0d495
to
40e94b5
Compare
Closing in favor of #7115 |
@ecmnet @mhkabir @kd0aij @julianoes @bkueng This is a position and attitude estimator that borrows ideas from LPE. Hopefully I will get it passing the CI mission soon. Your input is appreciated.
Paper describing the IEKF: https://hal.archives-ouvertes.fr/hal-00494342/document
@LorenzMeier This is my current best stab at an estimator API to support easy development and algorithm comparison. I ported ROS minimally for the components I needed to PX4. It is similar to the example directory multiplatform code as you suggested, but instead of adding a common middle layer between px4 and ros, it ports ROS keeping the API the same. The benefit is that it should be an API already well known by researchers and they can compile their code without any middle-layer on ROS.
In order to port ROS, I had to add a string hashing library. This is pretty small and template based. For each Node I build up a hash table of all topics needed, and will do the same for parameters. I have to do this manually right now on the PX4 side, but I could probably automate that with some effort.
TODO
IPython notebooks
Quick Links to Code for Review