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.
Today I am proud to announce the winner of the dLight giveaway.
There were 30 participants. I want to thank them for their kind words about my blog. This positive feedback is really important to me and keeps me writing. I was also very pleased with the enthusiasm for the dLights in the reactions. Most people said the dLights were cool. I hope we’ll see some nice applications of the dLights in the future.
The winner of this contest was drawn by my son from a basket containing 30 small papers, each with the name of one of the participants. And the winner is Leon Overweel! Congratulations Leon!
Leon is a talented NXT builder and you might know him from his website World of Mindstorms. I am curious to see what creative uses he’ll come up with.
Today Dexter Industries launched their latest product, an all-color LED called the dLight. I was involved in the development of the dLights so I got them early. I can also give away one set of dLights to one of my readers. More on that later. Let’s take a look at the dLights firs in this video.
I mounted three dLights underneath Agilis, one under each leg pointing to the wheel. I programmed the dLights to give a color that corresponds to the wheel speed of the particular leg. I think the result looks cool.
If you look closely to the sensor ports in the video, you’ll notice that only one is in use. This is one of the great benefits of the dLights, you can daisy chain them. So one free port is all you need to give a robot multiple lights. One set contains four dLights plus the cables to chain them.
As said, I can give away one set of dLights. If you want this set you just have to reply to this message before the first of April.
You’ll find more info about the dLights on the website of Dexter Industries.
Currently I am developing a new sensor that will be on the market this summer. Although I do not want to give away too much details I would like to share some insight in the development process.
Few months ago I got this idea for a new sensor. Something unlike all the sensors that are available today. I think you’ll want it when you see it. I discussed this idea with John from Dexter Industries and we decided to develop the sensor together. As I had a pretty good idea of the functionality of this sensor we could start selecting parts right away. Once we got the part list together John started drawing a schematic for it. From this we ordered some prototype boards. John soldered all the parts on it. I’m still amazed how he did that. Man, these parts are small!
A prototype serves as a proof of concept and also to find any design errors. There are always design errors. In this case we forgot to wire the power line. As a result the prototype was dead. Luckily John managed to add the wiring for the power line and the sensor came to life. It immediately was clear to us that the sensor was what we expected it to be. I wrote a driver for it and started testing. How very nice! My 10 year old son liked it very much, he even built a test device for me.
There are some other small errors on the prototype that are being corrected at the moment. When these are fixed we can start thinking of a first production run. Once this is on its way I will show the sensor to you and organize another giveaway 🙂
I’m pretty sure you’ll like our sensor, so stay tuned.