13
\$\begingroup\$

I will be building a 4 propeller quadrocopter drone at some point. I want to make it relatively easy to fly by getting it to hover still when the controls are not touched.

Can someone offer some information on how I'd get the quadrotor to stay put in the air? I was thinking accelerometers to measure drift and roll/pitch/yaw, but they're not sensitive enough to detect very slow drift due to, for example, a light breeze. Is GPS accurate enough to stamp out drift on the 10cm scale (that is, detect a 10cm drift (or less, maybe?) from the drone's original position)?

\$\endgroup\$
1
  • \$\begingroup\$ If you're into building robots, don't forget to commit to the Robotics Proposal \$\endgroup\$ Commented Sep 30, 2012 at 17:09

3 Answers 3

16
\$\begingroup\$

I think that you will want to use a combination of sensors. The accelerometers and gyroscopes will be able to correct for strong breezes. You can then use GPS to counter out the longer-term drift (or bias, as it is sometimes called). I think that the combination of these two sensors in some sort of filter (probably a Kalman) will keep your position drift minimized.

GPS won't be accurate enough by itself though. An alternative approach to the Kalman filter (which can get a bit math heavy) is to use the DCM algorithm from DIYdrones. There seems to be a lot of success in using this so far.

Finally, the Parrot drone quadrotor uses a downward-facing 60fps camera to cancel out drift. It looks down and extracts features from the ground under it, then uses a type of visual odometry (I'm assuming some sort of optical flow algorithm) to determine how far the quadrotor has drifted. I believe that this only works at low altitudes on the Parrot, but I see no reason why it couldn't be extended to a higher altitude.

\$\endgroup\$
8
  • \$\begingroup\$ Thank you! I think I will go for the downfacing camera option as I'll be powering the drone via an LPC1768. That's enough processing power to do basic line detection at 640x480 right? Thanks for your alternate solution of using gyroscopes and GPS for long term drift. Also, do you know of any sensors that would be able to sense drift? \$\endgroup\$
    – Bojangles
    Commented Dec 7, 2010 at 15:50
  • 1
    \$\begingroup\$ In addition to the 6 degree of freedom IMU, I've heard of people using magnetometers to determine long-term drift by sensing changes in the Earth's magnetic field. I don't know that this is necessarily a good option, as the field can fluctuate rapidly around high-current devices (like 4 motors) and doesn't vary in a linear manner. \$\endgroup\$
    – mjcarroll
    Commented Dec 7, 2010 at 15:55
  • 3
    \$\begingroup\$ The problem with camera at higher altitudes is that very small amounts of roll will produce increasingly large shifts in the image as altitude increases, unless the camera is on a self-levelling mount. \$\endgroup\$ Commented Dec 7, 2010 at 17:51
  • \$\begingroup\$ @mikeselectricstuff - Couldn’t you adjust the image-processing algorithm based on altitude? \$\endgroup\$
    – mjh2007
    Commented Dec 7, 2010 at 21:45
  • 1
    \$\begingroup\$ @mjh I think that the problem is best seen in an example. At an altitude of 50 feet, a 5 degree roll or pitch (pretty typical for moving in the X or Y direction on a quadrotor) will cause ground features to move (tan(5 deg) * 50 feet) = 4.25 feet (rough math). Even without the quadrotor moving, all of the ground features will shift by 4 feet. This could be compensated for, but it becomes difficult with resolution and computation restrictions. \$\endgroup\$
    – mjcarroll
    Commented Dec 7, 2010 at 23:03
3
\$\begingroup\$

GPS isn't accurate enough. Accelerometers can only measure acceleration, not a constant drift.

Maybe a localized positioning system using beacons and trilateration or something?

Maybe cheap cameras to detect drift relative to the ground or other stationary objects? You can cancel out rotations using the gyroscopes, and then do a cross-correlation between subsequent frames to detect drift relative to the ground, the way an optical mouse works.

\$\endgroup\$
3
\$\begingroup\$

If I were going to do this using a downward facing camera, the first thing i would want is high performance and relatively low resolution (this is a sensor, I'm not interested in the camera's input really) and so the camera i'd use for this would be from an optical mouse: they have very high speed, low resolution cameras. With a bit of hacking about I'm sure you could come up with a lens arrangement to let it distinguish between features on the ground and then you could use a difference-extracting optical flow algorithm to process this input.

\$\endgroup\$
2
  • \$\begingroup\$ I doubt you need tremendous update rates; the relatively slow speed of a quadrotor and its reaction time doesn't really make it a good fit. \$\endgroup\$
    – Nick T
    Commented Feb 13, 2011 at 8:44
  • \$\begingroup\$ Thanks for the alternative solution Choscura. I'll definitely look into using an optical mouse - I don't need the camera part of a camera either ;-) The only problem I can see is that if the image is out of focus, the difference algorithm might not work as well. Am I right? \$\endgroup\$
    – Bojangles
    Commented Feb 13, 2011 at 10:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.