Friday, January 23, 2009


In this project we have worked with the Monte Carlo Localization(MCL) algorithm. The project shows that the MCL is working well in simulation and with some limitations in a physical implementation.

A NXT robot car was build to work in a physical environment. This robot car uses 3 light sensors and 1 compass for the measurements which is essential for the localization. The compass is used to reduce the 3D localization problem(x, y, θ) to a 2D problem (x, y).

We have designed the environment where the car have to locate itself. The environment is a printed gray-scale image, which fits to the properties of the light sensors.

The MCL is implemented in a pc program with a GUI. This program communicate with the NXT through a bluetooth connection. So the car is only used to drive around on the map and measure values.

We have done some successful simulations and test with the implemented system at different states of the development. But we didn't reach all the goals we have hoped and also have some test where the MCL didn't work.

The first experiments was to analyze the sensor accuracy. This gave some of the specifications to the environments we designed and gave a function for each sensors conversions of a gray-level to measure value.

After this we did some experiments with the algorithm in a 1D experiment. The data was analyzed and it was possible to locate the robot car.

Then we moved on to the 2D problem. Where we started out with pure simulation to test the algorithm. Which works as expected, but in the physical test it gave some problems. The problems was coursed by magnetic interference in the lab and the car had difficulties to locate itself.

The problem with the magnetic interference was solved by moving to the location in the lab with the lowest interference.

2 maps was made for the 2D MCL where one of them, a radial gradient was easy to locate on, while the other a more random map was more difficult and in the physical test the last on fail because of ambiguous points.

During the project we worked on a behavior based architecture for the robot car. This should enable the car to stop at the border. But the implementation failed and an simpler implementation.

A goal of the project was to work with the lost/hijacked robot problem, which we never worked with for real. But we tried it with our implementation of MCL, but it never worked.

Another goal was to make the code reusable. This is partly fulfilled, because the project is divided into reusable classes. But the communication between the pc and robot car is build on a very simple protocol, which don't leave many options for extending or changing the functionality of the system.

We are satisfied with the results we have reached in the project even though we have failed to reach all our goals. In the start we was not even sure that MCL would work at all, so we was happy to see how well it actually worked. Another satisfying thing is that we gained some knowhow about a one of the best algorithm for localization, which we can use in our future work.
Anyway it possible to improve the project i several ways. We have made a list explaining some of the possibilities that we would recommend to include in work based on our project.

1 comment:

esmetaman said...

Did you evolve the projecdt?