Vous êtes sur la page 1sur 8

DISA UPV ROBTICA

Relaciones Espaciales en Robtica - 1




Departamento de Ingeniera de Sistemas y Automtica
Universidad Politcnica de Valencia






FACULTAD DE INFORMTICA

ROBTICA








PRCTICA
Relaciones Espaciales
En Robtica.
Aplicacin en el simulador
VirtualRobot


Martin Mellado Arteche

Noviembre, 2007



DISA UPV ROBTICA
Relaciones Espaciales en Robtica - 2

1. Introduccin

En robtica se necesita representar localizaciones (posiciones y orientaciones) de objetos, lo
que normalmente se realiza mediante la definicin de sistemas de coordenadas (frames) y el
uso de transformaciones que significan la relacin entre estos sistemas. La fijacin de sistemas
de coordenadas solidarios con los objetos permite conocer la posicin relativa de los primeros
a partir del estudio de las situaciones de sus sistemas asociados. Se utiliza lgebra vectorial y
matricial para desarrollar un mtodo sistemtico y generalizado para describir y representar la
localizacin de los objetos con respecto a un sistema de coordenadas de referencia fijo.

El problema geomtrico de conocer la posicin y orientacin de un objeto en el espacio se
reduce a encontrar una matriz de transformacin que relacione el sistema de coordenadas
ligado al objeto con el sistema de coordenadas de referencia. Se utilizan vectores para
describir posiciones y matrices de rotacin 3x3 para describir las orientaciones de los objetos
con respecto al sistema de referencia. Las matrices de transformacin homogneas 4x4
representan de una manera global posicin y orientacin, introduciendo el concepto de
coordenadas homogneas. La gran ventaja de la representacin matricial es la universalidad
algortmica para desarrollar tanto los modelos geomtricos como las ecuaciones cinemticas y
dinmicas de un brazo robot.

El objetivo de esta prctica es practicar con aspectos de las transformaciones homogneas
explicados en las clases de teora, principalmente en sus conversiones a otras formas de
representar localizaciones, como los ngulos de Euler. Para ello se utilizar la programacin en
Visual C++mediante un proyecto ya desarrollado en el que se deben remplazar las rutinas
suministradas por nuevas rutinas a implementar en la prctica. Finalmente, se ver el uso de las
localizaciones en sus diferentes formas de representacin en el simulador VirtualRobot Simulator.


2. Proyecto desarrollado

2.1. Ejecucin del proyecto

Se parte de un proyecto Visual C++denominado practica y una serie de libreras (VRAux) que
se suministran con el mismo y cuya documentacin se encuentra accesible desde VRDocs.
Para comenzar el trabajo se debe abrir el fichero del proyecto practica.dsw (normalmente en
C:\Archivos de programa\VIRTUALROBOT\VRS\SourceCode\Users\PracticaVRTransf ).

Compila y ejecuta el proyecto mediante la tecla F5, debiendo aparecer el siguiente dilogo:



Como se puede observar, el programa permite, mediante tres botones, verificar las
conversiones entre transformaciones homogneas y localizaciones usando ngulos de Euler de
los tipos 1, 2 y 3.

Pulsando en uno de estos botones, por ejemplo Prueba Euler 1, se entrar en el siguiente
dilogo:

DISA UPV ROBTICA
Relaciones Espaciales en Robtica - 3


En este dilogo se puede introducir una localizacin mediante los valores de translacin (X,Y,Z)
y de rotacin (alfa, beta, gama). Introduce unos valores, como por ejemplo (10,20,30) y
(40,50,60), tal como aparece en la figura, pulsando Ok. Se obtendr la matriz de
transformacin equivalente a dicha localizacin, siendo la siguiente:



Al pulsar OK, el programa generar de nuevo la localizacin con los ngulos de Euler
correspondientes, debiendo dar los mismos valores que los de la entrada inicial:



Prueba que el funcionamiento es correcto para los tres tipos de ngulos de Euler.

Nota:
Observa que al usuario del programa se le muestran los ngulos en grados, no en radianes.

2.2. Explicacin del proyecto

Este proyecto se implementa en el fichero practicaDlg.cpp que se encarga de gestionar las
funciones asociadas a cada uno de los tres botones existentes en la aplicacin. El cdigo
asociado a uno de los botones es el siguiente:
DISA UPV ROBTICA
Relaciones Espaciales en Robtica - 4



