Indoor localization without gps?

Hi there,
I've seen this incredible roomba pac-man project (Roomba Pac-Man - YouTube), and wondered -
How can one use arduino and other components (preffered - cheap ones :wink: ) for tracking a device inside a building?

Note that i can paint the floor in any shapes/color/pattern.

Thanks!

What do you mean tracking inside a building? Square room with nothing in the way? Around corridors? In a small area (5mx5m) more? less?

If you can be a bit more specific then I can recommend some sensors and other ways of doing it.

Mowcius

Note that i can paint the floor in any shapes/color/pattern.

One classic solution for one version of this problem is to paint/tape a line on the floor which you can follow with simple photocells.

More details:

The room is aproximatly 10x10 meters,
There are obstacles in the way (static objects that don't move).

It's a project for school - I want to design a robot that help you find a book in the library, for example - the robot lead you to the category of your book (you just walk behind it).

I thought about the line-following concept, but - i have a problem since there's many routes. I thought about a line-following-robot that when reach to a split in the line, SOMEHOW knows where to turn to (and how..).

ANY ideas will be welcomed!

Thanks

The solution might be colour. If the lines are different colours you can have the robot follow one colour line. When it comes to a junction it can switch to which line to follow. It would have a data base of what colour route to follow and what switches to make.

SOMEHOW knows where to turn to

Simple barcodes to the side of the main line?

Thought about that (great idea), but- what will read this barcode? (i need a barcode scanner connected to the arduino?).

i need a barcode scanner connected to the arduino?

Not a cheap way to do it...

You could just have a coloured square on each side of the line and a colour sensor on each side to decide which colour to follow...

Mowcius

barcode scanner connected to the arduino?

No you don't need a scanner, the motion of the robot performs the scanning action, you just need a photo reflective sensor. The bar codes can be big if you like and you control the scanning speed. You can even define your own bar code.

As Mike said, you don't need a scanner.
I implemented exactly this (barcode reader and line follower) on a 1MHz 6800 with even less memory (256 bytes RAM, 2K bytes EPROM)than an Arduino nearly 30 years ago. ;D

Assuming it always starts from the same position, and you have the location of the specified destinations stored in memory, couldn't you just have it count the the crossing lines as it moves to determine where it needs to turn, and when it reaches it's destination. I drew a nice little sketch in paint but there is no easy way to attach it...

Think of it like a grid. If I want to reach the "history" section. At the second intersection turn left and go till the 3rd intersection.

If it needs to be more specific you could always put additional tick marks along the way. You are basically just counting the ticks. No need for bar codes.

If it needs to be more specific you could always put additional tick marks along the way. You are basically just counting the ticks. No need for bar codes.

The tick marks and grid lines ARE a bar code.

The tick marks and grid lines ARE a bar code.

Not exactly. A bar code is typically a series of parrallel lines of varying widths (1D barcode) . Therefore you would have to know the speed your vehicle is going to recognize the width of the line. Even if the widths are the same, you would still have to scan a series of them before the data can be extracted from a bar code.

What I am talking about is a grid. So go to A-10 which would mean go to the 1st row 10th column. This would translate into: at the first mark you are in the correct row (or you start in the first row if you set your start that way), so turn 90degrees and go 10 marks and you are at your destination.

Does that make sense?

nearly 30 years ago.

Well I can assure you that I didn't because I was not around nearly 30 years ago :smiley:

Mowcius

What if you buried or attached an array of RFID tags in the floor?

if you need a cheap barcode scanner look for a ps/2 cuecat from radioshack. they went out of business and theres alot of surplus. easy to use and shouldnt cost more than 10 dollars.

Wow, it's nice to hear so many ideas!
Here's a nice video about someone who actually made it to build a "maze solving robot" (the thing that is intresting here is that the robot "knows" how to recognize a junction and remmeber it) --> Pololu 3pi Line Maze Solving Robot - YouTube

This has been my mission for several years now. More specifically, localization without without the lines.

A paper called "Where Am I" (sorry to the author which I can't remember) detail several different methods that will work depending on the application.

I have decided on an encoder method to tell me where I am based on where I have been (called dead reckoning) It's not perfect, but it's a start.

There is also time-of-flight methods that I was considering playing around with, but these get pretty pricey. You need 3 (or more) beacons, and the robot determines where in space it is based on the distance to each beacon.

Just some other methods you might want to look into. Lines with barcodes/tags are nice, but not aesthetically pleasing. I've always shot for something that will be completely stand-alone.

What if... and mind you I am just speaking off the cuff here... You had an IR receptor on your bot that looked at the ceiling. Then you had a set of IR lasers that were passed through a laser line generator and shown at the ceiling. These lines could be scanned across the ceiling using mirrors one going across in the X direction and the other in the Y direction. information could be pulsed to the laser in turn at each orientation, then advanced to the next orientation and different information pulsed (i.e. a code for say the current angle). You could in theory set up a rudimentary means of triangulation based upon what information was flashed at the ceiling directly above your roving robot. In this way, the robot could glean an X,Y fix in the room, by simply reading the information from above.

Am I nuts?

lasers that were passed through a laser line generator and shown at the ceiling. These lines could be scanned across the ceiling using mirrors one going across in the X direction and the other in the Y direction. information could be pulsed to the laser in turn at each orientation, then advanced to the next orientation and different information pulsed (i.e. a code for say the current angle). You could in theory set up a rudimentary means of triangulation based upon what information was flashed at the ceiling directly above your roving robot. In this way, the robot could glean an X,Y fix in the room, by simply reading the information from above.

Am I nuts?

Maybe, isn't everyone a little?

Sounds interesting although whether it would work or not is a different story, if it is in a library as mentioned, maybe the bookshelves or people would get in the way of the robot's view of the ceiling.

Mowcius