Tutorial:ODE y robots modulares:Caida libre (III)

De WikiRobotics
Revisión del 04:15 7 ene 2009 de Obijuan (Discusión | contribuciones) (Movimiento de la cámara)

Saltar a: navegación, buscar
Box3 screenshot1.png

Simulación de un cubo en caida libre (III): 3D

Capítulo anterior
Índice
Capítulo siguiente


Introducción

En este ejemplo añadiremos visualización en 3D a la simulación del cubo en caida libre. Para ello utilizaremos la librería drawstuff, creada por Russell L. Smith (el autor del ODE). Esta, a su vez, utiliza OpenGL.

Las simulaciones con visualización en 3D son muy interesantes, ya que con un sólo golpe de vista nos permite conocer cómo ha evolucionado nuestro sistema. Sin embargo, es importante tener en cuenta que el ODE nos permite realizar simulaciones sin visualización. Esto es muy útil para realizar búsquedas mediante algoritmos genéritos, en las que hay que evaluar centenares de individuos intermedios. La visualización 3D se utiliza para observar los resultados obtenidos, pero no los el resto de individuos.

Objetivos

  • Añadir visualización 3D a las simulaciones con ODE, usando la librería drawstuff.

Código

Programa principal
Creación y dibujo del cubo
Definición de las constantes.
Definición de los prototipos de body.cpp y las estructuras de datos.

Compilación

Todos los ejemplos de este tutorial compilan tecleando "make". Sin embargo se describe a continuación cómo se compila directamente usando el GCC:

g++ -o box3 -Iinclude box3_ex/box3.cpp box3_ex/body.cpp libdrawstuff.a -lm -lode  -lX11  -lGL -lGLU

Ejecución

Para probar el ejemplo, teclear:

./box3

En la consola aparecerán los siguientes mensajes. El primero lo genera la propia librería drawstuff. Muestra cuáles son las teclas que se pueden emplear para mover la cámara, parar la simulación, simular un paso, volcar las imágenes a ficheros, etc:

Simulation test environment v0.02
   Ctrl-P : pause / unpause (or say `-pause' on command line).
   Ctrl-O : single step when paused.
   Ctrl-T : toggle textures (or say `-notex' on command line).
   Ctrl-S : toggle shadows (or say `-noshadow' on command line).
   Ctrl-V : print current viewpoint coordinates (x,y,z,h,p,r).
   Ctrl-W : write frames to ppm files: frame/frameNNN.ppm
   Ctrl-X : exit.
Change the camera position by clicking + dragging in the window. Left button - pan and tilt. Right button - forward and sideways. Left + Right button (or middle button) - sideways and up.

Los últimos mensajes los imprime la aplicación box3:

Keys: 
1: Drop the box
q: Quit

La tecla '1' sitúa la caja en su posición inicial, por lo que vuelve a caer. La tecla 'q' finaliza la simulación.

Capturas de pantalla

Visualización de la caida del cubo, en tres instantes diferentes:

Pinchar para ampliar
Pinchar para ampliar
Pinchar para ampliar

Vídeo

Box3 video thumb.png Video en MPEG

Conceptos previos

Sistema de referencia

En la figura 1 se muestra el aspecto del mundo virtual dibujado con la librería drawstuff. Está formado por un cielo, el suelo y unos puntos de referencia en el suelo. El sistema de referencia es como el mostrado en la figura 2. El eje y se dirige hacia el punto azul y el eje x hacia el rojo.

Figura 1: Aspecto del "mundo virtual" dibujado por la librería drawstuff
Figura 2: Sistema de referencia del mundo virtual

Texturas y sombras

La librería drawstuff dibuja por defecto los objetos con texturas, incluyendo el suelo y el cielo, y proyecta las sobras de los objetos sobre el suelo. Esto da una mayor sensación de realismos (Figura 4). Sin embargo, para que las simulaciones se ejecuten más rápidamente, es posible eliminar las texturas pulsando control-T (Figura 5) y las sombras con control-S (figura 6).

Figura 3: Aspecto del mundo virtual, con un cubo en el origen
Figura 4: Texturas eliminadas
Figura 5: Texturas y sombras eliminadas

Movimiento de la cámara

La drawstuff permite que el usuario pueda mover la cámara pinchando en la ventana de la simulación y arrastrando el ratón. Según el botón empleado se consiguen diferentes efectos:

  • Botón izquierdo: Cambio de la orientación de la cámara. Hacia arriba y abajo (cabeceo) o hacia los lados (viraje)
  • Botón derecho: Movimiento hacia adelante/atras o izquierda/derecha.
  • Botón central: Movimiento hacia arriba/abajo o izquierda/derecha

Pulsando control-v se obtienen las coordenadas x,y,z y las orientaciones pitch, yaw, roll de la cámara. Esto nos permite introducirlas en nuestro código para que la cámara se sitúe inicialmente en el punto seleccionado. Es posible también congelar la simulación pulsando control-P. Y utilizar los movimientos de la cámara para observar los objetos desde diferentes puntos de vista.

Descripción


Capítulo anterior
Índice
Capítulo siguiente