Bsicamente, este cdigo realiza lo siguiente:
Solicitar una localizacin de entrada con un tipo concreto de ngulos de Euler
Convertirla a transformacin homognea
Mostrar la transformacin homognea
Convertirla en localizacin con el mismo tipo de ngulos de Euler
Volver a generar una nueva transformacin homognea a partir de esta localizacin
Comparar las transformaciones homogneas
Mostrar la localizacin obtenida

Nota:
Para comparar dos localizaciones se deben comparar las transformaciones homogneas (con
cierta tolerancia), pero no lo ngulos de Euler que pueden ser diferentes para la misma
localizacin.

El programa usa las siguientes 6 funciones:
Euler1ToTransformation y TransformationToEuler1
Euler2ToTransformation y TransformationToEuler2
Euler3ToTransformation y TransformationToEuler3

Estas funciones, cuya implementacin se encuentra en el fichero trabajo.cpp, realizan una
llamada a funciones de nombre casi similar, disponibles en la librera VRTransf, que resuelven
las conversiones en ambos sentidos. Por ejemplo, las funciones para el caso de ngulos de
Euler de tipo 1 son:




El objetivo de la prctica es re-implementar estas funciones con conversiones de matrices de
transformacin homognea a localizaciones con ngulos de Euler de los tres tipos as como en
sentido contrario.

Nota:
La funcin TransformationToEuler1 ( 2, 3) debe devolver RET_OK o RET_ERROR, no as la
funcin Euler1ToTransformation ( 2, 3).


DISA UPV ROBTICA
Relaciones Espaciales en Robtica - 5
3. Implementacin de conversiones entre localizacin y transformacin

3.1. Conversin entre localizacin con ngulos de Euler 2 y transformacin homognea

Realiza las siguientes tareas:
Segn el algoritmo de conversin visto en clase de teora, implementa la funcin
Euler2ToTransformation
Verifica el correcto funcionamiento de dicha rutina (para los mismos datos de entrada en
ngulos de Euler de tipo 2 debe generar la misma transformacin que en la implementacin
anterior).
Segn el algoritmo de conversin visto en clase de teora, implementa la funcin
TransformationToEuler2
Verifica el correcto funcionamiento de dicha rutina (para unos datos de entrada en ngulos
de Euler de tipo 2 se deben volver a generar estos mismos datos).

Notas:
o No olvides eliminar la lnea correspondiente tal como sugiere el comentario.
o Al final de esta seccin se presentan diferentes sugerencias para la implementacin.

3.2. Conversin entre localizacin con ngulos de Euler 1 y transformacin homognea

Realiza las siguientes tareas:
Segn el algoritmo de conversin visto en clase de teora, implementa la funcin
Euler1ToTransformation. Verifica el correcto funcionamiento de dicha rutina
Segn el algoritmo de conversin visto en clase de teora, implementa la funcin
TransformationToEuler1. Verifica el correcto funcionamiento de dicha rutina

3.3. Conversin entre localizacin con ngulos de Euler 3 y transformacin homognea

Realiza las siguientes tareas:
Segn el algoritmo de conversin visto en clase de teora, implementa la funcin
Euler3ToTransformation. Verifica el correcto funcionamiento de dicha rutina
Segn el algoritmo de conversin visto en clase de teora, implementa la funcin
TransformationToEuler3. Verifica el correcto funcionamiento de dicha rutina

Sugerencias:
Normalmente tendrs que usar funciones trigonomtricas como si n, cos y t an,
exportadas por la librera estndar de C math.h que ya est incluida en el proyecto.
Estas funciones trabajan en radianes. Para convertir de grados a radianes y viceversa,
puedes usar la librera de VirtualRobot VRMaths (tambin incluida en el proyecto) que tiene
definidas las siguientes constantes:
/ * Def i ni t i ons - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#def i ne EPSI LON 1E- 12
#def i ne PI 3. 14159265358979323846264338327950288419716939937511
#def i ne HALF_PI ( PI / 2. 0)
#def i ne PI 2 ( PI *2. 0)
#def i ne DEG_TO_RAD ( PI / 180. 0)
#def i ne RAD_TO_DEG ( 180. 0/ PI )
#def i ne ROOT_OF_2 1. 4142135623730950488016887242097
#def i ne ROOT_OF_3 1. 73205080756887729352744634150587
De esta forma, sen(45) se obtiene con si n( 45. 0 * DEG_TO_RAD)
La librera VRMaths tambin suministra las siguientes funciones trigonomtricas:

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ / Tr i gonomet r i c Funct i ons

