miércoles, 2 de mayo de 2018

Práctica 2: 3D Reconstruction (Introducción)

La práctica 3D Reconstruction (https://github.com/JdeRobot/Academy/tree/master/src/3d_reconstruction) consiste en realizar una reconstrucción 3D a partir de un par estéreo. Para realizar la práctica se empleará el simulador Gazebo, la plataforma JdeRobot y la librería OpenCV para procesamiento de imágenes. En Gazebo se encuentra el entorno o mundo que observaremos con las cámaras y el cuál debemos reconstruir. La reconstrucción 3D que realicemos se proyectará en el espacio 3DViewer (una herramienta para la visualización 3D).

Para poder ver la práctica en funcionamiento primero deberemos preparar el entorno de la práctica. Para ello hay que ejecutar los siguientes comandos en un terminal:

Primero copiar la nueva interfaz:

sudo cp interface/visualization_ice.py /opt/jderobot/lib/python2.7

 
 
Luego preparar el 3dViewer:

sudo apt-get install nodejs
sudo apt-get install npm
cd 3DViewer-web
npm install electron --save-dev --save-exact
npm install jquery
npm install js-yaml 
 

Es posible que durante la instalación de electrón salte  un error. Para solucionarlo ejecutar:

sudo apt-get install nodejs-legacy
source ~/.bashrc 
 


Para poder ejecutar nuestra solución de la práctica habrá que ejecutar en un terminal:

* Ejecutar el mundo en Gazebo: gazebo reconstruccion3D.world

* Ejecutar el componente 3d_reconstruction: python2 3d_reconstruction.py 3d_reconstruction_conf.yml

* Ejecutar el visor 3D:

cd 3DViewer-web
npm start

Si ejecutamos el mundo de Gazebo podemos ver el robot Kobuki, que mediante las dos cámaras, tendrá que ser capaz de reconstruir justo los objetos que tiene en frente. El escenario de Gazebo lo vemos en la siguiente imagen:




Antes de reconstruir la escena se ha probado a pintar algún punto en el visor 3D. Un punto cualquiera se puede pintar en el visor si ponemos en el método execute de MyAlgorithm.py el siguiente código:

point = np.array([1,1,1])
color = (0, 255, 0) 
 self.sensor.drawPoint(point, color)


Si pintamos 4 puntos de ejemplo en color verde en el visor, obtenemos el siguiente resultado:





Para poder realizar el código que nos permita reconstruir la escena 3D debemos seguir los siguientes pasos:

1. Obtener los puntos de interés.

2. Encontrar los puntos de la imagen derecha que se corresponden con los puntos de la izquierda, es decir, los puntos homólogos. Para ello deberemos hacer uso de la epipolar.

3. Realizar una triangulación para hacer la reconstrucción 3D de la escena mediante los pares de puntos.

4. Representación.

No hay comentarios:

Publicar un comentario