Beacon Navigation (and other absolute position techniques)

Inside the Roomba and Scooba and more, Cool mods, Repair and Upgrades - including the all new iRobot Create Kit. Let's void that warranty baby!

Beacon Navigation (and other absolute position techniques)

Postby cadcoke4 » October 16th, 2006, 1:16 am

I wanted to start a new thread that was specifically focused on the Beacon idea. (it had started in the topic titled "Roomba and Room Mapping")

I think a few of us are wanting to go with the concept of the rotating laser beam hitting beacons (reflectors).

To describe this again, the idea is that you spin the beam from a laser around the room. Mounted adjacent to the laser is a sensor which can detect when the laser light is reflected back when it hits a retro-reflective surface.

By timing how long it took for the laser to rotate 360 degrees, and the time the robot detects any light bounced back, we can determine the angle of each reflector in relation to the robot. If those reflectors are in known locations, the robot can then calculate its own location using any two of the beacons.

[Images are attached below]

The only laser/sensor package that has been mentioned so far was a page by this guy, who made a lego robot with laser target detectors;
http://www.philohome.com/sensors/lasersensor.htm [Are there any others ?]

The next issue is about barcodes. I think that for this sort of sensing, we must start with a stripe (of the reflective tape), and end with a stripe (i.e. start and stop bits). Then the question is how many bits do we want. A strip of tape is a 1, and an absence of tape in a spot is a 0 in binary. So, to encode beacon #3 [which is binary 0011] is 100111

QUESTIONS THAT NEED TO BE ANSWERED;

Actually, 16 seems a bit low, and I would prefer to see at least 32, but how big would these barcodes need to be? What can the device can detect? How wide does each stripe of reflective tape need to be for detection from across an average room? I think this is best determined by experiment.

Another parameter in determining size is cosmetic. These barcodes must stay in your house. Is 6" wide x 2" tall OK? Remember that they can be placed on the kick-plates of cabinets, and under furniture so they might be out of sight in most instances.

I have a Basic Stamp II, so perhaps I can get started on making the laser/sensor package. But, I don't have Roomba. I really want to get 802.11 WiFi so I can do the programming and monitor the progress from my computer. But every option I've seen so far is about $300 [Roomba connector to Serial, and Serial to 802.11]. So hearing that IRobot just got FCC approval on a 802.11 device, I am considering waiting until these units become available (if they are going to be available).
Attachments
Roomba in Room.gif
Roomba in Room with Reflective Beacons
Roomba in Room.gif (12.73 KiB) Viewed 11247 times
Laser&Sensor Inside Roomba.gif
Laser and Sensor Illustration (based on Lego laser design)
Laser&Sensor Inside Roomba.gif (7.89 KiB) Viewed 11245 times
Joe Dunfee
cadcoke4
Robot Addict
 
Posts: 111
Joined: October 8th, 2006, 12:14 am

Postby Rello » October 17th, 2006, 9:39 pm

good Idea to open a separate one.

I just ordered a pack of the Hamamatsu S6986 sensors and a laser diode to have something to start with. I am still not sure where to get a lens for the focusing of the incoming laser beam. any idea?


regarding the barcode: I am not sure and I think we can not define it now without a test-environment. It is dependent on the response time of the sensor unit and then most important on the Basic Stamp.
I am not sure how exactly the code will look like but the basic stamp is not the fastest one and also needs it's time to process the values.

I think the best way would be to get the basics together and turn up the speed of the sensor slowly to a reasonable value. there still needs to be enough time for the Stamp to read the values, calculate the angles and calculate the position. once we know, how long this takes, we might know.

Or do you think different? did you think about the "spinning the roomba" way? then the problem would not be existing.