ext er n " C" __decl spec( dl l i mpor t ) doubl e vr At an2( doubl e y, doubl e x) ;
/ / t hi s f unct i on comput es ar ct an( y/ x) accor di ng t o quadr ant
/ / t he val ue i s r et ur ned i n r adi ans


DISA UPV ROBTICA
Relaciones Espaciales en Robtica - 6
ext er n " C" __decl spec( dl l i mpor t ) i nt vr I nvSi n( doubl e si nx, doubl e *angl e) ;
/ / t hi s f unct i on comput es posi t i ve sol ut i on of i nver se Si n
/ / t he angl e i s consi der ed i n r adi ans

ext er n " C" __decl spec( dl l i mpor t ) i nt vr I nvCos( doubl e cosx, doubl e *angl e) ;
/ / t hi s f unct i on comput es posi t i ve sol ut i on of i nver se Cos
/ / t he angl e i s consi der ed i n r adi ans

Nota que estas dos ltimas funciones tienen dos parmetros (uno de entrada y otro de
salida) y que pueden devolver error si el valor de entrada no es el adecuado.
La librera de VirtualRobot VRTransf (tambin incluida en el proyecto) de donde se han
tomado las funciones de partida, puede tener otras funciones que te sean tiles para
realizar tu solucin. En esta librera, ten en cuenta que:
o Cuando se utiliza el vector location[6] representa:
location[0], location[1], location[2] es x,y,z
location[3], location[4], location[5] es alfa,beta,gama
o Cuando se utiliza la matriz T[4][4] representa:
T[0][0] es n
x
T[0][1] es s
x
T[0][2] es a
x
T[0][3] es x
T[1][0] es n
y
T[1][1] es s
y
T[1][2] es a
y
T[1][3] es y
T[2][0] es n
z
T[2][1] es s
z
T[2][2] es a
z
T[2][3] es z
T[3][0] =0 T[3][1] =0 T[3][2] =0 T[3][3] =1
Un olvido habitual que no hay que hacer en la implementacin es olvidarse de la posicin.
En el apndice A estn desarrolladas las matrices de rotacin para los tres tipos de
ngulos de Euler.


4. Utilizacin de localizaciones en el simulador VRS

Para poder gobernar VRS mediante VREAL en este proyecto debes realizar las siguientes
operaciones:
En el fichero practicaDlg.cpp debes incluir VReal.h
En el proyecto debes incluir VReal.lib
Debes asegurarte de inicializar la comunicacin con VRS mediante al I ni t i al i ze en
OnI ni t Di al og y de cerrarla con al Cl ose en OnOk y en OnCancel .
Arranca VRS

4.1. Localizacin de figuras en VRS

Revisa la seccin 19 de la documentacin de VREAL. Comprueba que:
con funciones del tipo alAddFrame, alAddPoint, alAddBox, alAddCone, etc se pueden
generar figuras en VRS (de la misma forma que hace el VRMEditor)
con la funcin alSetFigureTransformation se puede aplicar una transformacin a una figura.

Ejercicio 1:
Modifica el programa para que:
Cuando se pulse el botn de ngulos de Euler tipo 1, se cree un prisma (elige las
dimensiones y colores libremente) y se localice segn los datos introducidos.
Para los otros botones, aplica la transformacin generada a otras dos figuras diferentes.
Al cerrar el programa se deben borrar las figuras.

4.2. Localizacin de objetos en VRS

Revisa la seccin 17 de la documentacin de VREAL. Comprueba que:
con la funcin alSetObjectLocation se puede fijar la localizacin de un objeto.
con la funcin alSetPartLocation se puede fijar la localizacin de una pieza.

