17
$\begingroup$

I want to use an RF beacon to localize my quadcopter for autolanding, when GPS is not precise enough, for example, when my driveway is only 10 feet wide, and the GPS is only showing 20-30 ft. accuracy (with a proverbial lake of lava on either side). The quadcopter would use the GPS to fly to the rough location until it had a strong enough signal off the beacon, when it would begin to use that signal to come to a landing in a precise location, referenced off said beacon. Can someone please explain to me the concepts and theories behind building the beacon and it's accompanying receiver (suitable for connection to an Arduino via any digital or analog method) and achieving, say, a 4" or better horizontal and vertical accuracy within a 50' sphere? Minimally, the quad should have range and altitude, i.e. "I am 10 feet away from the beacon and 2 feet above it". How much added complexity would it take to make the robot fully position aware about the beacon, i.e. "x ft. South, y ft. West and z ft. above it", where the coordinate system is determined by the beacon and not linked to any sort of geographic coordinate system? If the beacon is mounted on a, say, 10 ft pole, are there any changes to be made versus having it on the ground and presuming that all activity takes place above it's x-y plane?

Last note- This thing would prefferably operate in the 72MHz band, please presume that where I'm operating, there are not other devices operating on the same band.

$\endgroup$
  • 2
    $\begingroup$ Precise and reliable RF localisation is pretty hard. In your case I would go for something like an external tracking system which uses vision. It may be workable with a single camera at the landing pad looking upward, if combined with altitude information from the quadcopter. $\endgroup$ – Jakob Nov 2 '12 at 8:20
  • $\begingroup$ Just be mindful as to whether a localiser beacon is "legal" use of a 72MHz channel in your location $\endgroup$ – Andrew Nov 2 '12 at 10:10
  • $\begingroup$ Yes, use off-board sensors to track the quadcopter. That's how some labs are able to make hybrid systems: Mobile robots which launch quadcopters. $\endgroup$ – Josh Vander Hook Nov 3 '12 at 16:31
  • $\begingroup$ You might want to see en.wikipedia.org/wiki/Local_Area_Augmentation_System if you can implement a LAAS (Big Project) you might be able to use a WAAS compatible GPS receiver to navigate around. $\endgroup$ – Lord Loh. Nov 12 '12 at 22:06
  • $\begingroup$ waas.stanford.edu/research/laas.htm might also be of some use. $\endgroup$ – Lord Loh. Nov 12 '12 at 22:12
6
$\begingroup$

You might be able to do this using inductive coupling to give the quad copter some indication as to which direction it should move to approach the landing pad.

Quad copter landing pad

On the landing pad is a single coil on the vertical axis (this is the transmitter). On the quad-copter are two coils, 90º apart and on the horizontal axis (these are the receivers). An alternating current is passing through the coil on the handing pad, creating an alternating magnetic field around it.

If the quad-copter is centred directly above the landing pad, then no current will be induced in the receivers. If the quad-copter is to one side, then a current will be induced in the receivers. Which receiver is seeing the current will tell the quad-copter which axis to move in, but not whether to move one way or the other. You can use a band-pass filter to distinguish between the signal from the landing pad, and noise from the motors.

Deciding which direction to move in is tricky, and I'm not sure of the best solution yet.

One way would be to correlate the change in signal with velocity information inferred from the accelerometers. If the quad-copter is moving one way, and sees the induced current reduce at the same time, then it knows that it should continue moving that way.

Another way would be to pulse a DC current through the coil. Pulse it forwards for 10ms, then backwards for 30ms. Use a low-pass filter on the receivers to distinguish between this signal and background noise. By looking at the pulse widths, the quad-copter can now tell the difference between the forward and backwards directions.


You can probably make the receivers smaller than I have drawn here, and the transmitter as large as the landing pad.

$\endgroup$
1
$\begingroup$

I would start here, I know someone who did this on a quadrotor with some 50$ gps modules and said it worked very well.

http://www.rtklib.com/

http://en.wikipedia.org/wiki/Real_Time_Kinematic

$\endgroup$
  • 2
    $\begingroup$ Using an RTK GPS is a good way to improve your positioning quality, but it won't help if your satellites are shadowed by e.g. your house. For free areas it should be ok, but I would not rely on it near buildings too much. $\endgroup$ – Jakob Nov 2 '12 at 8:16
  • $\begingroup$ Could you elaborate a bit more? Answers with little more than a link are actively discouraged, due to linkrot and other things. Write a bit about your procedure or something :) $\endgroup$ – Manishearth Nov 3 '12 at 19:15
1
$\begingroup$

As other people mentioned, an RF beacon will probably be difficult and vision is definitely a viable option. The common difficulty with vision-based solutions is that they are computationally expensive, making it difficult to be done on-board.

You can try using the PixArt IR tracking sensor from a Nintendo Wii remote, which communicates through I2C and can thus be easily connected to for example an Arduino and place a few active IR beacons on the ground which are then picked up by the sensor. Using a simple clever pose estimation algorithm will get you an accurate estimate of your position.

A regular colour camera could also be used but unless you have something like a Beagleboard or Gumstix on-board it would be difficult to process the images in real-time. (although there is nothing stopping you from doing calculations on the ground, of course).

$\endgroup$

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.