User:D.rodriguez
- Project Name: Multimodal evolutive algorithm for self localization using vision and laser
- Author: Darío Rodríguez de Diego (drd [dot] sqki [at] gmail [dot] com) and Jose María Cañas Plaza (jmplaza [at] gsyc [dot] es)
- Academic Year: 2008-2010
- Degree: undergrad
- Jde Version: jde-4.3
- SVN Repository: source code
- Tags: navigation, VFF, deliberative, hybrid, localization, laser, camera, genetic algorithm.
- Technology: c, jde suite, openGL, GTK.
- State: Finished
- Documentation:
Master thesis: PDF Presentation: PDF
Autolocalization for mobile robots
In this project, who is part of GuideRobot project, we develop many algorithms to get a behavior that allows the robot to find his position in the real world by himself.
We will use the laser measures and the pictures taken by a camera for get information of the real world.
Experiments and progress
2010.06.21: Testing genetic improved algorithm with new omnilaser and noisy odometry
This tests were made with the genetic improved algorithm used perviously but with new omnilaser implementation.
Like in the test of genetic algorithm you need to know some information to understand the pictures:
- The green particles are the winner race.
- The blue particles are plausible races.
- The red particles are like blue particles, but with a very similar probability to green particles.
- The orange lines are the path followed by the real robot.
- The black lines are the path made by the green particles (winner race) each time.
Note: The speed of the videos is 30x
The first test is a clockwise turn
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 26820.56 mm | Max theta error = 90º |
| Min xy error = 4.47 mm | Min theta error = 0º |
| Average xy error = 344.58 mm | Average theta error = 3.83º |
In the second test the robot made a counter clockwise turn
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 26820.56 mm | Max theta error = 179º |
| Min xy error = 0.00 mm | Min theta error = 0º |
| Average xy error = 1238.93 mm | Average theta error = 12.21º |
In the third test starts in the left corridor and goes to the bottom wall.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 20374.89 mm | Max theta error = 180º |
| Min xy error = 17.72 mm | Min theta error = 0º |
| Average xy error = 1514.84 mm | Average theta error = 7.28º |
The next test starts in the right corridor and the robot goes to the corridor where is the blue trash.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 19875.31 mm | Max theta error = 179º |
| Min xy error = 4.12 mm | Min theta error = 0º |
| Average xy error = 6440.56 mm | Average theta error = 25.09º |
In this test the robots starts in the surrounded by white walls.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 14973.96 mm | Max theta error = 180º |
| Min xy error = 31.01 mm | Min theta error = 0º |
| Average xy error = 1870.81 mm | Average theta error = 2.45º |
In the next test the robot was kidnapped in the middle of the right corridor and it must fix its position again.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 26820.56 mm | Max theta error = 89º |
| Min xy error = 14.00 mm | Min theta error = 0º |
| Average xy error = 1791.78 mm | Average theta error = 1.24º |
In the last test the robot must avoid another one which is in the middle of the right corridor
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 26820.56 mm | Max theta error = 90º |
| Min xy error = 6.00 mm | Min theta error = 0º |
| Average xy error = 524.05 mm | Average theta error = 4.48º |
2010.06.16: Testing new distance function with omnilaser some places
With the new omnilaser we have to test the distance function in some problematic places to see how it works.
| Map in front of the trash | Plot in front of the trash |
|
|
| Map in a corner seeing an extinguisher | Plot in a corner seeing an extinguisher |
|
|
| Map in the middle of the right corridor | Plot in the middle of the right corridor |
|
|
| Map in front of a white wall | Plot in front of a white wall |
|
|
2010.06.11: Implementation of a memory for the real laser and the omnilaser function
Now we decided to implement a memory with the measures of the real laser to keep in all data from front and back of the robot. With this memory we try to improve the localization of the robot.
In this first picture you can see an example of the memory with the first laser observation.
In the next video you can see how this memory works.
Now we have a memory which has the obstacles around the robot,but we need a function to calculate the laser measures of 360 degrees. We implement a omnilaser function for this task.
In the picture below you can see in red the omnilaser function, you can see a semicircle in the back of the robot it happens because the memory only has points in front of the robot.
In the other hand we have to implement an omnilaser function for the theoretical laser, you can see an example in the next picture.
Now we test the new probability function with the omnilaser function, in the first test we change the angle of the robot in a static location.
In the second test we change the location with the same angle.
2010.05.27: Testing genetic algorithm with new improved explorers and noisy odometry
This test were made with the genetic algorithm and with the new explorers explained in the last section. With this merge we get the localization of the robot faster.
Like in the test of genetic algorithm you need to know some information to understand the pictures:
- The green particles are the winner race.
- The blue particles are plausible races.
- The red particles are like blue particles, but with a very similar probability to green particles.
- The orange lines are the path followed by the real robot.
- The black lines are the path made by the green particles (winner race) each time.
Note: All videos are in real time
The first test is a clockwise turn
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 26820.56 mm | Max theta error = 89º |
| Min xy error = 8.60 mm | Min theta error = 0º |
| Average xy error = 338.75 mm | Average theta error = 2.11º |
The second test was a conuter-clockwise turn around the world
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 26820.56 mm | Max theta error = 90º |
| Min xy error = 6.00 mm | Min theta error = 0º |
| Average xy error = 328.43 mm | Average theta error = 2.60º |
In the third test starts in the left corridor and goes to the bottom wall.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 21358.18 mm | Max theta error = 89º |
| Min xy error = 9.00 mm | Min theta error = 0º |
| Average xy error = 1374 mm | Average theta error = 1.50º |
The next test starts in the right corridor and the robot goes to the corridor where is the blue trash.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 19729.46 mm | Max theta error = 91º |
| Min xy error = 6.40 mm | Min theta error = 0º |
| Average xy error = 6037.79 mm | Average theta error = 11.47º |
In this test the robots starts in the surrounded by white walls.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 14816.78 mm | Max theta error = 32º |
| Min xy error = 22.67 mm | Min theta error = 0º |
| Average xy error = 881.74 mm | Average theta error = 9.95º |
In the next test the robot was kidnapped in the middle of the right corridor and it must fix its position again.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 26820.56 mm | Max theta error = 89º |
| Min xy error = 5.83 mm | Min theta error = 0º |
| Average xy error = 1541.12 mm | Average theta error = 1.27º |
In the last test the robot must avoid another one which is in the middle of the right corridor
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 26820.56 mm | Max theta error = 90º |
| Min xy error = 4.00 mm | Min theta error = 0º |
| Average xy error = 268.04 mm | Average theta error = 2.46º |
2010.04.16: Improving the explorers generation
At the first times the particles were scattered with a random function, like this picture
Now we put a group of explorers in some interesting places to get a better locations for the new races.
After this we do a local search in four steps to get more precision in the location of the best particle.
| Step 1 | Step 2 |
|
|
| Step 3 | Step 4 |
|
|
2010.04.09: Testing the genetic algorithm with noisy odometry (II)
Note: The speed of the videos is 30x
The next test starts with the robot located in the right corridor.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 20371.84 mm | Max theta error = 90º |
| Min xy error = 16.49 mm | Min theta error = 1º |
| Average xy error = 4220 mm | Average theta error = 8.22º |
In the second test the robot begins in the left corridor.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 24413.75 mm | Max theta error = 170º |
| Min xy error = 36.05 mm | Min theta error = 0º |
| Average xy error = 6049.92 mm | Average theta error = 41.64º |
In the third test the robot starts in a white corridor, making it more difficult to get a good location.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 14177.70 mm | Max theta error = 98º |
| Min xy error = 26.83 mm | Min theta error = 1º |
| Average xy error = 3100.08 mm | Average theta error = 45.47º |
The last test proof that the algorithm can recovered from a kidnap and it gets a good location.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 26820.56 mm | Max theta error = 90º |
| Min xy error = 5.09 mm | Min theta error = 0º |
| Average xy error = 3222.64 mm | Average theta error = 16.21º |
Now we put another robot in the middle of the corridor and the first robot must avoid the second robot.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 26820.56 mm | Max theta error = 90º |
| Min xy error = 5.00 mm | Min theta error = 0º |
| Average xy error = 1149.93 mm | Average theta error = 23.87º |
2010.04.08: Testing the genetic algorithm with noisy odometry (I)
The last tests were made with the probability cube and each one takes about 2 hours. As you have noticed this results aren't in real time so we need another algorithm more powerfull and we choose a genetic algorithm based on races and inherited properties for particles that represent the location of the robot.
These tests were made with the genetic algorithm. You need to know some information to understand the pictures:
- The green particles are the winner race.
- The blue particles are plausible races.
- The red particles are like blue particles, but with a very similar probability to green particles.
- The orange lines are the path followed by the real robot.
- The black lines are the path made by the green particles (winner race) each time.
In this first test the robot made a clockwise turn around the stage.
Note: The speed of the videos is 30x
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 26820.56 mm | Max theta error = 180º |
| Min xy error = 0.23 mm | Min theta error = 3º |
| Average xy error = 427.273 mm | Average theta error = 19.72º |
In the second test the robot made a counter-clockwise turn around the stage.
| Overview | Full video |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 26820.56 mm | Max theta error = 92º |
| Min xy error = 9.84 mm | Min theta error = 0º |
| Average xy error = 1433.13 mm | Average theta error = 20.02º |
2010.03.12: Testing the functions in movement with noisy odometry (III)
The next test try to prove what happens when the robot is kidnapped, you can see the result in the next video.
Here are the first and the last step of this test also there are two graph which shows the location and orientation error for each step.
| Initial step | Final step |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 19675 mm | Max theta error = 100º |
| Min xy error = 225 mm | Min theta error = 0º |
In the next test the robot show another one in the middle of the corridor as you can see in this gazebo screenshot.
You can see the full path in the video below.
Here are the first and the last step of this test also there are two graph which shows the location and orientation error for each step.
| Initial step | Final step |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 21236 mm | Max theta error = 90º |
| Min xy error = 179 mm | Min theta error = 0º |
2010.03.09: Testing the functions in movement with noisy odometry (II)
In the next test the robots starts in the middle of the right corridor and it goes straight to the extinguisher, you can see this test in the video below.
Here are the first and the last step of this test also there are two graph which shows the location and orientation error for each step.
| Initial step | Final step |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 19503 mm | Max theta error = 179º |
| Min xy error = 171 mm | Min theta error = 0º |
This test is in the left corridor and the robot goes straight to the small corridor in the bottom of the stage, you can see all the steps in the next video.
Here are the first and the last step of this test also there are two graph which shows the location and orientation error for each step.
| Initial step | Final step |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 30102 mm | Max theta error = 270º |
| Min xy error = 11 mm | Min theta error = 0º |
The next test starts with the robot the corridor on the bottom of the stage, the robot can't see any colors. The next video show you the steps of this test.
Here are the first and the last step of this test also there are two graph which shows the location and orientation error for each step.
| Initial step | Final step |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 16998 mm | Max theta error = 90º |
| Min xy error = 89 mm | Min theta error = 0º |
2010.03.08: Testing the functions in movement with noisy odometry (I)
Now we test the function with noisy odometry and these were the results.
The first test is a clockwise turn around the stage and this is the video with the steps.
Here are the first and the last step of this test also there are two graph which shows the location and orientation error for each step.
| Initial step | Final step |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 19115 mm | Max theta error = 89º |
| Min xy error = 276 mm | Min theta error = 0º |
The second test is a counter-clockwise turn around the stage and here is the video.
Here are the first and the last step of this test also there are two graph which shows the location and orientation error for each step.
| Initial step | Final step |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 24950 mm | Max theta error = 257º |
| Min xy error = 11 mm | Min theta error = 0º |
We detect a big problem in the clockwise turn around in the bottom corridor because the estimated position with a big drift and only after few steps, the robot estimates a good position, so we try to do the steps more little and then only in one step the robot can reach the correct estimation.
2010.02.11: Testing the functions in movement (II)
This test start with the robot in the left corridor and moving down as you can see in the video.
Here are the first and the last step of this test also there are two graph which shows the location and orientation error for each step.
| Initial step | Final step |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 28770 mm | Max theta error = 180º |
| Min xy error = 34 mm | Min theta error = 0º |
In the next test the robot starts in the middle of the right corridor and it goes up, you can see it in this video.
Here are the first and the last step of this test also there are two graph which shows the location and orientation error for each step.
| Initial step | Final step |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 23720 mm | Max theta error = 90º |
| Min xy error = 104 mm | Min theta error = 0º |
The last test shows the robot starting in a white wall location and moving to get a better estimation.
Here are the first and the last step of this test also there are two graph which shows the location and orientation error for each step.
| Initial step | Final step |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 24636 mm | Max theta error = 90º |
| Min xy error = 44 mm | Min theta error = 0º |
2010.02.10: Testing the functions in movement (I)
Now we know which is the best combination of functions for some situation so we have develop this function to set a probability for each particle.
if(!are_color_real_picture)
{
if(!are_color_virtual_picture)
{
prob= manhattan(laser_real,laser_teorico)*correlation_coefficients(vision_real,vision_teorica);
}
else
{
prob = 0;
}
}
else
{
if(are_color_virtual_picture)
{
prob = manhattan(laser_real,laser_teorico)*objects_without_tail(vision_real,vision_teorica);
}
else
{
prob = 0;
}
}
And the second step was test this function with the probability cube moving the robot around the departmental to verify that this function runs well.
In the pictures and videos below the orange robot means the real location of the robot and the black robot represent the location estimated with the function and the probability cube.
The first test was a turn clockwise to the departmental which you can see in the next video:
Here are the first and the last step of the turn an as you can see the functions localized the robot well also there are two graph which shows the location and orientation error for each step.
| Initial step | Final step |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 423 mm | Max theta error = 0º |
| Min xy error = 79 mm | Min theta error = 0º |
The next test was a turn counter-clockwise which is showed in this video.
In the pictures below you can see the initial and final step of the turn and two graphs with location and orientation error for each step.
| Initial step | Final step |
|
|
| XY error for each step(mm) | Theta error for each step(degrees) |
|
|
| Max xy error = 433 mm | Max theta error = 0º |
| Min xy error = 66 mm | Min theta error = 0º |
2009.11.20: Testing distance functions in problematic places
Now we have to test the joined distance functions in some places that are difficult, because we want see which function is better in this situations.
The first place is a small corridor, and the robot is looking at a white wall, and these are the results:
| Manhattan (laser) + Manhattan without blanks (vision) | Manhattan (laser) + Correlation coefficients (vision) |
|
|
| Manhattan (laser) + Objects with tail (vision) | Manhattan (laser) + Objects without tail (vision) |
|
|
| Manhattan (laser) --> |
|
The functions Objects with tail and Manhattan for laser are very similar because in the Object with tail function when there aren't objects in the real image this functions returns 1 and the algorithm only use the laser function values.
The second place is a corner, and the robot still looking at a white wall:
| Manhattan (laser) + Manhattan without blanks (vision) | Manhattan (laser) + Correlation coefficients (vision) |
|
|
| Manhattan (laser) + Objects with tail (vision) | Manhattan (laser) + Objects without tail (vision) |
|
|
| Manhattan (laser) --> |
|
The third place is the large corridor with the robot looking at a white part of the wall
| Manhattan (laser) + Manhattan without blanks (vision) | Manhattan (laser) + Correlation coefficients (vision) |
|
|
| Manhattan (laser) + Objects with tail (vision) | Manhattan (laser) + Objects without tail (vision) |
|
|
| Manhattan (laser) --> |
|
So, with this result we can discard these combinations:
Manhattan (laser) + Manhattan without blanks (vision) Manhattan (laser) + Objects with tail (vision)
And we must test the best functions with the robot moving.
2009.11.06: Joining distance functions
At this moment we have two probabilities, one by distance functions with laser and other by distance functions with vision. Now we need join these observation models to get a combined probability.
To join the observation models we have tested three methods: multiplying, with the average, and conditional. And we have tested these methods in three interesting places.
- In from of the trash:
| Multiplayin | Average | Conditional | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
| Multiplayin | Average | Conditional | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
- In a corner:
| Multiplayin | Average | Conditional | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
| Multiplayin | Average | Conditional | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
- In the corridor:
| Multiplayin | Average | Conditional | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
| Multiplayin | Average | Conditional | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
With this result we can say that we will use the multiply to join both distance functions because it is the method which brings more precise results.
2009.11.06: Regulating the correlation coefficients' function
Now we going to regulate the correlation coefficients' function to get a function with a similar plot than manhattan laser's plot.
We start with this correlation coefficients function:
We use the same condition than laser function, so we will apply fourth root to the probabilities higher than 0.15, and we get this plot:
We get a wrong measure about the 360 degree but it is very small so we can say that plot is better because in the correct orientation, we increase the probability.
2009.11.03: Regulating the laser's distance function
We have a problem with the manhattan function for laser, if you take a look at the plot of the manhattan function you will see that near 90 degree the probability increase in a very strong way. We want a huge probability near the correct orientation of the robot, so we use differents ways to get it.
Fist we use the square root of the function result for each degree, and get this result:
Wrong!, because we don't want increase the lowest probabilities.
To fix it we apply the square root only for probabilities higher than 0.15 and we get this plot:
It is better but we want more probability around the correct orientation, so we will apply the fourth root for probabilities higher than 0.15:
This is better than square root so we will use it for calculate the probabilities from now.
2009.11.03: Testing visual resolution (III)
We have test the distance functions with 40 pixels and range of vision of 30 meters and these are the results:
| 320 pixels | 40 pixels | |
| Manhattan without blanks |
|
|
| Correlation coefficients |
|
|
| Objects with tail |
|
|
| Objects without tail |
|
|
| Average time | 11,23 | 1,45 |
We will use 40 pixels and 30 meters for visual functions because we get the best time with a good resolution
2009.11.03: Testing visual resolution (II)
| Manhattan without blanks | Correlation coefficients | Objects with tail | Objects without tail | |
| 30 meters |
|
|
|
|
| 15 meters |
|
|
|
|
| 3 meters |
|
|
|
|
With this comparative you can see which are the problems when the range of vision decreases, we lose some information and it could affect the probability in the distance functions. So we must use a high range of vision to get more information.
2009.10.31: Testing visual resolution (I)
With the visual resolution test we want to see how is the behavior of the distance functions for images when the number of theoretical pixels and the range of vision decreases, and how many time takes an iteration.
The test was made in three places(trash,corner and corridor) with the best distance functions: Manhattan without blanks, Correlation coefficients, objects with tail and objects without tail, for the number of pixel we selected three posibilities: 320, 160, 80 and for the range of vision we selected 30m, 15m and 3m.
These were the results:
In front of the trash:
- 30 meters:
| 320 pixels | 160 pixels | 80 pixels | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
- 15 meters:
| 320 pixels | 160 pixels | 80 pixels | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
- 3 meters:
| 320 pixels | 160 pixels | 80 pixels | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
In a corner:
- 30 meters:
| 320 pixels | 160 pixels | 80 pixels | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
- 15 meters:
| 320 pixels | 160 pixels | 80 pixels | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
- 3 meters:
| 320 pixels | 160 pixels | 80 pixels | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
In a corridor
- 30 meters:
| 320 pixels | 160 pixels | 80 pixels | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
- 15 meters:
| 320 pixels | 160 pixels | 80 pixels | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
- 3 meters:
| 320 pixels | 160 pixels | 80 pixels | |
| Manhattan without blanks |
|
|
|
| Correlation coefficients |
|
|
|
| Objects with tail |
|
|
|
| Objects without tail |
|
|
|
Average time table:
In this table are the average of time for each functions in the three places, all times are in seconds.
| [number of pixels/range of vision] | 320/30 | 160/30 | 80/30 | 320/15 | 160/15 | 80/15 | 320/3 | 160/3 | 80/3 |
| Manhattan without blanks | 11,03 | 5,98 | 3,11 | 10,47 | 5,34 | 2,65 | 7,5 | 3,62 | 1,83 |
| Correlation coefficients | 11,54 | 6,17 | 3,24 | 11,08 | 5,67 | 2,86 | 7,87 | 4 | 2,12 |
| Objects with tail | 11,16 | 5,97 | 2,93 | 10,7 | 5,36 | 2,67 | 7,6 | 3,74 | 1,88 |
| Objects without tail | 11,21 | 6,12 | 3,08 | 10,64 | 5,39 | 2,69 | 7,57 | 3,86 | 1,9 |
Conclusion:
With this information we can see that we can use a lower number of pixels and the functions are not greatly affected. About range of vision, we can not use a lower range because we lose much information so we will use a medium range.
Seeing average times we are very happy because if we reduce the resolution(number of pixel and range of vision) we get a better time.
2009.10.15: Testing laser resolution
Now we are testing manhattan's function for laser to see how is affected by the laser resolution.
These are the different tests:
In front of the trash:
| 180 rays | 90 rays | 45 rays | |
| In front of the trash |
|
|
|
| In a corner |
|
|
|
| In a corridor |
|
|
|
| Average times | 10,8 seg | 5,5 seg | 2,8 seg |
We can see that all the plots are very similars and we can say that the resolution of the laser doesn't affect the function results.So we can improve the algorithm using lower resolution and we getting more speed.
2009.10.15: Another form to calculate correlation coefficients
In the first implementation of the correlation coefficients' function, we trunk the result when it was minor than zero, so we rewrite the function and normalized it in 0-1 range using the square of the correlation coefficients.
This is the result for laser function:
In front of the trash:
| Correlation Coefficients | Square of correlation coefficients |
|
|
|
|
In the corner:
| Correlation Coefficients | Square of correlation coefficients |
|
|
|
|
In the middle of the corridor:
| Correlation Coefficients | Square of correlation coefficients |
|
|
|
|
This is the result for vision function:
In front of the trash:
| Correlation Coefficients | Square of correlation coefficients |
|
|
|
|
In the corner:
| Correlation Coefficients | Square of correlation coefficients |
|
|
|
|
In the middle of the corridor:
| Correlation Coefficients | Square of correlation coefficients |
|
|
|
|
For the vision function we calculate the coefficients of determination of R , G and B channels separately and in the first implementation we multiply the coefficients like this way Rcoef*Gcoef*Bcoef. We use another way to link the colors channels, calculating the mean like this way (Rcoef+Gcoef+Bcoef)/3.
And this is the comparison with the results:
In front of the trash:
| Square of correlation coefficients multiply | Square of correlation coefficients mean |
|
|
|
|
In the corner:
| Square of correlation coefficients multiply | Square of correlation coefficients mean |
|
|
|
|
In the middle of the corridor:
| Square of correlation coefficients multiply | Square of correlation coefficients mean |
|
|
|
|
Conclusion:
For laser function from now we will use the square of correlation coefficients, and for vision functions we will use the multiply of the square of correlation coefficients.
2009.10.13: Testing distance functions (II)
We continue with the test, now the robot is located in a corner looking at the extinguisher and the door.
These are the results for the laser functions view when the angle is changing:
| Manhattan |
|
| Mahalanobis |
|
| Correlation Coefficients |
|
These are the result for the laser functions view when the location is changing:
| Manhattan |
|
| Mahalanobis |
|
| Correlation Coefficients |
|
These are the results for the image functions view when the angle is changing:
| Manhattan |
|
| Manhattan without blanks |
|
| Correlation Coefficients |
|
| Mahalanobis |
|
| Euclides |
|
| Manhattan smooth |
|
| Manhattan smooth without blanks |
|
| Objects with tail |
|
| Objects without tail |
|
These are the results for the image functions view view when the location is changing:
| Manhattan |
|
| Manhattan without blanks |
|
| Correlation Coefficients |
|
| Mahalanobis |
|
| Euclides |
|
| Manhattan smooth |
|
| Manhattan smooth without blanks |
|
| Objects with tail |
|
| Objects without tail |
|
The last location we have tested is when the robot is in the middle of the corridor.
These are the results for the laser functions view when the angle is changing:
| Manhattan |
|
| Mahalanobis |
|
| Correlation Coefficients |
|
These are the result for the laser functions view when the location is changing:
| Manhattan |
|
| Mahalanobis |
|
| Correlation Coefficients |
|
These are the results for the image functions view when the angle is changing:
| Manhattan |
|
| Manhattan without blanks |
|
| Correlation Coefficients |
|
| Mahalanobis |
|
| Euclides |
|
| Manhattan smooth |
|
| Manhattan smooth without blanks |
|
| Objects with tail |
|
| Objects without tail |
|
These are the results for the image functions view view when the location is changing:
| Manhattan |
|
| Manhattan without blanks |
|
| Correlation Coefficients |
|
| Mahalanobis |
|
| Euclides |
|
| Manhattan smooth |
|
| Manhattan smooth without blanks |
|
| Objects with tail |
|
| Objects without tail |
|
Conlcusion:
We can discard smooth's functions for image because these functions are very similar to functions without smooth, so we can use the functions without smooth which are faster.
Now we can see the best function for laser which is manhattan's function.
About the image function, we can discard euclides' and mahalanobis' function because the probability in the map is very high in all the cells. Also we can discard manhattan's simple function because when the robot is located in the corner or in the corridor, probability is very high in all the map.
We must continue with the tests with these functions with some modifications them.
2009.10.12: Testing distance functions (I)
The problem that we are solving now is find the best distance function of the laser and image. The distance function must calculate how similar are real laser and virtual laser and give us a probability, this function must do the same for the real image and virtual image.
We have done this test with some functions of the laser and images in some locations around the map and here are the results:
The first location is in front of the trash.
These are the results for the laser functions view when the angle is changing:
| Manhattan |
|
| Mahalanobis |
|
| Correlation Coefficients |
|
These are the result for the laser functions view when the location is changing:
| Manhattan |
|
| Mahalanobis |
|
| Correlation Coefficients |
|
These are the results for the image functions view when the angle is changing:
| Manhattan |
|
| Manhattan without blanks |
|
| Correlation Coefficients |
|
| Mahalanobis |
|
| Euclides |
|
| Manhattan smooth |
|
| Manhattan smooth without blanks |
|
| Objects with tail |
|
| Objects without tail |
|
These are the results for the image functions view view when the location is changing:
| Manhattan |
|
| Manhattan without blanks |
|
| Correlation Coefficients |
|
| Mahalanobis |
|
| Euclides |
|
| Manhattan smooth |
|
| Manhattan smooth without blanks |
|
| Objects with tail |
|
| Objects without tail |
|
2009.10.04: Visual observation method
We have developed another method to get information from the real world, we will use a camera to get pictures from the real world. In the picture below you can see the GUI system that we use to test this method.
The number one is the picture taken from the camera, in this example we was using Gazebo simulator and this simulator brings us a picture like a real camera.
The number two is the picture after it was filtered highlighting the colors that we are interesting for us. Actually we have three important colors: brown (doors), red (extinguisher) and blue (trash).
The number three is the filtered picture squashed, to do it we choose the color that appear more times in the filtered picture for each columns and it puts it on a vector, this vector is the real image simplified. This vector will be used to calculate the distance functions.
And the number four is the virtual picture gotten from the virtual map, we have used the same process that we use for the virtual laser, but we select the color of the cells.
The next picture shows the robot located in the virtual map and shows the angle vision (black lines) and the cells which will are in the virtual picture (black points), this picture shows the place which was taken the first picture shown on GUI.
2009.09.03: Implementation probability cube
We have developed the first structure, probability cube, which you can see in the next picture.
With this cube we can prove which distance function is better, watching the cube values for few positions in the map.
2009.08.24: Laser observation method
We have developed a virtual laser that uses the map to calculate the measures of the laser, the next picture shows both lasers compared in an empty world, the physical laser is drawn in blue color and the virtual laser is drawn in pink color. Also you can see how good is the approximation between real and virtual laser in a label that shows the percentage of similarity.
In this video you can see this two lasers in action when the robot is moving.
2009.08.14: First GUI implementation, moving the robot
In the GUI there is a group of button to control the robot movements(left,right,forward,back,stop and change direction) and two checkboxes for show/hide the laser and the robot, also there is an openGL graphic to show the map and the robot(the green point) and the laser(blue points).
The next video is an example to use the GUI.
Bibliography
Comming soon
GuideRobot
At this time we are working on GuideRobot project to get a robot that guides the people in some areas like museums, buildings, laboratories and more.
Here there are two videos of the project:
| |
|
| Pioneer wanders to avoid obstacles | FollowPerson behavior |
You can see more information of this project in this web: GuideRobot Project
Our work it's about robot navigation specifically local navigation that solve the problem of reach the objetive without crashes in real world.
The navigation algorithms are divided in three part that match to three specifics problems:
VFF
This model is to create a Virtual Force Field with forces that represent: the objets, the destiny and a force that is the resultant of both multiplied with two modulation's parameters.
In our implementation we defined the atraction force (this force represent the destiny) with constant module, and the repulsive force (wich represent the object) with a variable module grow when the robot approaching an object. We get the resultant force solving this equation:
Fresult = a*Fatrac+b*Frepuls
In the equation, a and b are the modulation's parameters and we give their values ad-hoc to make a realistic force field.
We also have implement a security window to make this algorithm more secure and consist in calculate if there is a free zone to move and if exists we can move in the robot with maximum speed. To improve the movements, we use fuzzy logic to do it more fluid and we get a robot with a smooth movements.
This video shows this algorithm in progress:
Deliberative
In this type of navigation the robot walk over a line. This line is defined by two points of the way and the robot must be in this line by all the way, if the robot is out of the line it will returns to the line before move.
The next video is the deliberative algorithm running:
Hybrid
In the hybrid method we use the implementation of VFF and with destiny a point of the deliberative's way. With this we defined a virtual force field arround all the way and the robot moves by the way avoiding the objects.
In the hybrid navigation as in VFF, we also use fuzzy logic to get fluids movements in the robot.
In the video you can see a simulated pioneer robot running in a racing circuit called Cheste with the hybrid navigation algorithm: