Escolar Documentos
Profissional Documentos
Cultura Documentos
1
2.4.3 Composición de transformadas ....................................................27
3 Desarrollo .................................................................................................29
3.1 El lenguaje ROBEL..........................................................................29
3.1.1 Descripción del lenguaje ..............................................................30
3.1.1.1 Instrucciones del lenguaje....................................................30
3.1.2 Construcción del lenguaje ............................................................32
3.1.2.1 Descripción de la máquina virtual ExecuteCommand.........32
3.1.2.2 Descripción de la máquina virtual ReadCommand .............34
3.1.3 Análisis del lenguaje ....................................................................36
3.2 Campos potenciales..........................................................................37
3.2.1 Cálculo del campo potencial ........................................................39
3.2.2 Instrumentación............................................................................42
3.3 El ambiente virtual creado ...............................................................44
3.3.1 Definición del mundo virtual .......................................................44
3.3.1.1 Otros mundos virtuales creados con fotografías..................45
3.3.2 Herramientas utilizadas................................................................46
3.3.3 Creación de las fotografías panorámicas .....................................47
3.3.4 Desarrollo del programa de despliegue........................................48
3.3.4.1 Proyección de las imágenes .................................................49
3.3.5 Proceso de creación del mundo....................................................56
4 Conclusiones y resultados ........................................................................59
4.1 Propuestas para el mejoramiento de ROBEL ..................................59
4.2 Conclusiones sobre el mundo virtual ...............................................60
Apéndice A Configuración del programa robottx8......................................63
Apéndice B Interfaz de las máquinas virtuales............................................67
2
Apéndice C Descripción de la representación simbólica del mundo...........69
Apéndice D Programas en ROBEL..............................................................71
a) Salida del planeador .............................................................................71
b) Programa que toma las fotos ................................................................72
5 Bibliografía...............................................................................................73
3
Introducción
1 Introducción
En los últimos años se ha visto un incremento en la cantidad de mundos y
ambientes virtuales en un sinnúmero de aplicaciones. Estos mundos están
formados por imágenes generadas por la computadora (render1). Este método
tiene el problema que se debe de invertir una gran cantidad de tiempo –
hombre en el modelado y la construcción del mundo que se quiere simular.
Además existen lugares donde no se pueden utilizar imágenes creadas por
computadora para generar un ambiente virtual, como por ejemplo en los
museos o en las zonas arqueológicas [Seitz, McAllister].
Para corregir esto, se está desarrollando una técnica de graficación por
computadora, que consiste en utilizar imágenes fotográficas en vez de
imágenes creadas por computadora como una alternativa al dibujo de gráficas
por computadora tradicional, ya que cuenta con dos ventajas muy importantes:
se pueden mostrar mundos independientemente de su complejidad y se
simplifica el proceso de modelado del mundo. Uno de los principales
problemas contra los que se enfrenta esta técnica, es que la adquisición de los
datos, es decir las fotografías con las que se va a generar el mundo, es un
proceso muy tardado ya que se necesitan una gran cantidad de aquéllas, por lo
que se desea buscar una forma de automatizar el proceso. Para resolver este
problema se decidió utilizar un robot móvil, puesto que ayuda a tener un
control sobre la posición donde fueron tomadas las fotos así como a
automatizar el proceso de tomar las fotos, siendo ambos aspectos esenciales y
deseables en la creación del mundo virtual por medio de imágenes.
También, se está buscando una manera de mostrar mundos virtuales en
páginas Web. Por esta razón se decidió utilizar un applet2 en Java el cual por
su capacidad de ejecución en prácticamente todas las arquitecturas de
computadoras, el mundo virtual podrá ser visto fácilmente desde cualquier
navegador.
Para calcular las rutas que el robot debe seguir para tomar las fotografías se
utilizó la técnica de navegación conocida como campos potenciales de la cual
se hará una revisión en la tesis.
1
Render: proceso de creación de imágenes en una computadora.
2
Applet: programa diseñado para ser ejecutado dentro de otra aplicación, por ejemplo los
applets de Java se ejecutan dentro de un navegador de Internet.
4
Introducción
3
Ver el apartado 2.1.4 para una descripción del robot.
5
Marco teórico
2 Marco teórico
2.1 Robots móviles
Un robot móvil es un vehículo autónomo capaz de realizar movimientos y
acciones inteligentes sin la necesidad de ser teleoperado; para lograrlo debe de
ser capaz de:
• Sensar su entorno.
• Interpretar la información dada por los sensores para refinar el
conocimiento de su posición y del entorno.
• Planear una ruta desde una posición inicial hasta una posición meta, con
la presencia de obstáculos conocidos o desconocidos.
El principal problema de los robots móviles es hacer que actúen de la manera
deseada en ambientes donde el nivel de casualidades es muy alto. El
programar un robot cuando el control sobre el ambiente es alto, es una tarea
relativamente fácil que se va complicando en la medida en que se van
introduciendo casualidades. Se entiende como causalidad a todos los
elementos dentro del ambiente que varían; por ejemplo una silla es una
causalidad ya que ésta no se encuentra fija dentro del mundo sino que su
posición varía con respecto al tiempo.
El problema puede ser descompuesto en interpretar los datos de los sensores y
con estos datos generar acciones que lleven a realizar una tarea. Al realizar
esto se estará en condiciones de desarrollar robots capaces de trabajar en
grandes ambientes no controlados. Para lograrlo, las prioridades deben ser la
interpretación de los sensores y el razonamiento [Ingermar].
6
Marco teórico
4
En inglés esta técnicas se llama “sensor fusion”.
5
Los sensores internos son aquellos que miden el estado del robot, mientras que los
externos miden alguna característica del entorno.
7
Marco teórico
2.1.2 Razonamiento
El robot debe ser capaz de decidir qué acciones son requeridas para lograr sus
metas dentro de un ambiente dado. Esto significa tomar decisiones a partir de
los datos obtenidos de los sensores.
En el campo del razonamiento, los problemas principales son de naturaleza
geométrica (cómo elegir un buen camino o determinar dónde tomar un
objeto). Se han desarrollado muchas técnicas que resuelven estos problemas
cuando se cuenta con la información completa del entorno de trabajo, pero se
ha visto que el problema se vuelve más difícil cuando se introducen
imprevistos o casualidades. Dado que las casualidades son inherentes a los
robots móviles, se deben desarrollar métodos que permitan hacer estas tareas
en ambientes que no sean completamente controlados.
La solución consiste en utilizar la lectura de los sensores para mantener un
buen modelo de la situación real del entorno, pero dados los problemas que
presenta interpretar la información adquirida se han desarrollado robots que
minimizan la cantidad de lecturas que requieren. Como resultado la mayoría
de los robots operan prácticamente en lazo abierto6.
Por otro lado, para lograr buenos resultados en la etapa de razonamiento los
lenguajes procedurales ha demostrado un desempeño muy pobre, puesto que
estos lenguajes fueron diseñados para programas con poca interacción. Por
esta razón es necesario utilizar otra aproximación de lenguajes de
programación.
El plan de acción del robot para ambientes no estructurados debe estar en
función del mundo. Lo que conviene es crear un lazo de control7 mapeando las
lecturas de los sensores hacia los actuadores. El robot debe poseer una manera
de traducir los estados del mundo a metas, y después mapear estas metas a
acciones. La razón por la que los lazos de control tradicional no son buenos en
éstos casos, es porque son usados principalmente en sistemas lineales que se
pueden modelar por medio de ecuaciones, lo que da un sistema de cambios
6
Se llama sistema de lazo abierto a aquel en el que no existe una retroalimentación de la
salida a la entrada.
7
Se llama sistema de lazo de control ó de lazo cerrado a aquel en el que existe una
retroalimentación de la salida a la entrada, con el fin de corregir el error. Esto es la base de
la teoría de control.
8
Marco teórico
2.1.3 Arquitectura
Existen varias arquitecturas para el control de robots móviles; la utilizada aquí
se basa en la presentada en el proyecto Aura por Ronald Arkin [Arkin]. Esta
arquitectura consiste en varios módulos, Figura 1, cada un de ellos con una
función específica en el comportamiento del robot. La arquitectura propuesta
aquí fue modificada para soportar tanto robots virtuales como robots reales,
utilizando el lenguaje de programación ROBEL.
9
Marco teórico
8
Ver el Apéndice C para una descripción de la representación.
10
Marco teórico
9
Socket: es una interfaz que conecta una aplicación con un protocolo de red, así el
programador solo se debe preocupar por escribir y leer datos del socket dejando al sistema
operativo transportar el mensaje a través de la red.
10
Tcl/Tk: lenguaje de programación, entre sus características se encuentra la facilidad de
crear gráficos así como la capacidad de escribir extensiones en otros lenguajes.
11
Marco teórico
12
Marco teórico
11
Para ver la transformación en detalle ver el apartado 2.4 .
13
Marco teórico
14
Marco teórico
15
Marco teórico
16
Marco teórico
17
Marco teórico
18
Marco teórico
19
Marco teórico
20
Marco teórico
21
Marco teórico
22
Marco teórico
12
Ver el apartado 2.3.2.2 para una descripción de la distorsión de barril.
13
VRML: Virtual Reality Modeling Language (Lenguaje para el modelado de realidad
virtual) es un lenguaje que se utiliza para definir ambientes en tercera dimensión, para ser
desplegados a través de navegadores de Internet.
14
Punto nodal: un rayo de luz que entra a una lente cruzando el punto nodal frontal deberá
emerger por el punto nodal trasero exactamente con el mismo ángulo relativo al eje de la
lente con el que entró a ella. Los puntos nodales de las lentes son los mismos que los puntos
principales, a menos que se estén utilizando en lugares inusuales como debajo del agua.
Punto principal: una lente simple debe tener dos puntos principales, que deben estar en
algún punto dentro de los elementos del lente. Actualmente la mayoría de las lentes tienen
muchos elementos, lo que causa que los puntos principales puedan estar en cualquier lado,
inclusive fuera de las lentes.
23
Marco teórico
Una forma fácil de entender lo que es el error paralaje, es poner el dedo índice
frente a la cara y cerrar un ojo y alinear el dedo con un objeto como una puerta
o una ventana y rotar la cabeza. Se verá que conforme se gira la cabeza, el
dedo pierde su la alineación; este es el problema de paralaje [Rigg].
Lo que se presenta en la imagen final como rayas negras entre los cuadros
verde y magenta. Pero si se aplica la corrección gamma con un valor de 2.5 se
obtiene lo siguiente:
15
RBG: Red blue green (rojo azul verde), es un método para codificar imágenes por
computadora separando la imagen en tres canales de colores; rojo, azul y verde.
24
Marco teórico
Este error se corrige moviendo cada píxel de una manera radial, con base en
una función polinomial de tercer orden cuyos coeficientes dependen de cada
16
Las imágenes fueron tomadas de http://www.fh-furtwangen.de/~dersch.
17
Las imágenes fueron tomadas de http://www.fh-furtwangen.de/~dersch.
25
Marco teórico
lente. Esta función relaciona la distancia de una píxel del centro de la imagen
origen rsrc a la imagen destino rdest:
(
rsrc = a * rdest
3
+ b * rdest
2
)
+ c * rdest + d * rdest
2.4.1 Traslación
Esta transformación responde al desplazamiento en X – Y de un sistema de
coordenadas con respecto a otro. Su expresión matemática es:
x * = x + Tx
y * = y + Ty
y de manera matricial:
1 0 0
[x *
y *
]
1 = [x
y 1] 0 1 0
Tx Ty 1
2.4.2 Rotación
La transformación es una rotación sobre el origen del sistema de coordenadas
por el ángulo θ. Se considera un punto dado por las coordenadas P(x, y) y se le
gira un ángulo θ a la posición P*(x*, y*) como se ve en la Figura 6.
26
Marco teórico
Figura 6 Rotación.
Dado que necesitamos una convención para el giro de los ángulos, los ángulos
positivos serán los ángulos en sentido contrario a las manecillas del reloj y los
ángulos negativos serán en sentido de las manecillas del reloj.
La transformación a P* desde P se puede calcular utilizando trigonometría:
x = r cos(φ )
y = r sin(φ )
y de manera matricial:
cos θ sin θ 0
[x *
y *
]
1 = [x y 1]− sin θ cos θ 0
0 0 1
27
Marco teórico
28
Desarrollo
3 Desarrollo
3.1 El lenguaje ROBEL
El lenguaje ROBEL (RObot BEhaivor Language) fue diseñado con la
finalidad de tener una plataforma que permita utilizar algoritmos en diferentes
tipos de robots móviles, sin importar sus diferencias en arquitectura o
construcción. Es la base para la arquitectura ViRBot.
Este lenguaje consta de los comandos necesarios para el control de las
operaciones básicas de los robots móviles, lo que ayuda al lenguaje a ser una
herramienta efectiva para el desarrollo de aplicaciones sobre robots móviles.
Otra ventaja del lenguaje es la facilidad que presenta para la enseñanza y la
investigación; dado que uno de los robots con los que se trabaja es un robot
virtual [Hernández, Vázquez], se pueden desarrollar y probar algoritmos sin
necesidad de utilizar un robot real, teniendo la ventaja que se puede tener un
robot por desarrollador, lo que es un ahorro en costo y se protege al robot real
de daños por posibles colisiones durante la etapa de desarrollo del algoritmo.
Existen dos maneras para darle comandos a un robot por medio de ROBEL: la
primera utilizando scripts18 que se encuentran dentro del disco duro del robot
o se cargan por el puerto serial y la segunda es por medio de comandos dados
directamente sobre un socket de comunicación abierto para este fin. Con esta
última forma se puede comunicar el robot con otros procesos ya sea en la
misma máquina o en alguna máquina remota, lo que abre la posibilidad de
utilizar programas desarrollados en otros lenguajes e incluso corriendo dichos
programas en otras máquinas para calcular los algoritmos de movimiento del
robot. Esta característica le da una flexibilidad muy poderosa a ROBEL, ya
que se pueden ejecutar algoritmos complejos en robots que cuentan con un
procesador pequeño, además que permite utilizar algoritmos en otros
lenguajes sin tener que migrarlos para que se puedan ejecutar en un robot
especifico, así como desarrollar algoritmos en el lenguaje que se desee,
utilizando ROBEL como interfaz.
Dado que se puede utilizar el lenguaje ROBEL tanto para escribir programas
como para comunicarse con otros programas, se puede decir que el lenguaje
18
Script: conjunto de instrucciones que pueden ser ejecutadas sin la intervención del
usuario.
29
Desarrollo
19
Para ver los diferentes sockets del programa ver el Apéndice A.
30
Desarrollo
20
Este comando fue diseñado para tomar fotos desde el robot utilizando un proceso que en
el socket de fotos.
31
Desarrollo
NOTA: Los valores expresados entre signos mayor que y menor que < >,
son valores de punto flotante; los expresados entre corchetes [ ] son valores
tipo cadena; los expresados entre llaves { } son de tipo entero y los valores
que puede tomar {comparador} son =, < ó >.
Las distancias están dadas en decímetros y los ángulos en
radianes.
La cadena @<id> sirve como identificador de la instrucción.
Además de estas funciones, se pueden agregar funciones de usuario
desarrolladas en C, con lo que se puede extender el lenguaje para que se
adapte a necesidades más específicas.
Se puede manipular el valor de los sockets así como otras características por
medio de archivos de configuración u opciones de configuración dadas en la
línea de comandos21.
21
Ver el Apéndice A para una descripción de las opciones de configuración del programa.
32
Desarrollo
33
Desarrollo
34
Desarrollo
22
Parser: programa encargado de hacer el análisis semántico de un archivo fuente.
23
API: application program interface (Interfaz para la programación de aplicaciones) es un
conjunto de rutinas, protocolos y herramientas utilizadas para construir programas.
35
Desarrollo
36
Desarrollo
37
Desarrollo
24
Figura tomada de [Latombe].
38
Desarrollo
Para que el robot sea atraído hacia el punto de destino y repelido por los
obstáculos, U debe de ser construida como la suma de dos funciones más
elementales:
U (q ) = U att (q ) + U rep (q ) (3.2.1)
39
Desarrollo
La Uatt que se utilizó en este caso está dada por la siguiente fórmula:
1 ε q − qdest 2
si q − q dest ≤ d 0
U att (q ) = 2 1
ε 2 q − qdest si q − qdest > d 0
25
Figura tomada de [Latombe].
40
Desarrollo
donde qobs es el punto más cercano del objeto a la posición del robot, η es una
constante de proporcionalidad y d1 es la distancia máxima de influencia de la
fuerza de repulsión.
Aplicando la ecuación (3.2.3) a la expresión anterior, obtenemos la fuerza de
repulsión:
1 1 1 (q − qobs )
r − η − si q − q obs ≤ d1
Frep (q ) = q − q obs d1 q − q obs 2
q − q obs (3.3.5)
0 si q − q obs > d1
Puesto que la fuerza total puede ser muy alta, se corre el riesgo que la
aceleración o la distancia que recorra el robot sea demasiado grande por lo que
para calcular la posición siguiente se normaliza y se escala por un valor dado.
Esto se expresa de la siguiente manera:
qt +1 = qt + δf (q ) (3.3.6)
Dado que los campos potenciales tienen el problema que el robot pueda caer
en un mínimo local, y que para este caso en particular se tiene un
conocimiento aproximado del área de trabajo, se emplean técnicas de
inteligencia artificial para encontrar la salida del mínimo local. El método que
se aplicó es el de colocar destinos temporales cerca de las esquinas del o los
41
Desarrollo
3.2.2 Instrumentación
Ya que la navegación del robot se realiza dentro de un espacio conocido, se
tiene la posibilidad de utilizar un mapa del lugar para facilitar el cálculo de las
trayectorias. Por esta razón se decidió utilizar CLIPS26, ya que al definir los
objetos en el mundo y el estado del robot como hechos, se puede fácilmente
crear reglas para calcular las fuerzas de atracción y de repulsión, con lo que se
facilita la escritura del programa. Además se logra integrar la descripción del
mundo con el módulo de representación del conocimiento.
Tener el lenguaje ROBEL en el robot B14 facilitó la realización del algoritmo,
ya que se utilizó la capacidad de recibir comandos por medio de sockets
ahorrando el problema de crear una interfaz específica entre las bibliotecas
para el manejo del robot B14 y CLIPS, evitando un trabajo extra. Otra ventaja
de esta aproximación es la posibilidad de correr el programa de campos
potenciales en una máquina remota he incluso hacer los cálculos fuera de
línea.
El programa utiliza una representación simbólica del área de navegación27, y
utiliza esta representación para encontrar tanto las fuerzas de atracción como
las de repulsión. En esta representación cada obstáculo está representado
como un polígono, que consiste en una lista ordenada de los vértices en el
sentido de las manecillas de reloj. Además están definidas áreas prohibidas
cerca de cada polígono; estas áreas son lugares donde el robot no tiene
permitido entrar. Su existencia se debe a que en el desarrollo de los campos
potenciales, se modela al robot como un punto sin dimensiones, y se
ensanchan todos los polígonos una distancia igual a la que debe guardar el
centro del robot y los obstáculos para considerar las dimensiones del robot
[Tomás]. En la Figura 9 se muestra el área de navegación robot; las franjas
alrededor de los objetos representan las zonas prohibidas.
26
Ver el apartado 2.1.3 sección representación del conocimiento.
27
Ver el Apéndice C para una explicación de la representación simbólica.
42
Desarrollo
Figura 10 Ejemplo de los puntos con lo que se traza el camino a seguir por el robot.
28
Ver el Apéndice D para ver el script.
43
Desarrollo
potenciales (ver Figura 11). De esta forma se asegura tener una buena
cobertura a lo largo de todo el laboratorio.
Figura 11 Ruta trazada por el planeador y ejecutada por el robot B14 para tomar las
fotos.
44
Desarrollo
45
Desarrollo
29
El programa se puede obtener en la dirección de Internet: http://www.fh-
furtwangen.de/~dersch.
30
Bash: interprete de comandos muy utilizado en sistemas UNIX, entre sus ventajas cuenta
con tener todas las características de un lenguaje de programación.
31
Ver el apartado 2.3.2.2 para una descripción de estas distorsiones.
46
Desarrollo
32
Ver el apartado 2.3.2.2 para una descripción de la distorsión de barril.
47
Desarrollo
33
Se llamará distancia de influencia a la distancia máxima a la cual se puede alejar del
lugar donde fue tomada la foto panorámica y aun se pueden obtener proyecciones validas
de ella.
34
Hilo: expresión que viene de la palabra inglesa thread; significa una parte del programa
que se puede ejecutar independientemente de otros programas.
48
Desarrollo
35
Ver el Apéndice C para una descripción de la definición del mundo.
49
Desarrollo
50
Desarrollo
en (x1, y1) y el punto PT en (xt, yt), pero se pueden utilizar traslaciones36 para
realizar los cálculos en puntos fuera del origen.
y = m( x − x1 ) + y1 (3.3.1)
x2 + y2 = R2 (3.3.2)
donde:
m = tan (θ )
Reagrupando x:
( ) { }
x 2 1 + m 2 + x(2m{y1 − mx1 }) + ( y1 − mx1 ) − R 2 = 0
2
36
Ver el apartado 2.4 para las ecuaciones que definen las traslaciones.
51
Desarrollo
Los valores transv y transh son valores reales mientras que los píxeles son
valores enteros, así que se redondea el valor obtenido al entero más próximo y
52
Desarrollo
Uno de los criterios que debe de cumplir es que los píxeles que necesitamos
para la creación de las columnas de la imagen no estén fuera de la fotografía
panorámica; esto sucede cuando el valor inicial de la interpolación vertical es
menor que cero:
vi < 0
53
Desarrollo
54
Desarrollo
Integrando y despejando ϕ:
θ ⋅e
ϕ=
R
55
Desarrollo
En la Tabla 3-2 se muestran los datos utilizados en el mundo creado, así como
el valor de ri:
Da tos Re sulta dos
R 30 ri(vi) 10
Height 320 ri(tv) 15
W idth 2000 ri(th)1 39.12
panHeight 240 ri(th)2 12.72
panW idth 320
hfov 0.87266463
ri= min(ri(vi),ri(tv),ri(th)1,ri(th)2= 10
Tabla 3-2 Cálculo del rango de influencia ri, para las fotografías panorámicas
utilizadas en el mundo creado.
56
Desarrollo
37
Ver el apartado 2.3.2.2 para una descripción de la distorsión de barril.
57
Desarrollo
Figura 16 Esquema de los pasos a seguir para la creación del mundo virtual.
58
Conclusiones y resultados
4 Conclusiones y resultados
4.1 Propuestas para el mejoramiento de ROBEL
Después de utilizar el lenguaje ROBEL se hacen las siguientes propuestas con
el fin de expandir sus características como plataforma para el desarrollo de
algoritmos para robots móviles:
1. Agregar la posibilidad de creación de ciclos y sentencias condicionales
para tener la posibilidad de crear algoritmos más elaborados utilizando
ROBEL.
2. Crear un compilador que traduzca los scripts escritos en ROBEL a
lenguaje C, utilizando el API de ROBEL. Con esto se podrán
desarrollar los algoritmos utilizando ROBEL y posteriormente
agregarlos como funciones de usuario para ejecutarlos con mayor
rapidez y no tener que cargar el script cada vez que se ejecute el
programa.
3. Agregar características para la depuración de los scripts, como ver y
modificar el valor de las variables.
4. Agregar un entorno gráfico donde se puedan construir scripts en
ROBEL arrastrando, cortando y pegando bloques, para tener un entorno
de programación visual.
En la Figura 17 se presenta una gráfica de los diferentes módulos que
compondrían el sistema completo de desarrollo propuesto.
Esta estructura está pensada para obtener la facilidad de desarrollar en un
lenguaje específico para el robot como es ROBEL y la potencia y rapidez del
lenguaje C, además de poder utilizar el mismo algoritmo para varios robots.
El entorno gráfico se propone para tener una plataforma de desarrollo que
pueda competir con la plataforma creada por la compañía Lego con su
producto Mindstorm.
59
Conclusiones y resultados
60
Conclusiones y resultados
Utilizando el método descrito en esta tesis se tiene una manera fácil de crear
ambientes virtuales, sin tener que emplear demasiado tiempo modelando el
mundo. Este tipo de mundos virtuales puede ser utilizado para crear visitas a
museos o zonas arqueológicas, ya que al utilizar este método se estarían
mostrando fotos de las obras de interés en lugar de modelos de ellas.
El sistema tiene una muy buena calidad en las imágenes creadas. Este se
puede ver en la Figura 19, en la que se muestra una imagen obtenida por el
sistema a partir de una fotografía panorámica en el punto (–3, –3, –1.8)
situando a la foto en el origen.
61
Conclusiones y resultados
62
Configuración del programa robottx8
63
Configuración del programa robottx8
64
Configuración del programa robottx8
65
Configuración del programa robottx8
66
Interfaz de las máquinas virtuales
67
Interfaz de las máquinas virtuales
/*--------------------------------------------------
Comandos en el módulo de ReadCommand.
-----------------------------------------------------*/
/*Valida la cadena s como un comando válido y pone los valores correspondientes
en el registro A; para tener acceso a este registro debe incluir al archivo parser.h */
int ROBEL_validates(char *s);
/*Ejecuta el comando con los datos que están en el registro A.*/
int ROBEL_execute(void);
/*Regresa el comando que se esta ejecutando.*/
char *ROBEL_getMessage(void);
/*Carga el script en la pila de script, si ya ha sido cargado, lo actualiza.*/
int ROBEL_load_script(char *script);
/*Regresa un apuntador al script que se esta ejecutando y NULL si no hay ningún
script en ejecución.*/
ScriptInst* ROBEL_getPresentScript(void);
/*Ejecuta el script, si el script no ha sido cargado lo carga; soporta llamadas
recursivas a los scripts.*/
int ROBEL_execute_script(char *name);
/*Realiza el salto condicional; modifica la ejecución del script si la condición es
satisfecha.*/
void ROBEL_if_command(ScriptInst *Script);
#endif
68
Descripción de la representación simbólica del mundo
(limit_area LII 0.00 0.00 0.00 77.00 74.50 77.00 74.50 0.00)
(door LII nowhere 6.42 -.6)
(reference-point LII 10.0 10.0)
(reference-point LII 60.0 10.0)
(reference-point LII 20.0 50.0)
(reference-point LII 60.0 50.0)
(polygon object LII mesa1 1.50 22.90 1.50 30.50 32.00 30.50 32.00 22.90)
(polygon object LII mesa2 1.50 31.50 1.50 61.40 8.90 61.40 8.90 31.50)
69
Descripción de la representación simbólica del mundo
(polygon object LII mesa3 6.40 68.20 6.40 75.50 36.40 75.50 36.40 68.20)
(polygon object LII mesa4 42.00 68.20 42.00 75.50 73.00 75.50 73.00 68.20)
(polygon object LII mesa5 65.40 31.20 65.40 61.60 73.00 61.60 73.00 31.20)
(polygon object LII mesa6 42.70 22.90 42.70 30.50 73.00 30.50 73.00 22.90)
(polygon object LII mesa7 36.50 45.50 36.50 74.30 42.50 74.30 42.50 45.50)
(polygon object LII est1 6.40 67.50 1.50 67.50 1.50 75.00 6.40 75.00)
(polygon object LII est2 65.40 66.30 73.00 66.30 73.00 61.60 65.40 61.60)
(polygon door LII 65.40 1.50 65.40 3.20 74.50 3.20 74.50 1.50)
(polygon wall LII pared1 0.00 0.00 0.00 1.50 74.50 1.50 74.50 0.00)
(polygon wall LII pared2 0.00 0.00 0.00 77.00 1.50 77.00 1.50 0.00)
(polygon wall LII pared3 0.00 75.50 0.00 77.00 74.50 77.00 74.50 75.50)
(polygon wall LII pared4 74.50 9.00 73.00 9.00 73.00 77.00 74.50 77.00)
70
Programas en ROBEL
71
Programas en ROBEL
72
Bibliografía
5 Bibliografía
• R.C. Arkin and R. Murphy, "Autonomous Navigation in a
Manufacturing Environment.", IEEE Transaction on Robotics and
Automation 6(4): pp. 445-452, 1990.
• BeeSoft, “User’s guide and Software Reference”, 1997, Real World
Interface, Inc.
• Chen S., “Quicktime VR—An Image-Based Approach to virtual
Enviroment Navigation”, Proc. SIGGRAPH ’95, pp. 29-38, Aug. 1995
• Debevec P., “Pursuing Reality with Image-Based Modeling, Rendering,
and Lighting”, Second Workshop on 3D Structure from Multiple Image
of Large-scale Environments, June 2000.
• Dersch H, http://www.fh-furtwangen.de/~dersch.
• Watson Des, “High-Level Languages and Their compilers”, 1989,
Wokingham, England, Addison-Wesley.
• Froufe A, “Java 2 Manual de usuario y tutorial”, 2000, Alfaomega.
• Giarratano, J., and Riley, G. “Expert Systems: Principles and
Programming”, 3rd Edition, Boston, PWS Publishing Company, 1998.
• Gradecki Joe, “Realidad Virtual Construcción de proyectos”, 1995,
PCVR Magazine.
• Hernandez E, Vázquez G, “Interfaz grafica 3D para similar y controlar
robots móviles usando realidad virtual”, 2002, México.
• Ingermar J. Cox & Gordon T. Wilfong, “Autonomous Robot Vehicles”,
1990, Springer-Verlag.
• Latombe, Jean Claude, “Robot motion planning”, 1991, Kluwer
Academic Publishers.
• McAllister, Nyland Popescu, Lastra McCue, “Real Time Rendering of
Real World Enviroments”, Rendering Techniques ’99 Proc. of
Eurographics Workshop o Rendering.
73
Bibliografía
74