Robot to determine location
How about a little brainstorming? Just to warn you, I figure this is a very deep subject.
How does a robot know where it's at indoors? X & Y coordinates would work I think, maybe a Z (Height) axis, but I'll disregard the Z for now. Say this is a walking robot, or a rolling one without encoders. Aren't encoders pretty useless on carpet anyways?
For the average house, maybe 1200-2000sf with the furniture and other objects pretty much stay a known place ,excluding my shoes which somehow are never in their proper place. I suppose a map could be made of the house and stored in memory. Games do this, Wolfenstein all the way to whatever the current games are. Unfortunately, the robot doesn't have the luxury of being software generated.
My reading and thoughts have led me to the following:
GPS:
Doesn't work well indoors and even if it did, coordinates are only accurate to a published 5m (16ft)
IR beacons throughout the house emitting a location ID:
Only line of sight, and interpolating between several beacons probably won't be very accurate especially since the distance to each beacon is unknown..... although it may be possible to determine distance from light intensity.
RFID tags throughout the house with a location ID:
This MAY work, but to my knowledge RFID has a very limited range. This could work to my favor though because at least location could be known because of close proximity.
Ultrasonic beacons throughout the house with a location ID:
This would actually work well I think if sound didn't bounce off every object in the room.
Vision and object identification:
Wow
Maybe a combination of RFID and feelers?
With a compass and a map in memory, this might work.
Would anyone care to argue or pose any new ideas? I've read about lots of ideas and watched robots with vision that worked in a limited space, wheel encoders never seem to be that fantastic by themselves.
How does a robot know where it's at indoors? X & Y coordinates would work I think, maybe a Z (Height) axis, but I'll disregard the Z for now. Say this is a walking robot, or a rolling one without encoders. Aren't encoders pretty useless on carpet anyways?
For the average house, maybe 1200-2000sf with the furniture and other objects pretty much stay a known place ,excluding my shoes which somehow are never in their proper place. I suppose a map could be made of the house and stored in memory. Games do this, Wolfenstein all the way to whatever the current games are. Unfortunately, the robot doesn't have the luxury of being software generated.
My reading and thoughts have led me to the following:
GPS:
Doesn't work well indoors and even if it did, coordinates are only accurate to a published 5m (16ft)
IR beacons throughout the house emitting a location ID:
Only line of sight, and interpolating between several beacons probably won't be very accurate especially since the distance to each beacon is unknown..... although it may be possible to determine distance from light intensity.
RFID tags throughout the house with a location ID:
This MAY work, but to my knowledge RFID has a very limited range. This could work to my favor though because at least location could be known because of close proximity.
Ultrasonic beacons throughout the house with a location ID:
This would actually work well I think if sound didn't bounce off every object in the room.
Vision and object identification:
Wow
Maybe a combination of RFID and feelers?
With a compass and a map in memory, this might work.
Would anyone care to argue or pose any new ideas? I've read about lots of ideas and watched robots with vision that worked in a limited space, wheel encoders never seem to be that fantastic by themselves.
Comments
I'm also wondering how a Bot could use a laser distance sensor on a 360 degree turret. It would basically be sonar. I can't imagine the algorithm to "Fit" the acquired data to a known map though. I bet this brute force method would be very accurate...... and slow 360 distance measurements fit to a map with an unknown position or heading.... Wow!
edit: On second thought.... Unknown heading isn't exactly true. With a compass, the approximate heading can be known, which would make things a LOT easier. You would need to ignore smaller details though, like chair legs, etc. depending on the height of the measurement obviously.
and I'm not the first person to think of this unfortunately.
Your IR beacons could consist of two IR LEDs. Distance could be determined by how far apart the appear on the camera.
The Wii camera can also "see" laser spots (It seems to see a red laser best according to my tests (no filter on camera)). A combination of one of these cameras and a laser could be used as a range finder to correct encoder errors.
I've been anxious to try some of these Wii camera ideas out but I have too many "day job" projects. Fortunately my "day job" projects are also fun (Prop powered data logging).
Duane
Mike: I saw a youtube video several months ago made by a fella' that put vision on his Bot. His algorithm actually highlighted features on the video in real time. The Bot would travel to waypoints he commanded. I wish I could find it again. It's some pretty heavy stuff.
The laser distance seems the most hobby-friendly, the most feasible. I did find the Neato vacuum. From my reading, they were going to release the sensor for sale <$100, but I cannot find any source or any indication of anyone actually buying one. Maybe they had a problem with it? i Did find an article explaining it's function though. Hacking the vacuum is one possibility. I also found the Bosch DLR130K for $91 on Amazon. I don't know yet if anyone has hacked it, but surely it's possible.
http://www.neatorobotics.com/
Duane: "The Wii camera can also "see" laser spots (It seems to see a red laser best according to my tests (no filter on camera)). A combination of one of these cameras and a laser could be used as a range finder to correct encoder errors."
I'm not sure what this means??? Would this use trig? or?
I wish I could find <1ft capable GPS. The best I have come up with was multiple GPS units spaced some distance apart and interpolate the results. Supposedly there are two bands on the GPS. The one consumers use it guaranteed 5m resulotion, but the other??? Military? I dunno. I can't find a receiver that uses the second band/protocol/whatever.
There are several possible ways to use a laser and camera. And yes, they all (at least all I can think of) require trig.
One approach would be to have the camera and laser pointed parallel to each other. The position of the dot the camera sees will change depending on how far away the target is.
There are other ways that could increase accuracy by being able to point the camera and or laser to keep the laser dot within the camera's field of view. If the angles could be precisely known the distance calculation would be more precise. I think if the mounting distance between laser and camera could be increased, distance could be measured with greater precision than having the laser and camera mounted close together. (It's easier to triangulate a distance with a wider base on the triangle.)
[Side Note]
When the Allied Forces wanted to bomb German dams during WWII, they needed a very precise altimeter. Air pressure altimeters weren't accurate enough. (According to the movie I watched.)
They mounted a search light on the font and rear of the bomber. The search lights were angle such that at the desired altitude the two spots of light met. By watching the spots of light on the water surface they knew if they were too high or too low.
[\Side Note]
Instead of using two spot lights, we can use one (a laser) and by measuring the angle required to center the laser spot in the camera's view we can compute the distance to the laser spot.
One doesn't have to center the laser spot in the camera's field of view because the angle the camera is off center can be computed based on the distance the spot is from the view's center. (Using the x,y values provide by the camera.)(And trig.)
I've got to do this. The Wii camera and laser are calling to me. I can't resist much longer.
http://sites.google.com/site/todddanko/home/webcam_laser_ranger
I'm sure there are a lot more.
Best Buy has webcams for $8 apiece. I don't remember the brand, but it's supposed to be 2Mp.... I'm planning to get three of them tonight after work. Two for stereo / depth perception, and one to blow up
Machine vision seems like an awefull big undertaking though.
http://forums.parallax.com/showthread.php?122666-Robots-Are-more-better-in-this-case-I-think-so.
What if you used diferent RFID tags under the carpet instead.
AJ-9000: I'll check out the link. I have an RFID system in my shopping cart now trying to decide. Under the carpet is probably a better idea than on the wall like I was considering. I'm not sure, with RFID it's more like knowing what town of the state you are in rather than actually know WHERE you are..... but I think it would work very well with some sort of optical-like system whether is laser / ultrasonic or camera.
I purchased a 2048 pixel line scan sensor off Ebay for $6 + $6 shipping. I got VERY lucky if it works. The cheapest sensor I've seen so far with more than about 500 pixels is well over $100. The Parallax unit is $50 and only 128 pixel.... good for line following, but I don't think much more than that..... That's what it's intended for actually.
http://cgi.ebay.com/Fairchild-CAM1500R-Industrial-Line-Scan-Camer-/270703900730?pt=Vintage_Electronics_R2&hash=item3f0735b83a
http://forums.parallax.com/showthread.php?118023-An-example-of-the-Parallax-effect...&highlight=Parallax+effect+schwabe
Spiral_72, The link you gave is a good starting point. One problem is the trade off between the precision of the distance information is based on how far apart the laser and camara are. The father away they are the better the distance resolution. But when the laser and camera are far apart object that are close are no long in the field of view. I'm hoping to be able to pivot either the laser of the camera so I can see close objects as well as more distant objects. I think such a system is within the abilities of a Propeller chip.
I recently ordered some generic Wii Motes and Nunchucks. I'm very interested to see if the cameras on the generic use the same communication protocol.
I don't think I mentioned, the Wii camera needs to be removed from the Wii Mote before using it with the Prop.
Duane
It looks like the "Parallax Effect" uses a computer for image processing. I'm hoping to keep my system on a Prop. I think a laser and Wii camera would be an easier method for the Prop to handle. Of course I have the problem of laser light. I'll need to keep the robot under supervision.
The ceiling is marked with a highly infra-red reflective paint. The markings could be coded in a number of ways. A bar code comes to mind.
Anyhow, I'm thinking that it could be like the encoders on wheels. As the robot moves, it would see the blinking infra-red signals.
I love this idea. Why not infra-red mark the walls to. Not the floors because the paint would fade quickly.
Patent pending soon.
"...I hadn't seen Beau's post when I entered my last post....It looks like the "Parallax Effect" uses a computer for image processing. I'm hoping to keep my system on a Prop...." - What I was showing was just a possible method. No PC required other than to program :-)
Along similar lines, if you took two of the Wii cameras as your binocular vision, and simply looked for the convergence you would directly be able to find distance.
My understanding is that the Wii cameras are I2C, and only aquire 4 IR points? So what you have a total of 8 coordinate points that the Prop would use to calculate depth? That sounds like a piece of cake.
Imagine one camera fixed looking straight ahead at an IR point. Another camera is offset by 6 inches or so, but angled (<- maybe? could be compensated in software) so that the X,Y coordinate returned the same values as the first camera. It doesn't even need to be exact, you could do much of it in software so that an X/Y offset is applied. Now, just use Pythagorean theorem and monitor the value as you get closer to the IR source. If you periodically associate a known distance to the value returned you can solve for an unknown distance in the future. This just describes tracking one point, the same could be applied to all 4 points.
I think that this topic about how a robot can determine its location is very interesting and very crucial for many projects. The information given above are very interesting and very helpful!
Reading all this stuff I would like to focus on the issue of IR beacons throughout the navigation area.
I read about the problems of this method and I was wandering if it would be more effective another type of beacon like the ultrasound beacons or simple sound beacons.
Finally I think that it would be very interesting if anyone could give some examples (links or mini tutorials with images materials and schematics) about how we can build easy and cheap beacons.
Interesting idea about using a laser instead of the LED. I have one of these Sharp sensors and lots of lasers (who doesn't like lasers?).
I've in the middle of building an oven controller to use with the moisture tests I perform on samples. This time of year my day job becomes my evening and weekend job as well. I'm not sure when I'll have time to work on my robots.
I'll post pictures when I do. One of these days I'll even make a video.
Thanks for the ideas.
Duane
http://www.philohome.com/sensors/lasersensor.htm
He also did that with the Lego RCX system which is not as flexible as the Basic Stamp 2.
http://forums.parallax.com/showthread.php?120038-IR-augmented-Echo-location-with-the-Ping)))&highlight=ping
This is my attempt using the same technique.
http://forums.parallax.com/showthread.php?122480-Attempt-at-triangulation
aaa:COUNT 6,15, B0: DEBUG ? B0 :GOTO aaa
Changing the value of the 10K resistor between pins 1 & 2 slightly yields different pulse rates, so you could have several different beacons that the robot can navigate to.
Primary disadvantage is interference from other IR sources, like TV remote controls also based on a modulated 38-40 kHz IR carrier. There are 56 kHz receivers available at http://www.pololu.com/catalog/product/837/resources, but these are still prone to interference from typical TV remotes, which blast an overwhelmingly strong 40 kHz IR signal.
Kind of significant, since the servos need refreshing every 20 ms!
Anyways, I purchased a Fairchild Imaging 2048 pixel line scan CCD off ebay for $6..... pretty good and lucky considering they cost >$200 from what I've found! I need a lens of some sort, but with this I should be able to use a laser diode and pick off point distances.
I wrote a Qbasic program to pattern match a "sweep" of distance data to a known map..... I NEED compass data for it to work though, but that shouldn't be a problem. The compass gives me a heading vector for the match. Matching is possible without the compass, but I can't imagine the algorithm required.. This is all outside the capabilities of the BS2 though, so I've been working on serial communication between the BS2 and the PC. It doesn't work 100% yet, but it's getting there. The main hurdle has been the BS2 echos the RX data back to the PC when I use the SER pins..... which is kind of annoying and takes processing power to keep track of and filter out . The alternative is to use a second USB-Serial converter, or an older computer with serial and P0-P15 on the BS2. <sigh>
I also purchased a RFID kit. It's neat, but probably useless for bot navigation. The read distance is just too short. It could be a secondary location tool I suppose, but I'll put the RFID on the shelf for another project.
Aside from that, this is all FYI and to let you know I'll research all the suggestions and comments asap.
That's pretty ingenious erco!