if you have a Stamp on hand it might be interesting to think about the actual calculation (based on http://www.seattlerobotics.org/encoder/ ... sernav.htm ???). also without the hardware it could be started using fixed values for the seconds between the "pings" and converting them to an x/y coordinate
Rello
Robot Groupie
 
Posts: 63
Joined: October 8th, 2006, 7:14 am

Postby cadcoke4 » October 18th, 2006, 8:48 am

Yes, personally I think the rotating Roomba is the way to go. I didn't mention that on the first post because I wanted to make sure others felt the thread included other options. I think the laser/sensor package would be the same regardless of if the Roomba spun, or only the laser spun.

I found one of the papers on this that I had been searching for! It is a complete how-to by Jim Ubersetzig, which includes complete wireing and code for a Basic Stamp II. Since he is rotating the laser head fairly slowly with a servo, I think it is very comparable to rotating a Roomba.;
Part 1 http://www.rssc.org/newsletter/sep99.pdf
Part 2 http://www.rssc.org/newsletter/oct99.pdf

Mr. Ubersetzig is not trying to read bar-codes, so additional work is needed for us. The rate of spin, and the speed of the computer reading the information are critical factors regarding how dense a bar-code we can use. We can calculate a minimum, but I suspect for it to be robust, we must stay well above that minimum.

But, I have no idea how fast a Roomba can spin.

Regarding the barcodes themselves; the Scribbler robot [a very nicely packaged, and complete robot with a BS II for only $80] has the ability to read bar codes using its line sensors. Here is a link to print them; http://www.scribblerrobot.com/dl/Resour ... s-v1.0.pdf

Note that since they don't know which direction the bar code will be read, they make it directional by making the first two bars on each direction different. Then, instead of having the presence, or absence of a bar be the method of encoding the digits, they have fat vs. thin bars. I wonder why this method is use?
Joe Dunfee
cadcoke4
Robot Addict
 
Posts: 111
Joined: October 8th, 2006, 12:14 am

Postby cadcoke4 » October 18th, 2006, 1:46 pm

In a private message with Rello, we started talking in more detail about the processing of the information.

The system by Ubersetzig was for a scanning head that turned on a servo. So, it has a lot of stuff that we don't need.

Regarding spinning the Roomba (with its laser sensor), I think we should simply use the rotate command. If this time is pretty accurate, then we only need to determine how much time it takes for a 360 degree turn.

But, if the Roomba is not reliable in its timing for a 360, we can have it turn around twice. The reason for twice is that I must guarantee that we catch one of the targets at least twice. By determining the time it took to see the same target twice, we can calculate the time for a single spin.

In his programming he records the peak readings, along with the time they occured. Another approch is to record all readings, but to do them at regular intervals...perhaps every half degree. I am not sure which approach is best for barcode reading. We could also take a middle-of-the-road approach and use his threshold value to initiate recording a high resolution series of readings. The idea is to detect the first stripe of the barcode and then enough detail to catch the series of stripes following.

I think I may post this issue to the comp.robotics.misc usenet newsgroup. Maybe we can find someone with more experience in processing barcodes to help guide us.
Joe Dunfee
cadcoke4
Robot Addict
 
Posts: 111
Joined: October 8th, 2006, 12:14 am

Postby cadcoke4 » October 20th, 2006, 11:04 pm

I've done a few calculations, to help with design.

The wheels can be commanded to go a max of 500mm/sec. [19.7in/sec.]
I took a rough estimate the wheel base, and figure the Roomba can spin at a max of 1 revolution in 1 1/2 sec. But, for my calculations, I went through a 2 second revolution.

The barcode I drew was based on a 1/2" strip of retroreflective tape. I had one start bit, 7 digits, and 1 stop bit. This would fit on a 3" x 5" card.

I drew a room 15' x 11'. I set the roomba at one corner, and a barcode at the other. The width of one stripe of tape occupied an angle of 0.117 degrees.

So, if the laser were focused to a perfect spot, the beam would have spent 0.0075 sec [0.75ms]. According to one source I found on reading barcodes, you want at least 8 clock cycles per bar. So, the minimum resolution for the scan is 0.75ms/8 = 0.094ms.

I did look at the Basic Stamp II (even though I don't think I will go with that for my computer) and it can measure pulses as low 0.004ms. So, we can be confident that even a lower-end computer can handle it. Also, it looks like I can minimize the size of the barcodes as well. However, I don't yet know how small of a dot we can get from the laser.
Joe Dunfee
cadcoke4
Robot Addict
 
Posts: 111
Joined: October 8th, 2006, 12:14 am

Postby Rello » October 21st, 2006, 7:52 pm

cadcoke3 wrote:I did look at the Basic Stamp II (even though I don't think I will go with that for my computer)

do you have anything else in mind?

I am expecting my laser diode and the sensor these days. then I will measure the point. I will also look up the specs of the sensor, how quick this one is. but I don't see an issue here
Rello
Robot Groupie
 
Posts: 63
Joined: October 8th, 2006, 7:14 am

Postby cadcoke4 » October 22nd, 2006, 1:41 pm

In terms of processor, it is turning out to be a complex issue for me. Initially, I just wanted some basic processing on the Roomba, because I wanted to use my windows computer for much of the work. This way I could expand into adding a video camera, etc.

So, I am sort of waiting for a Roomba with WiFi built in. While we have news about iRobot's FCC approval for a WiFi transmitter, we don't actually know if iRobot will ever make a WiFi Roomba.

But the main reason for me avoiding the Basic Stamp is that it does not have any analog inputs. It can only simulate one by timing the drainage of a capacitor through a resisitor. I don't know how I would input the analog signal from our sensor without adding another chip. Actually, I am sure there are multiple solutions for the Basic Stamp and may yet use it in the final project. But, for now I am looking elsewhere.

I am considering the Gumstix controler, because if I am going to spend a few hundred dollars to get WiFi anyway, I might as well get a more powerful processor.

Joe Dunfee
cadcoke4
Robot Addict
 
Posts: 111
Joined: October 8th, 2006, 12:14 am

Postby cadcoke4 » October 22nd, 2006, 7:49 pm

I have more information about barcodes.

The reason for the thin/wide method of encoding is that it is more likely to show if you are missing a digit. In all of the straight barcodes, this method is universally used, so it seems to be the best way.

The specfically barcode that seems to be a common choice in our type of application, is the Code-39. It uses a freely available true-type font, and has many freeware programs to create and print the codes.

However, it definitely takes mores space than my method proposed before. Code 39 can encode the alphabet, 10 digits, plus 7 special characters. So, two digits can encode 44x44 over 2,000 unique vaues. But, it takes 20 bars to represent that. Below is the Code-39 version of the digits "B1".

This type of code would need to be printed by the computer. But, we depend on the high reflectivity of a retro-reflector in our laser scanner. I think the solution is to print the code onto a transparency, and simply place it over the retroreflector surface.

While I like many aspects of Code-39, I have no idea if a lower-level robot controler, and our home-made laser scanner can deal with this density of information. The first striping method I proposed seems to be easier to handle from that point of view. Perhaps a compromise is to make our own code using the wide/thin but keep it down to only 8 or so stripes.

Perhaps experiments should be done before any commitment to one code or the other.

Joe Dunfee
Attachments
Barcode Examples.gif
Example of the Code-39 Showing the alphanumeric "B1". Also, my home made code showing the decimal value 10.
Barcode Examples.gif (2.89 KiB) Viewed 11044 times
cadcoke4
Robot Addict
 
Posts: 111
Joined: October 8th, 2006, 12:14 am

Postby Rello » October 22nd, 2006, 10:30 pm

cadcoke3 wrote:In terms of processor, it is turning out to be a complex issue for me.

I think starting with the simple task of laser scanning should be enough as a V.1 ;-)))

