Indoor navigation: override EKF data

Hi all,

I have a problem trying to override the EKF position data from an external source.

My goal is to fly a quadrotor indoor using external sensors (vicon/lidar/...) in LOITER mode.

I successfully generated fake GPS data fed to the GPS serial port. But those data are then filtered by EKF and it is not really good.

What I'd like to do now is to override directly the estimated position and velocity from the filters (EKF or Complementary) with my data. I can add into GCS_Mavlink.cpp a custom message sent from the GCS, but then I don't know how to use those data and what to replace.

Do you have any tip?

I'll have a local information, let's say position and velocities in NED. How can I override the output of EKF such that my data goes directly to the controller? Is that easy?

Even more difficult: can I override only x-y data and use the baro+accelerometers fusion for altitude?

Thanks

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –

Replies

  • Maybe you can inject IMES messages, pretend to be a differential source/use the u-Blox AssistNow extension that they used to implement CellLocate.

    That is, rather than trying to extend the GPS from the flight controller side and fight with EKF, take advantage of the built-in extendability of chips like the u-Blox so in end effect it's just a "black box" GPS running in DGPS when it detects the IMES/SBAS/AssistNow corrections as it goes indoors.

    Just an idea. This is something I am also going to work on in the long run, but decided to wait not only because I'm busy but also I see the standards (or lack of) are too volatile at the moment. In the meantime many manufacturers appear to be bringing their own solutions to market. An open source hardware/software DIY solution would most likely be adopted by the community of course, not only because of price. So if that's what you're working on then good luck and I'm interested!

    Along the lines of your existing solution, maybe the GPS packets are filtered because they don't follow the "good" timing ranges controlled by the various EKF parameters of ArduCopter. I think I just fixed a significant accuracy problem with the more accurate M8N GPS by tweaking those (still under testing with improved settings). I guess you just need to inject NEMA data pretending to be at least 6 geostationary satellites with excellent signal strength and the EKF should prefer that data over that coming from the other (real) GPS port.

    I'm just getting into all this stuff at a lower level, so correct me if I'm wrong.

    • Thanks, but I'm not looking for a technology to fly indoor. I have Vicon camera system and other exteroceptive sensors.

      My problem now is software on ArduCopter (on Pixhawk). I need to override the data coming from EKF (estimated position and velocity) such that the position controller uses my data instead of the EKF ones.

  • Indoor navigation is an entirely different environment that requires some rather sophisticated equipment to accomplish.

    https://youtu.be/w2itwFJCgFQ

This reply was deleted.