GPS Position Hold Accuracy

Now that lots of people are getting their Arducopters in the air, and that position hold is implemented and stable; I'd like to discuss GPS Position Hold Accuracy.

 

My GPS Hold works as advertised, it stays in a 3-5 meter area and the altitude typically holds steady within a meter. This is great for aerial shots at a distance, but is more noticeable when taking pictures from a distance of 50--100 ft.

 

I'd be interested in seeing the Arducopter maintain a position within 1.5 meters.

 

The discussion on the table is... What can be done to reach or approach this accuracy?

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

Join diydrones

Email me when people reply –

Replies

  • I assumed that the accuracy of the GPS was the primary factor here, and that the path to better position hold would be through digital filtering, averaging, kalman filter, etc. I figured there was some code to be written which could average the position down to an accurate point in the first two seconds of position hold. 

     

    Discussion here leads one to believe that the data feeding the state machine can't get any better. And that PID tuning is the real way to accurate position hold. Is this the case. 

     

    My arducopter seems much more jerky while in position hold than when I am controlling it. This is a PID tuning issue; however, is there software refinement which can make the craft settle more and more into a locked position?

     

    Questions for open discussion as this is not a bug to be fixed, but a conversation on the subject.

  • Developer

     

         I checked in a few changes into the latest version of NG in trunk including some changes to the position hold which made it more stable if you're turning while GPS hold is on and also updated the PID values slightly.  Trunk can't be trusted as much as RC2 however so no guarantees.

         In any case, for me reducing the I term and slightly increasing the D term made it better:

      KP_GPS_ROLL                = 0.012;   //was 0.013; 
      KI_GPS_ROLL                = 0.001;   //was 0.005; 
      KD_GPS_ROLL                = 0.015;   //was 0.012; 
      KP_GPS_PITCH               = 0.010;   //was 0.013; 
      KI_GPS_PITCH               = 0.001;   //was 0.005; 
      KD_GPS_PITCH               = 0.015;   //was 0.01; 

        

         If you understand PIDs (and there's a good explanation on wikipedia here) then what you can do is just before a flight, go into the CLI menu (set the white switch back and restart your APM) and select 'z' to delete all logs.  switch CLI switch

    forward again and take a flight.  Then after the flight again go into the CLI menu and select 'd' to dump a log.  You can cut and paste the output into Excel, and filter the results for just GPS and PID and with a bit of effort you can see how the PID is performing.

     

         Other things that could help with stability:

              1. for altitude hold - blending the accelerometer + Barometer as pointed out by Ryan Beall to make it less jumpy up-and-down.  This is tough to get working well though (people have tried!).

              2. for horizontal stability, optical flow for position hold like Marko has done.  Again challenges around making it work at different altitudes.

  • PID tuning

    Declination settings

This reply was deleted.

Activity

Neville Rodrigues liked Neville Rodrigues's profile
Jun 30
Santiago Perez liked Santiago Perez's profile
Jun 21
More…