cadcoke3 wrote:But the main reason for me avoiding the Basic Stamp is that it does not have any analog inputs

At least for the lasertarget, we don't need it. Using the Hamamatsu S6986 sensor as described here (http://www.philohome.com/sensors/lasersensor.htm) will return a true false signal. so this will be fine.

regarding the barcode, I am not sure if this is not already a step to far?
I received the laser and sensors today. I only did some basic testing with the diode.
the point is around 4mm wide. then I took some reflective tape but this was rather disappointing. I am not sure how sensitive the sensor will be, but i could only recognize a laser reflection when making the room completely dark.
as a second test i tried a bike/car reflector. it gives a clear reflection back to the laser. the disadvantage I encountered here was that it worked only when the reflector was hit below ~30 degrees. This would also be a little tricky then.

on the long run, printing the barcode on a reflector might work.
I can give a definitive answer regarding tape/reflector when i soldered the little board together...

give me some days ;-)
Rello
Robot Groupie
 
Posts: 63
Joined: October 8th, 2006, 7:14 am

Postby cadcoke4 » October 23rd, 2006, 1:26 am

I hadn't examined the sensor chip in detail. I just did and now realize that it is a digital output. I may have confused this circuit with one of the other ones I saw that had an adjustment in the software to set the upper and lower limits for the light. But, this S6986 sensor has a modulated output for a LED, and uses that to distinguish between ambient light and the reflected light.

