Poor weather has played havoc with our blade-testing, so the Genuinely Autonomous Garden Assistant (GAGA) team has been focusing on location-tracking technologies, with near-uniformly disappointing results. Who would have believed that in the first years of the 21st century, a robot going about its business could not be followed …
Try using two IR LED's on your stick (top and bottom), then put an IR Trans filter on the camera Job done. You now can only see the LEDS not background and you can measure the height (Distance between).
You could use a third, Mid-height, LED to code which stick it is looking at. (ratio of gap between mid and top:bottom LEDS.)
Or.. use multiple Single LED beacons flashing at different rates. A fix can be obtained by seeing any 3 beacons. (use angles to establish position).
I've just noticed the funky mouseover thing on your SPB banner. Very nice.
(For fellow commentards, it seems to need Chrome.)
Re: SPB Banner
Wow - well spotted. I like it
Re: SPB Banner
Works in Safari
Re: SPB Banner
Thank you, Mr. Monkey, for the hint. And thanks to the good folks at ElReg for the banner, the article and the robo-lawnmower project.
I was going to say exact;y what IR 14:25 said - so can only add the possibility of using SONAR. Nats manage to use it quite accurately.
Just an idea
Not sonar - triangulation based on ultrasound. Right frequency, wrong choice of transmitter/receiver.
Just put a source at each corner of the lawn, modulate with an ID and timing (you can wire them to a central source) and read the sources at 3 mikes each a foot or so from the center of the lawnmower.
The rest is a trivial computation problem - you should have no problem nailing the coordinates and orientation of your lawnmower down to under 1m. Add some roomba style bumpers to prevent mowing into things and voila - you got your autonomous lawnmower. For added benefit you can have all the computation done centrally and just give the lawnmower commands over let's say WiFi (and read data from the mikes).
The fact that sound moves so slow in the air will allow you to do something which you cannot do using radio - compare two signals.
You will not have any rodents, cats, bats or dogs in a mile radius either.
If you are that keen on doing it via radio use beacons at each corner and a rotating flat high gain antenna on top of the GAGA. Measure signal and triangualate. 4 WiFi access points, different SSIDs and a 20db directional antenna will do the trick - total BOM of under 300£.
In both cases the key is to stop occasionally, re-sync to a position and use inertial guidance in-between.
Something like this. Can have some transducers on the lawn boundaries broadcasting identifiers, along with maybe some kind of rotating transducers atop the bot working as a SONAR beacon for detecting unexpected cats, dogs and legs.
How reliable will ultrasound be in the presence of a clattering 10k RPM lawnmower ?
Oops...I actually meant BATS not NATS - although I do believe national air traffic control have something similar :-)
About as reliable as it is in the parking alarm sensor sat next to a chugging exhaust system. Or, in an old TV remote competing with the din coming out of the loudspeaker.
I can't see why it wouldn't work, myself. Couple of locator beacons on the lawn boundaries effectively broadcasting small signatures to say "I am boundary vertex number 0x0001", and some transducers (or a single rotating transducer pair) on the mower sending out a simple ping every 20ms or so and listening for the reply. The former lets the mower know where it is, the latter lets it avoid unexpected pets, toys and test engineers. So long as they are taller than the grass, of course.
Of course for extra propellorheadedness, make the whole system self-setting. Plonk the boundary beacons in, they talk to each other, find out their relative positions automatically, and feed that to the mower's onboard computer to tell it what part of the mowing boundary each beacon represents.
Then patent the lot and become the next Dyson. Muahahaha, etc.
> If you are that keen on doing it via radio use beacons at each corner and a rotating flat high gain antenna on top of the GAGA. Measure signal and triangualate. 4 WiFi access points, different SSIDs and a 20db directional antenna will do the trick - total BOM of under 300£.
I think sticking to radio with a rotating directional antenna could work well. Look at the Direction Finding sections of the ARRL Antenna Book and the ARRL Handbook for ideas. A rotating loop antenna (with an encoder on the spindle) could work quite well, then (with a loop) you just look for the nulls.
You will probably need 3 beacons, in an L. You then have three angles from "forward". You can use these angles to triangulate the position, plus you get the mower's orientation.
Alternatively you could obtain a goat.
If the positions of the beacons are known, you'd only need two - the robot is "never" going to be the other side of the fence?
Well, you might only need two if the beacons are just acting as locators, so long as the robot can't get to the other side of the line between them and confuse itself. I'm wondering how doable it is to have each beacon mark out the vertices of a polygon that describes the boundary of the lawn though. Stick a light on top and make them look like solar garden decorations.
If each beacon can talk to the others and they can triangulate their positions relative to each other, then they can chat with whatever system is aboard the lawnbot. Maybe even in real-time, so you can move the beacons around mid-mow and define areas where you can sit and enjoy your G&T while watching the mechanized underling beavering away in its half of the garden.
Like I said though, however you design the positioning system of this thing, I think it would be prudent to have a SONAR or RADAR system on the lawnbot itself for detecting obstacles. Nothing fancy, just a kit or COTS box that you point at something and it gives you a varying signal depending on whether it's pointing at anything and how close it is. Stick it on a stepper motor for 360 degree detection, and possibly hack it up with an MP3 player to provide random BOFHisms and threats toward whatever ankles, cats or plant pots get in the way.
Run a grid of wire under the lawn.
Have a low-powered transmitter on the bot.
You can then sense where the bot is by seeing which horizontal and which vertical wires have the strongest signal on them.
You could reverse it and have slightly different frequencies transmitted down each horizontal and vertical wire... might get a bit noisy though!
Lego Robot Solutions
This problem has arisen in the hobby robot market many times try these solutions:
Two lasers mounted on a simple servo platform, one each in the bottom two corners of the garden.
A sensor on the bot.
First laser starts a sweep, bot reports when it sees a laser flash. This gives you tangent from one laser scanner.
Second laser does the same. This lets you triangulate the bot's position.
Re: This lets you triangulate the bot's position.
Then turn up the power and blow that mother right outta the garden!
Build a perimeter of stakes in the ground with reflectors on them, then use distance measuring laser or ultrasound (similar to those used be estate agents). The accuracy should be within a few cm's.
A laser eye???
Put a rotating laser on the top of the lawnmower and (at least) 3 prisms in strategic places and then triangulate of them.
Otherwise, stick a total station in 'track' mode, whack a 360 degree prism on the top of the lawnmower and have the local station continually relay the position back to the lawnmower.
Of course, neither of these solutions are any use on undulating terrain.
Re: A laser eye???
Sure it'll work fine in undulating terrain.
You just need to put the prism atop a long pole on top of the mower, and also add a couple of sensors and motors to make certain the pole is vertical at all times.
Of course, totalstations are a bit on the expensive side...
Put a rotating laser on the top of the lawnmower
It's a lawnmower, not a frickin' shark!
Re: A laser eye???
Or a compass and inclinometer on the pole, with a bit of trig...
Re: A laser eye???
it's cheaper than getting an IMU, which would be the logical solution ;)
I just checked with the OS, they have a GNSS station in Inverness so you should be able to get a feed from there. However you need something a little beefier than DGPS (like MAX).
Why not just
Make GAGA stand up on three legs and shout "Ulla! Ulla!" ?
Re: Why not just
Re-inventing the wheel?
The film industry use high-contrast markers to identify parts of the image where they need to put some CGI in. See, for example, this article.
You could use slightly different markers in each corner - that way, the corner is uniquely tagged. Find the angle to each marker (camera on a stepper motor spindle, perhaps with a shaft encoder), and with knowledge of the garden dimensions, you can triangulate the current position.
There's a bit of coding to be done - but it looks like a fabulous job for a Raspberry Pi.
I'd have thought that a wiimote style collection of IR beacons around the lawn and a decent camera on the robot would have done quite well.
How undulating is the lawn - From any point on my lawn I can see the two top corners of the house (i.e. ideal locations for beacons/reflectors)
Re: IR retroreflectors?
IR beacons won't work so well on a lovely sunny day.
Re: IR retroreflectors?
They sure do when they are brighter than the background. This is a proven solution.
Re: IR retroreflectors?
"IR beacons won't work so well on a lovely sunny day."
Did you spot the bit where this was in Inverness
I worked on this very problem...
For a LEGO robot I built. I never finished it, but it was due to time, and not a technical problem. I managed to get it to report its location fairly accurately, even!
First, it needs to map the yard - where everything is. Use proximity sensors on the two front corners to judge how close it comes to any given object. It drives around the outside, then fills in the middle.
Once it's mapped everything, you can download the map, and mark said map to tell it where it's allowed, and what boundaries exist that it missed (say, a gate), or that don't exist that it thought it saw (someone stood in front of it). With the right software, it can tell where it is by guessing its general location based on distance traveled, then match that location to a nearby landmark. Or, as long as it knows the outside boundary, just have it follow its own cut trail...
I would suggest an exterior brain, though; a computer that talks to it over WiFi, controlling its actions. That would give you a way to visualize its progress - and make it much smarter - without adding a lot of weight. That, and you can make it run on Perl scripts.
If light is too quick
Why not use sound to determine range? It has the added advantage of deterring pets.
Also, why not put the sticks / LEDs / markers in the garden rather than on GAGA.
Particle filters can be implemented in less than 100 lines of code. Combine this with your GPS readings and life should be good. If you stick on a few range sensors you could probably get even more accurate localisation.
Basically what they said
I agree with those other anonymous cowards. IR leds (powerfull ones if you want to work in the daylight) are the way to go. You could use a single "measuring stick". Personally I would see about a crude 360* camera or a panning camera installation and put a strobing led in each corner of the yard. Then you can use the strobe period to determine which led is which and use the relative angles to calculate your position.
Also, for image processing that measuring stick is by FAR not contrasting enough. If you want any chance of picking it out it should be dayglow orange or fluorescent green or something. Muddy brown just doesn't contrast enough to pick out of the background.
You could bury a grid of wires a couple of inches down in a couple of hours a tiny fraction of the time and cost of looking for a wireless solution. Either have the mower transmit a frequency into the wires and a base station report the position wirelessly to the mower or put an fsk id on the wires for the mower to id the wires as it crosses over them.
Put a few tonnes worth on the lawn. Stick the bot on top of it. Job's a good one.
Turn the problem around have a static WIFI camera that tracks the motion of the lawnmower?
static WIFI camera
Great idea, wouldn't work for L shaped gardens though.
Use the LED tracking, just flash your LED in a predefined pattern that your system can recognize. This should make it easier to identify the target. Color be damned, use IR if you want and maybe you will be able to mow during the day.
Easier and cheaper
Instead of using visual recognition for distance, use triangulation. A couple of beacons with recognisable signals can give you directions. Measure the angles, calculate the location. For very rugged terrain, add more beacons. Navigators, pilots and automated systems use it a lot, and have for a long time.
arduino based SONAR
I remember coming across an arduino based project that would seem to fit the bill nicely but can't for the life of me remember the search phrasing that it came up through but it went basically like this:
# Mobile unit sends out an ultrasonic ping
# arduino with three (or four) receivers around 'pitch' takes the differential timings of the signal to each receiver
# arduino calculates the location of mobile unit from the differential timings and locations of receivers
# arduin transmits coordinates back to mobile unit via Xbee
This method only requires accurate measurement of the locations of the receivers, not too difficult, I remember it saying they managed accuracy in the 10s of centimetres. Not too shabby!
How about some sort of buried cable. You could lay it out to suit a known path, Shove a current down it and you have a nice inductor under the ground throwing out a magnetic field. How you then track that field with the mower I have absolutely no idea. But, the idea is, you use that cable/field as a rail. The mower just starts at the beginning and ends, hopefully, at the end and runs into a brick wall or something to stop it.
A handful of IR LEDs, a piece of exposed 35mm film and CCV the software from http://ccv.nuigroup.com/ mutlitouch surface hobby should do the trick nicely
Several bots use an ultrasound system for navigation. If the intelligence of your bot is up to it, it may be able to use several ultrasound sensors to create a map of where it is / has been. Otherwise, a set of ultrasound beacons and ol' triangulation might work well.
Two Ultrasound transmitters that are separated and transmitting different but isochronous codes. (This can be done by "slaving one" off the other via IR link, so one transmitter is "dumb" just using an IR remote sensor driving the Ultrasonic transmitter directly).
A sensor on the robot can calculate the distance from each easily. If the robot is told what side of the line between the Transmitters it's on, it knows it's location. if it has a pair of separated sensors it can use the phase between them to calculate orientation.
Put the two Ultrasound TX at two corners of the boundary.
SLAM - Simultaneous Localization and Mapping
Check out the robot operating system at www.ros.org . Lots of people build lots of different SLAM solutions. One major problem is the correspondence problem, how to you know which spacial features are distinct. With active beacons this can be encoded. So have beacons chirping at different frequencies and then detect those frequencies by differencing an image at the same rates i.e. add the current image to the accumulator, then subtract it from the accumulator every X seconds. The accumulator with pick out pixels that vary at the same frequency, whereas other pixel values will cancel each other out.
Turn a camera into a omni direction camera by pointing it at a ball bearing. Bit of image warping and you can now get the *direction* of all distinct beacons. So now you can do "bearing only SLAM" (probably already in ROS I expect). A compass is also a useful addition for this kind of localization. Normal digital cameras = IR cameras after the removal of the IR filter.
Let us know if you need any help through Edinburgh Hacklab. We have alot of robotacists members (including me a.k.a. Larkworthy).
There's another contender...
Have you seen the Nanotron NanoLoc devices? Uses chirp spread spectrum to get range information.
Of course two independant GPS receivers fix will wander relative to each other; they are free to use different satellites. Differential GPS involves generating corrections for individual satellites, not subtracting two GPS receiver fixes.