Gcortizo TFM

From jderobot
Jump to: navigation, search
  • Project Name: Without name
  • Authors: Guillermo Cortizo Sucre (g [dot] cortizo [at] alumnos [dot] urjc [dot] es) and

Jose María Cañas Plaza (jmplaza [at] gsyc [dot] es)

  • Academic Year: 2009 - 2010
  • Degree: Master
  • Jde Version: jde 4.3.0
  • Tags: Vision, gazebo, localization
  • Technology: c, jde suite
  • State: Learning


Contents

Furaco interface

The human eye allow to get bidimensional images (monocular vision). if you try to compare the two obtained images, between them there are a diference of position. The brain can make a relation through this diference getting deep information.

Furaco is a schema that get images from two cameras. This cameras can be moved for see better the image. Then the next video show how can it do this

This schema, represent three parts of gazebo, one of them is the two cameras which represent the robot reality (simulated by gazebo). This cameras are managed by a gestor which is on the left hand side of the screen. And the other part of the interface allows you to manage the robot base, that is used to teleoperate it.

Furaco: Step by Step

21/5/2011 : Project to JDE 5.0

The new version of JDE, using for furaco project. Now the project name for JDE 5 is named visualBot.

New test world.

Since 17/3/2011 to 31/3/2011: Health function, criteria "complete segment"

Graphic: Health - Distance

Best Segment Better Segments All Segments

Graphic: Health - Length

Best Segment Better Segments All Segments

Graphic: Health - Length - Distance

Best Segment Better Segments All Segments

Since 10/3/2011 to 17/3/2011: Plot function and abduction method

distance health plot

lenght health plot

Abducction Method

Since 3/3/2011 to 10/3/2011: Restructuring health function

The health function was composed of four criteria that derived a fairly segment quality, after code refactorization I decided to modify health function into three criteria derived from the above I have a consistent and robust health.

First criterion. Accurate projection

From our hypothesis we obtain 3D projections for the cameras of our robot, if these projections are within our camera plane, we procees to check the other criteria.

Second criterion. Overlap.

The segment that we get as a hypothesis from one of the cameras, overlap image segmented by the canny algorithm. So that we get a health situation segment in each of the planes (camera A and camera B).

Third criterion. Completeness

We know where is our hypothesis segmente on the "space", but do not know if its length is correct, so we check as meet points with our list of segments obtained by Hough.


Since 24/2/2011 to 3/3/2011: Restructuring health function

Principal tags of the helth function.


1.- 3D segment project into 2D image correctly

I get a image segment from a camera, this shoot will be used by progeo to transformate into 3D segments. Later the 3D segment will be backproject to the second camera, where I'll can see if the segment project into the camera "B" image frame.

2.- Segment projection overlap Hough segmentation

The segment 3D was projected into the camera in the next format Ax + By + C = 0. I´ll try to compare this linea with camera "B" image segmetated, if it will be recognized overlaping the segmentated image.

3.- Segment Neighborhood.

4.- Representative pixels.

Since 10/2/2011 to 24/2/2011: Working again with JDE and gazebo

I was studying the project, because I was inactie durin half a year. Now I'm trying to migrate de system to JDE 5.0 and solve some bugs referring to the proyect.

Migrating to JDE 5.0.

Gazebo problems.

Now I'm trying to use gazebo version 0.9 because the 0.10 doesn't work correctly for JDE 5.0. Here I'll write my migration problems.

.gazeborc doesn't exists

It have the path information, you only have to create the file ~/.gazeborc in you personal directory. The next xml it's a nice example

 <?XML version="1.0"?>
    <gazeborc>
       <gazeboPath>/home/ ... </gazeboPath>
       <ogrePath>/home/... </ogrePath>
 </gazeborc>

OpenCV: Not determinist Hough algorithm

I'm having problems with the Hough algorithm, the lines obtained in it are diferent for the same camera with robot stopped . CVhough(t) not constant in time. I think that could be a problem with cameras. I'm studying it.


Hough (t) Hough (t + 1)


In the image you can see that the number of lines is different for times (t) and (t + 1) without movement of the robot.

Modify generate hipothesis method

My method generate hipothesis from two points of the segment (start point, end point). Although it could be a "lucky" method, I trust that could be better in a few time. I've try to mixed logical generation with triangulation.

Since 16/6/2010 to 21/6/2010: 3D world representation and Health function modifications

