Eperdices PFC
From jderobot
- Project Name: Visual Self-Localization in the RoboCup based in 3D goals detection.
- Authors: Eduardo Perdices (eperdices [at] gsyc [dot] es) and Jose María Cañas Plaza (jmplaza [at] gsyc [dot] es)
- Academic Year: 2008-2009
- Degree: Grad
- Jde Version: jde-4.3
- SVN Repository: repository
- Tags: Nao robot, 3D, RoboCup, computer vision, location
- Technology: C, C++, JdeRobot, OpenGL, OpenCV, GTK
- State: Finished
- Source License: GPLv3
- Abstract:
In this project, we have developed several algorithms to locate a Nao robot in the RoboCup field. To autolocate his position, the only sensor that uses the robot is a camera. We have performed two types of algorithms, the first type, calculates the position of the robot using just one image from the camera, otherwise, the second type uses several images accumulated with probability. In these images we try to detect the goals of the field, since the goals are one of the most characteristic elements we are able to detect. To test our algorithms, we are going to use use two simulated environments to evaluate the robustness of our solution, Webots and Gazebo.
- Documentation:
Master Thesis: PDF Presentation: PDF
- Schemas:
Contents |
Localization
We have depeloped a JdeRobot schema to locate the Nao robot inside the field. To get this, first we detect lines and goals from the image and after that, we use four different algorithms to calculate the robot's position, 2 instantaneous algorithms (uses only one image) and 2 probabilistic algorithms (uses several images).
Detecting goals and lines
Detecting goals
![]() |
| |
|
|
|
|
Detecting lines
![]() |
| |
|
|
|
|
Instantaneous Localization
In these pictures, we can check the great precision of our two instantaneous algorithms, the fist image shows the torus algorithm and the second one shows the spheres algorithm. In both pictures, we draw a green arrow (the real position) and a blue arrow (the calculated position).
![]() |
| |
|
|
|
|
![]() |
| |
|
|
|
|
In this video, we can watch the behaviour of both algorithms in movement.
Probabilistic Localization
This pictures shows the probabilistic algorithms, the first one uses the observation model using angles and the second one uses the observation model using spheres. In both pictures, we draw again a green arrow (the real position) and a red arrow (the calculated position), and besides we draw points in grey scale where probability is high.
![]() |
| |
|
|
|
|
![]() |
| |
|
|
|
|
In the next video, we compare the probabilistic algorithms with the instantaneous algorithms. We draw a blue arrow (instantaneous), a red arrow (probabilistic) and their trails.
Driver Naobody
We have develop a JdeRobot driver to get images from Nao Robot or Webots through Naoqi.
Images
Driver naobody and opencvdemo:
![]() |
| |
|
|
|
|
Opencvdemo
We have depeloved a jderobot schema to test opencv library, implementing some functions using opencv functions.
Canny Filter
![]() |
| |
|
|
|
|
Optical Flow
![]() |
| |
|
|
|
|
Convolution Matrix
![]() |
| |
|
|
|
|
Hough Transform
Opencv detects lines using hough transform, there are 3 types of detection, we have used two of them, the first one is standard hough, it detects lines propagating it in infinite. The second one is probabilistic hough, it calculates lines from one point to another inside the image.
![]() |
| |
|
|
|
|
![]() |
| |
|
|
|
|
HeadTracking
We have developed an algorithm to track our position using leds and a wimote. The wimote detects where are two leds and give us these information, since we know the distance between the leds, we can calculate our position using trigonometry.
Glasses
We have made a glasses using leds to hold the leds easier, you can see our glasses in the next image:
![]() |
| |
|
|
|
|
Videos
Related links
Johnny Chung Lee WiiMote projects














