View Full Version : Positioning systems?
Is there any way to make up a fairly simple positioning system for a robot? Maybe using beacons?
I'm looking to create a mapping robot of some kind, but am stuck on how to get a pinpointing system so it can tell where it is . . .
TimMooney
07-30-2007, 02:03 AM
I just had an idea that seems fairly simple and cheap. I don't know what your application might be, so I'll just use my own application (robot lawn mower), and assume we want the (x,y) position with an accuracy of a few inches, at a rate of one update every few seconds.
Mount a laser pointer on a motor shaft, so that the laser beam will sweep a horizontal arc across the lawn, at a height of a foot or so. (If the lawn is hilly, we'll need a fan-shaped beam. I'm not going to worry about this.)
Assume an omnidirectional light-sensitive receiver on the robot. I'm going to skip over implementation details for now.
Have the laser beam execute a smooth sweep across the yard, followed immediately by a smooth sweep back to its original direction. The robot sees pulses from both sweeps, and measures the time between them. From this time difference, and knowledge of the beam's angular motion and limits, the robot can determine its angle with respect to the angle at which the sweep reversed direction. If we have a one-second slow sweep of 180 degrees, and 1 ms time resolution, we should be able to get an angular precision of around 1/6 of a degree. If the lawn is 100 feet across, 180 degrees of arc would be at most 314 feet, so the worst-case linear precision would be about 4 inches.
Assume we have two of these things (say, A and B), and they operate in the following sequence: two seconds of nothing; two seconds of beam A's sweep; two seconds of beam B's sweep; repeat forever. It should be easy for the robot to understand which pulses came from which laser. After six seconds, the robot should have two angles, and should be able to solve for its (x,y) position.
Or not solve for it. A robot doesn't really need to work in Cartesian coordinates, just because we find them easy to understand. If its world view were entirely in angular coordinates, it could use the results directly. If, for example, you wanted to establish a boundary for the robot, you could just walk the boundary, recording time differences, load them into the robot, and have the robot compare its current data with stored boundary data. It's thinking might go something like this: "My A time difference is 0.237 seconds, and at this value, my B time difference must be greater than 0.472 seconds, and less than 1.763 seconds. If I'm too near either limit, I have to reverse direction."
So what do you think? Have I missed something important, or made some stupid mistake? I'd guess this idea could be pushed to a precision of one inch at a 1 Hz update rate, without getting into really serious metrology, but now we're talking about well characterized beam motions, hard-wired time measurements, and either a very sensitive receiver, or more powerful laser pointers than I'd want to have poking my dog in the eye.
I haven't said anything about accuracy, and I'm not going to, because precision is sufficient for guiding a lawn mower. (You really should give us *some* clue about your application.)
Tim
you can get a dog radio fence fiarly cheap, and modify it, if you're only using it in your yard...
TimMooney
07-30-2007, 10:25 AM
you can get a dog radio fence fiarly cheap, and modify it, if you're only using it in your yard...
That's a good point. If the positioning system is purely for establishing a boundary, an electronic fence would be simpler.
I actually have an electronic fence installed. However, I haven't figured out how to build detectors to use it. I'd guess some sort of tuned radio receiver would do the job, but I don't have enough information to implement yet.
Can anyone help me with this?
Tim
P.S. What do you think of the laser-sweep idea? Think it would work?
buy a second collar, it'll have an induction coil and a capacitor. Remove the capacitor, and come up with some sort of relay to send a signal to your controller. Just a guess.....
TimMooney
07-30-2007, 01:54 PM
buy a second collar, it'll have an induction coil and a capacitor. Remove the capacitor, and come up with some sort of relay to send a signal to your controller. Just a guess.....
I can't put a dog collar on a robot!! It's not that I'm not lame enough to punt this comprehensively, it's just that aesthetics would demand some sort of stuffed dog on which to mount the collar. Hmm... wait a minute... this could be alright. In fact, it's sounding better and better. I do have a variety of stuffed animals from which to choose (I have three girls; thus, an ample supply of stuffed animals), and I could screw their paws to the base board. Some would even stand upright, looking regal and totally in charge.
You want to see a picture of this, don't you. Yeah, I know you wanna see a stuffed dog being the captain of a robot lawn mower. Next you'll want one of those steering wheels pirates used to have.
Naaa. A dog collar would cost more than the whole rest of the robot so far. Plus, the stuffed dog would be going backwards half the time, looking more stupid than regal. I can't make a stuffed dog look stupid; that's just cruel. I want a circuit, so I can put detectors front and back, not worry about those teeny little batteries running down, and not destroy something that still works. Maybe I'll just get an op amp, and play around with it.
I have found out, by the way, that my electronic fence puts out a roughly 1-volt signal, whose frequency varies from around 3 kHz to 11 kHz, depending on the distance from the fence I want my dog to get a correction. At any distance, the frequency varies by about 1 kHz around a center frequency.
(I don't have this exactly; I'm just using a volt meter with a "frequency" button on it.) I'm sure *somebody* here is just great at analog electronics and could do this over lunch.
Tim
TimMooney
08-01-2007, 01:48 AM
I found a thread in another forum that describes how this can be done.
http://www.electro-tech-online.com/electronic-projects-design-ideas-reviews/20260-radio-frequency-circuit-design.html?highlight=loop
The thread is also interesting because of the characters contributing to it. Some of those guys over at electro-tech-online are unbelievably patient with the longest-running string of questions (and inane interruptions) on a single topic that I've ever seen. Anyway, on page one they provide the answer to how to keep a robot within a boundary wire energized by a low-voltage signal, and also how to energize the wire loop. But the thread goes on for seven more pages of question and answer, with way less RTFM'ing that one would expect. Then a second thread:
http://www.electro-tech-online.com/electronic-projects-design-ideas-reviews/21585-my-explaination.html?highlight=loop
picks up where the first left off, and it goes on for 7 more pages. I was ragged after having read the first thread, so I cut out early. Some of you guys probably have more fortitude.
Evidently, it worked, because there's a YouTube showing what I would guess to be the result, in action:
http://www.youtube.com/watch?v=f24HH5MbG2U
So, if you're interested in keeping a robot lawn mower inside a wire loop, (or causing a robot to follow an energized wire) you might want to check this out.
Tim
Flatmongoose
09-01-2007, 05:48 PM
Have a look at this site. I followed their plans and built these beacons for an autonomous indoor airship, and they gave me position to around 4cm over a 3m by 3m area. The guys on the site said it does 5m by 5m, but I ran out of time on the project.
http://www.restena.lu/convict/Jeunes/beacon.htm
vBulletin® v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.