This is one of the tough problems in robotics that really doesn’t have an easy solution for all the reasons stated by others. If someone creates something to do this for under $50, they will do well.
I think the solution is to use quadrature encoders, dead reckoning algorithm coupled with machine vision to periodically verify position and heading. Deadreckoning alone because of rounding errors, inconsistent wheels (wheels aren’t ever going to be identical) etc etc is not ever going to be 100%. It would be interesting to see if someone with an ultrasonic sensor could make this work. If the sensor is on a pan tilt setup, it might be able to roughly identify what room based on size. I know that Lidar sensors are used on other robots I have seen at a robotics school close to us, but those are pretty costly sensors.
What I have been working on is to use the junction between ceiling and wall with a webcam as my frame of reference for my robot which is fairly accurate. I can tell by the angle of the ceiling relative to me, roughly what my heading relative to the wall is. This is not as accurate, but good for roughly confirming one’s heading. I think coupled with dead reckoning, it will work fairly well. We will see. I will put a blog about my results when I have something to show.
1) make a fool proof but stupid robot, one that rides a track and stops at points along the track andif there is something blocking it’s path. The track must be very “strong”, wire a wire radiating low power RF or paint and barcodes on the floor and the robot must have a failsafe where it hunts for the track if lost. THis robot is about as “smart” as a subway train. or,…
2) Solve the “SLAM” problem. This is what the Google self driving car does. It uses many sensors, route planing and a Kalman and Particale filters. Basically gathers lots and lots of redundnet information and uses it to over constrain a solution. If you want to understand this there is a free on-line class (Or you can pay for access to an instructor and credits) The class is given by a guy who leads the Google self driving car. It is at the upper division or 1st year graduate level.
THe class will cover how to figure out where you are. How to plan a route. What to do if the route is blocked (try another.) and so on.
Obviously option #1 is easier by far but option#2 is better because it can go between any two random locations and is not constained to following a track.
I think the reality is, line following is pretty limited, and I think we want our robots to have a bit of flexibility. If the only thing I want my bot to do is go to the fridge get me a root beer and bring it to me, I would have to be exactly where the lines end/start. And then I think, for such a system, why a robot? I can make a brainless machine to do that, and we have been able to do that for over a hundred years. It solves nothing for me, sorry.
What we want on our robots (I think) is some smarts. The ability to make some decisions based on environment and task. It is a tall order for sure, but so worth it.
For my RoxIndoorPositioningSystem (RIPS), I am planing on using all methods, IR beacons, floor markings(QR codes), IR and UL distance sensors (maybe laser?), wheel encoders, compass, and eventually CV and a pre loaded map all used together to determine robots position and pathing. Between all inputs, some logic can decide what IR beacons received are bounces, etc…
I agree. That is pretty much what I wrote. There are two options, yours and the “brainless machine”. But for an office mail system a circulating cart is maybe good enough. The cart shows up at the door you take out your mail and press the “continue” button and off it goes to the next stop. I could build this “robot” using model railroad parts with no computer.
But is this better than a guy pushing a cart? It can’t read the lables so you have to get up and pull your own mail from the cart. It can’t reach in an get you outgoing mail so you have to place it in the cart. It can’t sort mail so every item has to go to the mail room for sorting. It is about as usfull as the luggage conveyor as the airport. I think this is a borderline case
Another possibility to think about might be the Robot Operating System (www.ros.org) which could be put onto a RasPi or could run on a separate box and then connect via WiFi (or wireless protocol of your choice). They have a navigation module which should give you what you are looking for.
<!–td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}–>a cool idea to use a robot for indoor navigation. Coool. I saw something similar in Ikea and airports indoor navigation . but with the robot is unusual and cool.