However, I am concerned about a modulated output. The spec sheet says it is 500 hz. That sounds a bit low for reading barcode.

Joe Dunfee
cadcoke4
Robot Addict
 
Posts: 111
Joined: October 8th, 2006, 12:14 am

Jim Ubersetzig is here

Postby Jim Ubersetzig » October 23rd, 2006, 11:56 pm

Hi

I'm the man who wrote the technical paper on measuring a robot's position using a laser pointer and a Basic Stamp 2.

If you have any questions about that, please ask me.

My main accomplishment was simplifying the math, so it can be done without floating point arithmetic.

I want to use bar codes also, so I'm eagerly reading these posts !

Jim Ubersetzig
Jim Ubersetzig
 
Posts: 3
Joined: October 23rd, 2006, 11:39 pm
Location: Sun Valley, Cal

Postby cadcoke4 » October 24th, 2006, 8:06 am

First, welcome to Jim Ubersetzig.
I am not sure how sensitive the sensor will be, but i could only recognize a laser reflection when making the room completely dark. ...
as a second test i tried a bike/car reflector.


Do you know the actual color of the laser in nm? The older laser pointers used to be around 670nm, which is almost infrared. Newer cheap ones start at 650nm and go to 630nm. They are brighter to the eye, but less bright to our sensor.

You say the laser beam is 4mm wide when it hits the wall. I wonder if this will be our limiting factor. Can you adjust the focus on your pointer? Mine can. I think this concept depends on a farily small beam size so that we can clearly detect when it hits the stripes on the barcode.

Joe Dunfee
cadcoke4
Robot Addict
 
Posts: 111
Joined: October 8th, 2006, 12:14 am

Postby Rello » October 24th, 2006, 12:53 pm

hi,

it is a 650nm
http://www.steminc.com/laser/LAS_SMM8_650_5.asp

according to the specs of the sensor this will also work because it is still whithin 80% sensitivity.
http://www.junun.org/MarkIII/datasheets/S6809.pdf

as soon as i found a store to get the small parts, i can put it together...
Rello
Robot Groupie
 
Posts: 63
Joined: October 8th, 2006, 7:14 am

Postby Jim Ubersetzig » October 25th, 2006, 12:24 am

When I developed the original "Circular Navigation System for Robots" there was an issue similar to the one you are addressing.

I found an excellent product at Pep Boys (an auto parts store) :

A pack of 5 assorted self-adhesive thin-film retroreflectors.

Unlike most reflective materials, where the angle of incidence is equal to the angle of reflectance -- these retroreflectors always reflect the beam back to its source. The limitation with these red-colored items is that the beam has to be within + or - 45 degrees of straight on. This can be fixed by wrapping the thin-film retroreflector around a curved surface, like a plastic pipe.

Consider this possible solution to the bar-code problem: Use black plastic electrical tape. Cover the retroreflector with this black tape. Then use a sharp knife to cut slits in the tape, and peel these off to reveal the reflective surface underneath.

Jim Ubersetzig
Jim Ubersetzig
 
Posts: 3
Joined: October 23rd, 2006, 11:39 pm
Location: Sun Valley, Cal

Re: Jim Ubersetzig is here

Postby Rello » October 25th, 2006, 8:02 am

Jim Ubersetzig wrote:I'm the man who wrote the technical paper on measuring a robot's position using a laser pointer and a Basic Stamp 2.

nice to read;-)

would you have the code available? Then we could use this as a basis and don't need to start over again ;-)


Jim Ubersetzig wrote:I found an excellent product at Pep Boys (an auto parts store)
the one i used is a normal reflective tape from wallmart which is supposed to to the same. but I think due to quality reasons, this does not work.

did you use these red/white tapes that are used for marking e.g. trailers?
Rello
Robot Groupie
 
Posts: 63
Joined: October 8th, 2006, 7:14 am

Robot Navigation System

Postby Jim Ubersetzig » October 27th, 2006, 6:45 pm