Ejercicio 2:
Modifica el programa para que:
Se cargue un entorno al principio del programa
DISA UPV ROBTICA
Relaciones Espaciales en Robtica - 7
Cuando se pulse el botn de ngulos de Euler tipo 1, se modifique la localizacin de uno de
los objetos existentes en el entorno.
Para otro botn, modifica la localizacin de una pieza.
Al cerrar el programa se debe cerrar el entorno.

4.3. Movimiento de un robot en VRS

Tal como se define en VREAL (seccin 14, options), la funcin alMoveRobot permite definir la
localizacin de movimiento del robot mediante:
6 parmetros reales (x,y,z,alpha,beta,gamma)
Un vector de 6 parmetros reales (x,y,z,alpha,beta,gamma)
Una matriz 4x4 (transformacin homognea)

Ejercicio 3:
Modifica el programa anterior para que:
Se cargue un robot al principio del programa
Se indiquen movimientos al robot de estas 3 formas.

Ejercicio 4:
Modifica el programa para que, a partir de una localizacin introducida de cualquiera de estas
formas, el robot realice una aproximacin a esta localizacin (distancia 100 en su eje director) y
posteriormente, en lnea recta, se mueva a esta localizacin.


5. Ampliacin de la prctica

5.1. Uso de la clase CTransformation

La librera VRTransf incluye tambin la definicin de la clase CTransformation con atributos
propios y mtodos basados en las funciones disponibles en esta librera. Investiga cmo
funciona la clase implementando alguno de los ejemplos anteriores con el uso de esta clase.

DISA UPV ROBTICA
Relaciones Espaciales en Robtica - 8
Apndice A. ngulos de Euler

A. 1. ngulos de Euler Tipo 1

Los ngulos de Euler de tipo 1, tambin denominado giroscpicos o ZXZ, son las rotaciones
alrededor de los siguientes ejes:
1. Rotacin en Z de ngulo (R
z,

)
2. Rotacin en U de ngulo (R
u,

)
3. Rotacin en W de ngulo (R
w,

)
La matriz de rotacin resultante es:
R
,,
=R
z,

R
u,

R
w,



1 0 0
0 cos sin
0 sin cos



cos sin 0
sin cos 0
0 0 1



1 0 0
0 cos sin
0 sin cos
=
=


+

cos cos sin sin sin
sin cos sin sin cos cos cos sin cos cos cos sin
sin sin cos cos sin sin cos sin cos sin cos cos


A. 2. ngulos de Euler Tipo 2

Los ngulos de Euler de tipo 2, tambin denominado ZYZ, y utilizados por ejemplo por los
robots de la marca ABB, son las siguientes rotaciones alrededor de los ejes principales de los
sistemas fijo y mvil:
1. Rotacin en Z de ngulo (R
z,

)
2. Rotacin en V de ngulo (R
v,

)
3. Rotacin en W de ngulo (R
w,

)
La matriz de rotacin resultante es:
R
,,
=R
z,

R
v,

R
w,



1 0 0
0 cos sin
0 sin cos



cos 0 sin
0 1 0
sin 0 cos



1 0 0
0 cos sin
0 sin cos
=
=


+

cos sin sin cos sin
sin sin sin cos sin cos cos sin cos cos cos sin
sin cos cos sin sin cos cos sin sin cos cos cos


A. 3. ngulos de Euler Tipo 3

Los ngulos de Euler de tipo 3, utilizados en aeronutica con los nombres desviacin,
elevacin y giro (por lo que se denominan RPY de Roll-Yaw-Pitch) son las siguientes
rotaciones alrededor de los ejes principales del sistema fijo:
1. Rotacin en X de ngulo (R
x,

) ngulo de desviacin (yaw)


2. Rotacin en Y de ngulo (R
y,

) ngulo de elevacin (pitch)


3. Rotacin en Z de ngulo (R
z,

) ngulo de giro (roll)


La matriz de rotacin resultante es:
R
,,
=R
z,

R
y,

R
x,



1 0 0
0 cos sin
0 sin cos



cos 0 sin
0 1 0
sin 0 cos



cos sin 0
sin cos 0
0 0 1
=
=


+
+
cos cos sin cos sin
sin cos cos sin sin cos cos sin sin sin cos sin
sin sin cos sin cos cos sin sin sin cos cos cos

Vous aimerez peut-être aussi