One of the most fundamental problems in mobile robotics is to know the position of the robot. The question might seem simple, to get an answer is very difficult. There are two fundamentally different approaches to answer this question. The first approach uses dynamics to keep track of the robots position in respect to its starting position. Most often this technique uses wheel encoders to keep track of wheel movement. This is translated into a position of the robot. This is known as odometry. The second approach uses external references of which the location is known to calculate the position of the robot. Navigation based on stars is the oldest example of this technique, the GPS system is a recent example. As much as we come to rely on GPS nowadays, it is not very useful for our small indoor robots. Indoors the GPS signal is week and the error of a GPS position is in most cases bigger than the range of our robots.
I created a robot that uses the same principles as the GPS system is based on to localize itself. Instead of GPS satellites I use blinking LEDs (dLights from Dexter Industries) as beacons. The beacons are detected and identified using a standard NXT light sensor. Below you can see the robot in action. The robot is placed on a random location in a random direction in my room. It then has to find out where it is and then drive home.
The robot locates beacons by evaluating the variance in light level while scanning the horizon. Whenever a spot with large variation in light level is found, the robot stops to find out if this variation comes in a frequency that identifies one of the beacons. If so, the current heading of the robot is stored along with the identity of the beacon. If after a full scan three or more beacons are located then the robot has enough information to estimate its position. It does so by triangulation using a Snellius construction. Lejos software for the NXT has a class, lejos.robotics.localization.BeaconTriangle ,that implements all the difficult calculations. If more than tree beacons are located, the robot estimates its position by averaging the position estimated from all unique combinations three beacons. The result is an improved estimation.
That is really cool. Just curious, how accurate is it…are we talking millimeters here or a few centimeters?
I have not really paid attention to accuracy yet. But I can make a few remarks.
– the accuracy depends on the starting position. Things are more accurate when the angle between the beacons is large.
– there are two sources of errors. Inaccurate measurements lead to small errors. identification errors lead to huge errors.
– in this experiment there are additional errors in “driving home”.
Hi Aswin! I really like this project. Just a suggestion: perhaps when it has identified at least three beacons, it drives home without finishing the full 360° swing? That is, if it finds at least three beacons without turning around all the way, it goes straight home without turning the rest of the way around?
[…] first project this week was developed by Aswin, co-inventor of the dLight. The project allows NXT’s to “localize” indoors, just […]
[…] first project this week was developed by Aswin, co-inventor of the dLight. The project allows NXT’s to “localize” indoors, just […]