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\$
  • \$\begingroup\$ If you're into building robots, don't forget to commit to the Robotics Proposal \$\endgroup\$ – Rocketmagnet Sep 30 '12 at 17:09
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\$
  • \$\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 Dec 7 '10 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 Dec 7 '10 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\$ – mikeselectricstuff Dec 7 '10 at 17:51
  • \$\begingroup\$ @mikeselectricstuff - Couldn’t you adjust the image-processing algorithm based on altitude? \$\endgroup\$ – mjh2007 Dec 7 '10 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 Dec 7 '10 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\$
  • \$\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 Feb 13 '11 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 Feb 13 '11 at 10:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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