Need help: GPS position hold algorithm?

Hi all,I'm just wondering how can we perform a position hold (within 10-20 cm, just like microdrone MD4-200 did ) with a GPS and IMU because I know that the accuracy of normal GPS is aroung 2m and can not achieve up to few cm level if we dont have DGPS. So I'm thinking of a Kalman fusion between GPS and IMU to give a more accuracy in position ? I'm not so clear about that, it has made me confused for a long timeThat's why I post this entry to get your inputAny idea are appriciated and welcome.I forget to post a link to you guy for easy imagination of GPS position hold.http://microdrones.com/en_mc_videos.phpthen looking for a video name "flight-performance md4-200, part 3", this is what it called "GPS positon hold"
E-mail me when people leave their comments –

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

Join diydrones

Comments

  • hi Jordi, thanks for your advise , I found some guys use pressure sensor for altitude hold and combine with accelerometer to use in GPS position hold with great result (while altitude hold mode active)
    hi Caleb, regarding fixed-gain obsever you mentioned it sounds nice to me. Have you ever experienced that method in something ?can you share it ?
  • If the mathematics behind the Kalman Filter is confusing to you, you could always use a fixed-gain observer, which is much more simple.

    In controls lingo, the KF is an "optimal observer" given some assumptions about noise. Depending on the covariance of your state estimates, the observer gain changes. But instead of using a KF to change the gain, you can use a fixed gain with decent results. And a fixed-gain observer is faster, too, since you don't have to invert a matrix.
  • Developer
    Well some GPS give the vector velocity (X,Y,Z) ready to use. You can integrate the Accelerometer to obtain the velocity in three axis too (X,Y,Z) compensating your heading and your pitch and roll, you will need to use some matrices over there. Then feed the vector velocity from the GPS and the one you calculated from the accels to the Kalman filter (I'm not so good with Kalman right now, but someday), the output should be the estimated and ultra filtered vector velocity of your system. Now is about control, try to keep always the velocity's zero to maintain the same spot, you can use this for navigation too and fly around. You can add a pressure sensor to have better altitude control too.

    And i don't even know if this is the correct way. I'm just telling you what i believe based on my experience in direction cosine matrix, kalman filters, etc. and the way other systems work.
  • Developer
    OK, I thought you were trying to use the IMU to increase the accuracy of absolute position. I'm not using an IMU yet so I'm curious how this works too.
    For now I'm doing a simple rate of turn calculation with the IR sensors to increase the accuracy of the course bearing between GPS reads. It's a simple internal simulation, but it helps keep the turn angle under more control and it doesn't give me math headaches.
  • hi Jordi, I did think of Kalman filter but still not so clear how to implement a kalman fusion for gps and IMU to my microcontroller.BTW i know that kind of optical flow using in Helicommand module.
  • Developer
    You need kalman Filters with GPS and accelerometers, to estimate a more accurate position. Some R/C helis uses optical flow (like optical mouses) to keep position.
  • hi Jason, By using relationships between position vs velocity, and velocity vs acceleration, we can estimated displacement in position (dX, dY, dZ) using accelerometer input value. However the error is drift over time, it should be use in shorterm period. Hope my explanation makes sense
  • Developer
    How would an IMU help you understand a specific location? I would assume one location is the same as another to an IMU. Just Curious.
This reply was deleted.