El documento describe un proyecto para generar un entorno virtual que simule el comportamiento de las cámaras de un robot autónomo móvil. El simulador permitirá integrarse con el entorno de desarrollo del robot, modificar parámetros y generar imágenes a alta velocidad. El sistema calcula las proyecciones de los vértices de los objetos en la imagen de la cámara virtual y ordena los obstáculos antes de representarlos con iluminación y colores.
1. 1
UNIVERSIDAD DE MÁLAGA
ESCUELA TÉCNICA SUPERIOR DE
INGENIEROS DE TELECOMUNICACIÓN
PROYECTO FIN DE CARRERA:
GENERACIÓN DE UN ENTORNO VIRTUAL
PARA UN ROBOT AUTÓNOMO MÓVIL
Málaga, 1999 Juan José Moreno Luque
3. 3
Necesidad del proyecto
Robot que resuelve el problema inverso.
¿Qué proporciona el simulador?
– Mayor comodidad
– Mayor seguridad
– Mayor portabilidad
– Puede copiarse y compartirse
– Se evitan problemas derivados de un
dispositivo físico real
ROBOT
Giro del robot
4. 4
Objetivos
Una herramienta que simule el comportamiento de
la cámara del robot.
Además el sistema debe:
– Integrarse con el entorno de desarrollo (*)
– Permitir modificar los parámetros de interés
– Generar una tasa de imágenes suficientemente
alta
6. 6
Objetivos
Una herramienta que simule el comportamiento de
la cámara del robot.
Además el sistema debe:
– Integrarse con el entorno de desarrollo
– Permitir modificar los parámetros de interés
– Generar una tasa de imágenes suficientemente
alta
8. 8
Cálculo de la proyección de un vértice
Plano de proyección
Cámara
(foco)
Plano de
proyección
d (x0, z0)
(x, y, z)
9. 9
Cálculo de la proyección de un vértice (2)
Apertura angular y espacial
Cámara
(foco)
Plano de
proyección
d (x0, z0)
(x, y, z)
10. 10
Cámara
(foco)
Plano de
proyección
d (x0, z0)
Cálculo de la proyección de un vértice (3)
La proyección se calcula usando
ApH
Ex
Ph inf−
=
(x, y, z)
⋅⋅=
2
tg2
HAp
dApH ang
2
0inf
ApH
xE −= ApH
EINF
11. 11
Cálculo de la proyección de un vértice (y 4)
Discretizamos el valor de la proyección
RH
ApH
Ex
Ph ⋅
−
= inf
'
[ ] [ ]RHRHPhPhPh ,0'1,0 ∈⋅=→∈
d (x0, z0)
(x, y, z)
Cámara
(foco)
Plano de
proyección
12. 12
Ya sabemos cómo se proyecta un vértice
Veamos cómo se genera una imagen
Se eliminan los objetos no visibles
Se eliminan las caras no visibles
Se transforman los vértices al CCS
Se recorta la parte no visible de los objetos
Se calculan las proyecciones
Se ordenan los obstáculos
Se calcula el color de las caras
13. 13
Eliminación de objetos no visibles
Alcance
mínimo
Plano de
proyección
Plano
inferior
Lateral izquierdo
Alcance máximo
Lateral derecho
Plano superior
xCCS
yCCS
zCCS
Hay objetos que no tienen proyección
Supone un ahorro computacional
17. 17
El sistema de coordenadas de la cámara (1)
Mapas y posición del robot descritos en ACS
CCS más eficiente para calcular proyecciones
18. 18
El sistema de coordenadas de la cámara ( y 2)
Cámara
(foco)
Plano de
proyección
OX
OZ
OY (x0, y0, z0)ACS = (0,d,0)CCS
ApH
Ex
Ph inf−
=
⋅⋅=
2
tg2
HAp
dApH ang
2
0inf
ApH
xE −=
(x, y, z)
19. 19
Recorte de objetos (1)
Cámara
1
2
4
Se recorta la parte de cada cara visible que está
fuera del volumen de visión de la cámara
Necesario porque hay puntos que no tienen
proyección:
Se utiliza el algoritmo de Sutherland-Hodgman
Están detrás de la cámara (d<0)d=0 → Proy=∞d↓↓ → Proy↑↑
3
20. 20
Recorte de objetos (2)
Algoritmo de recorte
Alcance
mínimo
Plano de
proyección
Plano
inferior
Lateral izquierdo
Alcance máximo
Lateral derecho
Plano superior
xCCS
yCCS
zCCS
21. 21
Recorte de objetos (y 3)
Recorte de una cara
CASO 2
CASO 3
CASO 4
v2
CASO 1
v1
v4
v3
i1
Plano lateral izquierdo
i2
22. 22
Generación de la imagen de un obstáculo
Se dibuja el objeto rellenando sus caras
Aún faltan dos procesos muy importantes
– La ordenación de los obstáculos
– El coloreado de las caras
23. 23
Ordenación de los objetos
Necesaria si hay más de un objeto visible
Se usa una adaptación a poliedros del Método de
Ordenación por Profundidad
Basta una ordenación de poliedros gracias a tener
sólo objetos convexos y no superpuestos
24. 24
Ordenación de los objetos
Algoritmo de ordenación
Se caracterizan los objetos por su centro
Se realiza una ordenación rápida ordenando los
objetos según la distancia de su centro a la cámara
Se comprueba en qué casos esa ordenación
presenta dudas
Se revisan los casos en que la ordenación podría
ser errónea y se corrige la ordenación cuando es
necesario
25. 25
Ordenación de los objetos
Primera ordenación rápida
Se caracteriza cada objeto por el centro y el radio
de la esfera que lo circunscribe
Se realiza una ordenación rápida de los objetos
según la distancia de su centro a la cámara
26. 26
Ordenación de los objetos
Problemas de la ordenación rápida
Esta primera ordenación puede ser incorrecta
Se comprueba en qué casos la ordenación presenta
dudas
1
3
2
VISTA
SUPERIOR
Cámara
d2
d3
d1
27. 27
Ordenación de los objetos
Resolución de casos dudosos
En caso de duda se comprueba si los bastidores de
los objetos se superponen
Si los bastidores se superponen deberemos
comprobar la ordenación de los objetos.
PvMÁX
PvMÍN
PhMÍN PhMÁX
Bastidor
del objeto Pantalla
de visión
28. 28
Ordenación de los objetos
Resolución de casos dudosos (2)
Para reordenar simplificamos el problema a dos
dimensiones
Cámara
X
v4
2
1
29. 29
Coloreado de las caras.
El ‘rendering’
‘El proceso de producir imágenes realistas’
Modelos físicos de iluminación.
– Muy realistas, pero costosos.
Usamos un modelo de iluminación sencillo
30. 30
Modelo de iluminación (1)
Fuentes de luz
Son imprescindibles para ver la imagen
Se usarán tres tipos
– Luz puntual u omnidireccional
– Luz distribuida o direccional
– Luz ambiental
31. 31
Modelo de iluminación (2)
Color de las caras
Color del objeto más reflexión de luz
Se utilizan dos modelos de iluminación
– Luz ambiente
– Reflexión difusa
32. 32
Modelo de iluminación (3)
Modelo utilizado
Una fuente de luz (direccional o puntual) más luz
ambiente
El color del objeto puede oscurecerse si no recibe
luz (Se multiplica por )
Veamos cómo se calcula ese valor
– LA + (1 – LA) cos (L · N)
– LA = Luz Ambiente
– Si cos<0 se considera cos=0
]1,0[k ∈
]1,0[∈
33. 33
Generación de la imagen
Se calcula el horizonte y se dibuja el fondo
Se dibujan los objetos en orden de distancia
Los objetos se dibujan rellenando sus caras
mediante un algoritmo de barrido.
34. 34
Resultados
Una herramienta que simula el comportamiento de
las cámaras del robot
Una herramienta que simula el comportamiento de
las cámaras del robot
Una herramienta que simula el comportamiento de
las cámaras del robot y que además
–Se integra con el
entorno del robot
– Permite modificar los parámetros de interés
0 10 20 30 40 50 60 70
mseg.
Pentium 133
AMD K6 233
Salvar Dibujar Calcular
– Genera una tasa de imágenes suficiente
35. 35
Líneas futuras de investigación
Enviar las imágenes a unas gafas de RV
Salvar las imágenes en formato AVI
Definir nuevos tipos de obstáculos
Definir más cámaras
Generar imágenes en color
Incluir las sombras que proyectan los objetos
Modelos de iluminación más complejos
40. 40
UNIVERSIDAD DE MÁLAGA
ESCUELA TÉCNICA SUPERIOR DE
INGENIEROS DE TELECOMUNICACIÓN
PROYECTO FIN DE CARRERA:
GENERACIÓN DE UN ENTORNO VIRTUAL
PARA UN ROBOT AUTÓNOMO MÓVIL
Málaga, 1999 Juan José Moreno Luque
Notas do Editor
¿QUÉ ES?
Generación por ordenador de un entorno tridimensional simulado que el usuario puede observar y manipular.
Dado que el sentido más importante es la vista, la producción de imágenes constituye el elemento primordial de cualquier sistema de realidad virtual.
¿CÓMO SE CONSIGUE?
Entregando a nuestros ojos dos imágenes distintas, obtenidas desde puntos de vista ligeramente desplazados.
Así es como nuestro cerebro percibe la profundidad del mundo real.
Para hacer esto, se usa un dispositivo: gafas de realidad virtual.
APLICACIONES
Infinidad. Algunas de las cuales aún no se imaginan.
Visita de piso piloto, decoración virtual, operaciones quirúrgicas a distancia. Juegos, simuladores para aprender a conducir (reproduce sin riesgo las situaciones de riesgo e infrecuentes). En el futuro habrá cosas inimaginables
Otro modo de usar el ordenador y comunicarse con él. Una revolución en la informática.
Tenemos un robot que resuelve el problema inverso:
A partir de las imágenes reales entregadas por dos cámaras,
extrae la información de profundidad
de forma similar a como lo hace el ojo humano
Esto le permite desplazarse evitando los obstáculos
Necesitamos un simulador que entregue imágenes similares a las que proporciona la cámara del robot
¿Por qué un simulador, si ya tenemos la cámara?
+ cómodo (es fácil diseñar y cambiar los mapas)
+ seguro
+ portable
Puede copiarse y compartirse
Se evitan problemas derivados de un dispositivo físico real
(averías, baterías, deterioro por su uso)
Una herramienta que simule el comportamiento de la cámara de la que está provisto el robot.
Además el sistema debe:
Integrarse con el entorno de desarrollo
Permitir modificar los parámetros de interés
Generar una tasa de imágenes suficientemente alta
(Poner una figurita con el entorno del robot)
Una herramienta que simule el comportamiento de la cámara de la que está provisto el robot.
Además el sistema debe:
Integrarse con el entorno de desarrollo
Permitir modificar los parámetros de interés
Generar una tasa de imágenes suficientemente alta
(Poner una figurita con el entorno del robot)
Necesitamos generar una imagen, pero
¿Cómo se hace eso?
PERSPECTIVA CÓNICA INDETERINADA
De los distintos tipos de perspectivas usadas en dibujo técnico, la P C I es la q.
más se aproxima a la visión humana real
Equivale a la imagen que observamos cuando miramos con un solo ojo
No se usa en dibujo técnico porque no es reversible
Explicar cómo se genera la imagen
Usamos un plano de proyección perpendicular a la dirección de enfoque de la cámara
Se puede usar cualquier plano de proyección, pues como dice el teorema de Thales, al proyectar se obendrán figuras semejantes (Figuras idénticas a distinta escala)
Por eso, usaremos el plano de proyección que contiene al punto
Veremos que la escala no influye en el resultado final
Llamamos d a la distancia entre la cámara y el plano de proyección
Limitamos el plano de proyección según las aperturas angulares horizontal y vertical de la cámara
A la distancia d que separa la cámara del plano de proyección, la apertura angular se traduce en una aperturas espaciales.
Esto definirá una pantalla de visión, la zona visible del plano de proyección.
--------------------------- --------------------------- ---------------------------
LLEVARSE ESTO A DONDE CORRESPONDA
Esto, junto con los alcances mínimo y máximo de la cámara definirá un volumen de visión de la cámara.
Los objetos que estén dentro de dicho volumen serán visibles.
La proyección horizontal de un punto se calcula como (x-Einf) / AespacialH
Esto nos dará un valor normalizado entre 0 y 1
Esto supone colocar el origen de proyecciones en la esquina inferior izquierda (0, 0) y el límite en la esquina superior derecha (1, 1)
EinfH=x0-(AespacialH/2)
AespacialH / 2= d·tg(ApH/2)
Multiplicamos Ph por RH y Pv por RV para convertir la proyección de un valor (0, 1) (0, 1) a un valor (0, RH), (0, RV)
Como representaremos píxeles que son valores discretos, se redondea para dar un valor entero.
Ya hemos visto cómo se calcula la proyección de un vértice. Los obstáculos no son, al fin y al cabo, más que un grupo de vértices ordenados. Sin embargo, debemos realizar una serie de procesos de preparación de los datos antes de calcular los vértices. Y otra serie de procesos antes de poder usar esos vértices para generar la imagen.
Las aperturas angulares horizontal y vertical de la cámara, delimitan dos planos laterales (izquierdo y derecho) y dos planos superior e inferior.
Esto, junto con los alcances mínimo y máximo de la cámara definirá un volumen de visión de la cámara.
Los objetos que estén dentro de dicho volumen serán visibles.
Se eliminan los objetos que están fuera de la zona de visión de la cámara porque:
Algunos no tienen proyección
Supone un ahorro computacional
Para ello se usa un algoritmo rápido
Se usan ‘el centro’ y ‘el radio’ del objeto
Objetos fuera se descartan
Objetos dentro se calculará su proyección
Objetos en el límite, se recortan
Es necesaria una ordenación de las caras de los objetos.
En los objetos no convexos es necesario dibujar sus caras en orden. Hay que ordenarlas antes de dibujarlas.
Si tenemos objetos convexos, basta con eliminar las caras no visibles y dibujar las caras visibles en cualquier orden.
Veamos cómo se comprueba qué caras son visibles:
Se calcula el producto escalar entre el vector normal a la cara y el vector que va de un punto de la cara hasta la cámara.
Si el producto escalar es positivo (ángulo&lt;90º), la cara es visible
Además de suponer una ordenación necesaria, al eliminar las caras no visibles
Se evita recortar las caras que no son visibles.
Para el cálculo de la proyección de un vértice es más eficiente expresar la posición de los vértices en el sistema de coordenadas de la cámara.
En los mapas se expresa la posición de los objetos y del robot en el ACS (Absolute Coordinate System)
Se respeta el sistema de coordenadas que usa el simulador del robot
Plano XY: Plano horizontal
Eje Z: Altura
TRASLACIÓN
Situamos el origen de coordenadas en la posición de la cámara
GIRO HORIZONTAL
Giramos el plano horizontal OXY para tener OY=dirección de enfoque de la cámara. Así, Yccs --&gt; d, Xccs&gt;0 --&gt; derecha.
(Habitualmente z indica la distancia, y se usa un plano X, perpendicular a la dirección de enfoque de la cámara que constituye el plano de visión.Pero lo pongo así por mantener el plano del simulador)
GIRO VERTICAL
Se levanta el eje OY y el OZ gira consecuentemente con él.
El eje OX no se ve afectado porque sirve como eje de giro.
VENTAJAS
x0=0, z0=0d=Yccs=cte en todo el plano de proyección
Antes vimos que existen tres tipos de objetos según su posición.
Los que no son visibles y los descartamos
Los que están contenidos totalmente dentro de la zona de visión
Los que tienen una parte dentro y otra fuera-&gt; RECORTARLOS
Antes de calcular las proyecciones hay que recortar los objetos.
Se recorta la parte de cada cara visible que está fuera del volumen de visión de la cámara
Esto es necesario porque hay puntos que no tienen proyección:
Están detrás de la cámara (d&lt;0)
d=0 Ph=
d Ph
Se utiliza una adaptación a 3D del algoritmo de Sutherland-Hodgman
Vamos a ver el algoritmo de recorte de Sutherland-Hodgman
Se recortan las caras (visibles)
Se recorta la parte de la cara que está fuera del volumen de visión de la cámara
Se recorta para cada plano TR[ siguiente)
Se repite el proceso con los seis planos que delimitan el volumen de visión, y así se obtiene la lista definitiva con lo que queda sólo la parte visible de la cara
Con estos vértices ya se pueden calcular las proyecciones de la cara.
Y con ellas podemos generar la imagen de un obstáculo.
Se toma un plano lateral.
Los vértices a un lado están dentro y los otros fuera.
Se toma la lista de vértices original y se obtiene otra lista de vértices tras recortar.
Esa lista se entrega al siguiente plano para que realice el recorte.
Con los vértice resultantes de recortar ya podemos generar la imagen de un obstáculo.
(Se dibuja el objeto rellenando sus caras)
(más adelante veremos cómo se realiza este relleno)
Aún faltan dos procesos básicos para dar a la imagen visos de realidad
La ordenación de los obstáculos
El coloreado de las caras (el rendering)
La ordenación de los objetos es necesario realizarla cuando hay más de un objeto visible
Sólo se ordenan poliedros, pero no polígonos, gracias a tener objetos convexos
Se usa una adaptación a poliedros del Método de Ordenación por Profundidad (algoritmo del pintor) que se utiliza para ordenar polígonos.
Esta primera ordenación puede ser incorrecta.
Cuando existen objetos próximos, especialmente si son de tamaños muy diferentes.
Se comprueba en qué casos esa ordenación presenta dudas.
Cuando la distancia entre los centros es mayor que la suma de los radios no puede haber problemas. En ese caso, el punto más próximo del objeto más lejano está más lejos que el punto más lejano del objeto más próximo.
El criterio puede ser correcto, pero la explicación no lo es, porque lo que se dice ocurriría cuando:
La diferencia entre las distancias de los centros a la cámara sea mayor que la suma de los radios.
Debemos dibujar el objeto 3, luego el 2, que tapa al 3 y luego el 1 que tapa al 2.
Si sólo usamos los centros obtenemos lo contrario:
Primero 1, luego 2 y luego 3, obteniendo una imagen irreal.
Si los bastidores no se superponen, carece de importancia el orden en que dibujemos estos dos objetos, porque ninguno de los dos oculta al otro.
Para reordenar simplificamos el problema a dos dimensiones
Más simple
Aprovecha la particularidad de no tener objetos superpuestos a distintas alturas
El método consiste en:
La recta que pasa por el vértice v4 del objeto1 corta una arista del objeto2 en el punto X.
Como v4 está más cerca de la cámara que el punto X, el objeto1 está más cerca que el objeto2.
Se calcula el horizonte (depende del giroV)
Se dibuja el fondo (suelo negro y cielo blanco)
Se dibujan los objetos comenzando por los más lejanos y terminando por los más próximos que ocultarán a los anteriores
Los objetos se dibujan rellenando sus caras mediante un algoritmo de barrido.
Se usa el color calculado para la cara.
(Este método de relleno permite adaptarse a un sombreado Gouraud Shading, aunque se usa sombreado plano por velocidad)