The best reflectors for the indoor navigation system are part number V493KR

They are thin. The backing peels off to reveal glue, for sticking them onto things.

A package of 6 of these reflectors is available for $ 9 at

http://automotive.gillroys.com/Headligh ... 78155.html

They are manufactured by http://www.pmlights.com/products.cfm?cI ... 6&pId=2108

To find out how to use these reflectors with an eye-safe laser pointer -- to build the indoor robot navigation system that I designed and perfected in 1999, go read my technical paper at www.rssc.org/newsletter/index.html It's in the October 1999 issue of the newsletter.

Jim Ubersetzig

P.S. As you make progress, adapting my navigation system to the Roomba vacuum cleaner -- please keep me informed.

P.S.S. I'm also interested in using it to read bar codes --

P.S.S.S I'll help you when I can !
Jim Ubersetzig
 
Posts: 3
Joined: October 23rd, 2006, 11:39 pm
Location: Sun Valley, Cal

Postby cadcoke4 » October 29th, 2006, 4:14 am

Jim Ubersetzig,

I am looking at your schematic [I have a copy below], and see that the output is used to directly drive an interrupt to the microprocessor. I am wondering about how the sensitivity is set.

It has been a very long time since I've played with the stamp, but looking at your code, I suspect that you are using the command RCTIME to time how fast the 0.01 uf capacitor is discharging in parallel through both the 330 ohm resistor and the phototransistor. Am I right?

Do you know the frequency response that this arrangment is capable of?

Joe Dunfee
Attachments
Jim Ubersetzig's Scaner Sensor.gif
Jim Ubersetzig's Scaner Sensor.gif (15.08 KiB) Viewed 10847 times
cadcoke4
Robot Addict
 
Posts: 111
Joined: October 8th, 2006, 12:14 am

Postby Rello » November 2nd, 2006, 10:16 pm

Hi,

here go the first basics: I just took the soldering iron and played a little around.
I used this Hamamatsu S6986 and got it working using a normal LED.
it does not care at all about surrounding light. as soon as the "coded" light comes back, the output goes from true to false.

the only problem i had: the cathode of the sensor does not deliver enough power to drive the laser.

So I will try 2 things tomorrow:
- a normal light sensor where the laser can be powered separately
- a transistor that "switches" the higher current required for the laser.

but the quick test using the low glowing LED showed a quick response time of the sensor.


...
Rello
Robot Groupie
 
Posts: 63
Joined: October 8th, 2006, 7:14 am

Postby cadcoke4 » November 2nd, 2006, 11:51 pm

I just recieved a Roomba Discovery that I ordered on E-Bay (of course the seller misrepresented the condition of it, but it works). I wanted the discovery specifically so that I could examine the charging base, and virtual walls. I was surprised how complex they were, and that iRobot wasn't doing more with them to help navigation. But, perhaps they were designed with the possibility of doing more, but they haven't taken full advantage of them yet.

I am still waiting for parts for me to start working on the laser/detector circuit.

The laser sensor should be able to see the omnidirectional part of the virtual wall [VW] beacons. Even if it isn't an extremely narrow beam, it can sense the general direction. I wonder how well the sensor can see and detect the beams from the VW's and the docking station?

I guess I will find out soon!


Joe Dunfee
cadcoke4
Robot Addict
 
Posts: 111
Joined: October 8th, 2006, 12:14 am

Postby Rello » November 3rd, 2006, 8:51 am

hi,

the VW has this kind of 360 degree glass thing on top. this will not reflect any laser i guess.

the other problem you will have is, that you have 0 tolerance in hight because the laser needs to be exactly on the same hight as this glass thing.
this also means that you will have to put it really flat on the roomba which might then influence the roomba stock sensor.

perhaps i did not understand your idea correctly, but i think going with specific reflector stripes will give the laser more tolerance to operate.

>>>>
I am still waiting for parts for me to start working on the laser/detector circuit.
>>>>
do you plan to try a normal sensor, or also one of the "coded" ones?
Rello
Robot Groupie
 
Posts: 63
Joined: October 8th, 2006, 7:14 am

Next

Return to Robotic Hacking

Who is online

Users browsing this forum: chrisko, im1kissfan, magura, Metalworker, vic7767 and 389 guests