There was three principal events for measure health segments, but it was not so good. Now I add some new events in the basic schema to get a better health function.

Penalization: Diference between Neighbourhood in segments of cameras A and B

Penalization: Diference between coincidence in segmetns of cameras A and B

Since 8/6/2010 to 15/6/2010: Some test and 3D world

Health-Longitude graphic

The next image is a graphic which explain the health function through segment with diferent longitudes . The distance is fixed and it is a representative distance for a good health segment.

The graphics shows the importance of a complete explication. If the segment is too length, its health is not as good as another solution with good lenght.


Health-Distance graphic

The image shows "health - distance" function, it explain which are the best distance for the segments. In this image you can see the best points between 2000 - 3000 of distance from focal axis.

Horizontal Segments



Since 2/6/2010 to 8/6/2010: Health function comparative, use and validation tests

Bad 3D world: Under construction

Health function steps:

1.- 3D segment project into 2D image correctly (camera A and B). (TESTED)

2.- Segment projection overlap Hough segmentation (cameraA and B). (TESTED)

3.- Segment Neighborhood. (TESTED)

4.- Representative pixels.

Test 1: Graphic Angle-Distance.

[1]

Test2: Graphic Length-Distance

Since 27/5/2010 to 1/6/2010: Health function tests

Tests Video for health function:

Dissection Graphics:

There are some interesting landmarks to continue studying the function.


           - More discretization, (some times, excesive).
           - More differentiation.


Graphics 2D:

Graphics 3D:

Since 19/5/2010 to 27/5/2010: Health function

Little bug solved. Some segments were not drawing correctly, because their inclination wasn´t be well calculated.


At this time health function is my priority to have the base for the reconstruction 3D. I modify this function to get an important diferences between segments with good inclination and the others. First I used a function only for the "premium points", now I use all pixels for it. The time diferences is not to expensive, and his resolution is incomparable. (text to modify).

Since 12/5/2010 to 19/5/2010: Graphics for debugging and friends segments

In this video you can see friend segments. I obtain them with the line cut between segment line with "alpha" inclination angle and plot lines.

Now I´m drawing 3D graphics for explain the relation distance/health with inclination angle from x axis. I get the camera focus point and the center point of segments for obtain the "x axis" of this segment.

The next image shows function "health - distance", it is draw with lines not with points. You can see through the function some peaks which are the best distance/health.

Since 4/5/2010 to 11/5/2010: Health function and bugs solved

BUG: Image doesnt print well vertical segments [ SOLVED ]

In this video you can observe that the image prints well diferent segments.

It generated a number of segments of different lengths and distances from their main points, later I used the health function to check that the segments are correct.


Image: graphic distance / health.



Since 20/4/2010 to 27/4/2010: Filtering and segments creation

We make a mixture of features segmentation (color filter, and canny edge filter to properly filter Hough) to get the images properly preprocessed.

On the other hand as seen in the video has solved the problem of epipolar line.


Since 26/3/2010 to 6/4/2010: Avanced work with Progeo and OpenCV

I need a color filter, it will be used for obtain diferents parts of the image (for example: obtain the doors or the floor). It works correctly and later will be embebed into another future functions. I finish the OpenCV exercise including the parameters for the diferents functions.

On the other hand I am working with Progeo, now I have a function that paint epipolar lines. For do it, get two pixels in 2D from camera A, and transform to 3D, using backproject function from Progeo. Later with the generated segment, use another tranformation 3D to 2D, and it paint a segment into camera B.


The next video shows epipolar lines draws in camera B, getting the coordenates through the pixels selected in camera A.

BUG: The epipolar line isn't well calculated [ SOLVED ]


Since 16/3/2010 to 25/3/2010: OpenGL

I started to use openGL, I was trying to understand how it works. Now I finalize my first example, which is only a simulated Pioneer. This example is the first part of my schema using opengl. You can see a video about it.

Problems: Opengl zoom and motion controller doesn´t work. [SOLVED] Gtk version, look for events.


Since 9/3/2010 to 15/3/2010: OpenCV

During this time, I was working in Computer Vision for my schema. Now you can use OpenCV algorithms like hough, sobel, LaPlace or canny to get segments of gazebo worlds. This is important for the project, because I think that we need some segments (fixed and variable) to model the world from stereo vision, using a pair of cameras.

Now you can see a video about it.

Personal tools