Está en la página 1de 30

CAPÍTULO 1: REPRESENTACIÓN DEL MOVIMIENTO EN 3D

Un requerimiento fundamental en robótica es representar la posición y orientación de los


objetos dentro de un entorno. Por eso la necesidad de representar la posición y orientación del
extremo del robot respecto a una base, entonces se debe estudiar el movimiento del cuerpo
rígido (es decir del movimiento euclidiano).

1.1.- ESPACIO EUCLIDIANO 3D (E3).


Está representado por una terna: x1, x2, x3:

 x1 
=x = x2  [ x1 x3 ]
T
x2 ( 1)
 x3 
Cuando x1, x2, x3 coinciden con X,Y,Z respectivamente, se tienen las coordenadas cartesianas:

X 
x =  Y 
 Z 

u = [u 1 u3 ] v = [v 1 v3 ]
T T
En este espacio se definen vectores u2 y v2 y
operaciones:

a) Producto interno: u ⋅ v= u1v1 + u2 v2 + u3 v3


b) Producto externo: [u X ] v
u× v = con

 0 −u3 u2 
=[u X ]  u3 0 −u1  ( 2)
 −u2 u1 0 
Donde [u X ] es la matriz skew symmetric de u.

Nota 1.- Definición de matriz skew symmetric:

Matriz skew symmetric Ω es aquella que cumple con

{Ω ∈ ℜ 3x3
/ − Ω = ΩT } ( 3)

Algunas de sus propiedades:

1.- Es una matriz singular, es decir: su determinante es cero: , es decir: det ([u X ]) = 0

1
2.- Sus valores propios son: 0, ±αj.

Nota 2: en Matlab, el comando “skew()” entrega una matriz skew symmetric, “vex()”, devuelve
el vector que la creó.

Ejercicio 1

0 3 −2 

A =  −3 0 7 
Probar la propiedad ( 3) en la matriz
 2 −7 0 
Solución.

Se ve que esta matriz es de la forma ( 2), además se debe probar que AT = − A :

 0 −3 2   0 −3 2 
=AT  3 0= −7=  −A

 3 0 −7 
 
 −2 7 0   −2 7 0 
Donde se comprueba que ambas matrices son iguales.

1.2.- MOVIMIENTO DEL CUERPO RÍGIDO.


No es necesario especificar el movimiento de todos los puntos del cuerpo, sinó solamente de
uno y de su sistema de coordenadas asociado.

Ejemplo:

z
p
z
0 d
x x y q
y

Figura 1

Existen dos requisitos de un cuerpo rígido:

1.- Si X(t) y Y(t) son coordenadas de dos puntos p, q, en el objeto respectivamente, la distancia
d entre ellos es constante:

X (t ) − Y (t ) = d= cte, ∀t ∈ ℜ
2.- Se requiere que el movimiento del cuerpo rígido, además de conservar distancias, preserve
orientaciones (es decir ángulos entre vectores). Esto es llamado el espacio euclidiano especial
(SE(3)).

2
1.3.- LOCALIZACIÓN DE UN CUERPO RÍGIDO.

w
w
tc XC
Rc
ZC

YC
Zw
Xc
0w Xw
Xw
Yw M

Figura 2

Cuando la cámara (cuerpo rígido) se mueve, también se mueve su sistema de coordenadas


(frame) asociado X c , Yc , Z c (figura 2). La posición y orientación del sistema X c , Yc , Z c
w
respecto a X w , Yw , Z w está representado por t c , w R c respectivamente.

Sea M un punto de coordenadas Xc en el sistema de coordenadas de la cámara, sus


coordenadas X w en el sistema de coordenadas del mundo, está dado por:

=
Xw w
R c Xc + w t c ( 4)

Esta ecuación es la llamada “ecuación de transformación rígida”, donde


X w = [ xw zw ] X c = [ xc zc ]
T T
yw y yc .

EJEMPLOS

Ejemplo 1.- Hallar la nueva posición P1=(2,1,3) respecto a su base si su sistema de coordenadas
asociado ha girado 90° en el eje Y.

a) Solución gráfica:
z

(2,1,3)

Figura 3.- Ubicación de (2,1,3) en el frame base

3
z

(2,1,3) x
(3,1,-2)

Figura 4.- Ubicación de (2,1,3) en el frame base luego de rotar 90° en Y

b.- Solución matemática

 0 0 1 0 
rot ( y,90°=
) 0 R=  0 1 0 0
t1 = 0 
1  ,
 −1 0 0  0 

=
p' 0
R1p + 0 t1

3  0 0 1   2  0 
=1  0 1 0  1  + 0 
      
 −2   −1 0 0   3  0 

Ejemplo 2.- Extender el ejemplo 1 para el caso en que el sistema asociado se ha trasladado
(2,0,0) y luego ha rotado 90° sobre el eje Y en el sistema resultante.

4
z

(4,1,3)
(2,1,3)

x y

Figura 5.-Sistema asociado desplazado (2,0,0)

x y

(2,1,3)
(5,1,-2) x

Figura 6.- Rotación de 90° luego de trasladar (2,0,0)

Solución matemática:

=
p '' 0
R1p + 0 t1

5  0 0 1 2 2


=1  0 1 0  1  + 0 
      
 −2   −1 0 0   3   0 

5
1.4.- MOVIMIENTO ROTACIONAL Y SU REPRESENTACIÓN.
Está representado por una matriz ortonormal R de orden 3x3:

 r11 r12 r13 


=R  r21 r22 r23  ∈ SO(3) ( 5)
 r31 r32 r33 
Donde SO(3) es el grupo especial ortogonal, describe la orientación mutua de dos sistemas de
coordenadas. Cumple con:

- det(R ) = 1 , (sistema dextrógiro), se interpreta como: “un vector multiplicado por R,


no cambia de longitud”
- R −1 = R T , como consecuencia: R=
T
=
R RR T
I donde I es la matriz identidad
(rotación nula). Nota: en Matlab: “eye(3)”.
- Las columnas y filas de R tienen longitud 1 y son mutuamente ortogonales (son
vectores ortonormales). O sea que si R = [ r1 r2 r3 ] ( r1 , r2 , r3 : vectores columna),
se cumple con:

r1=
T
r1 r2=
T
r2 r3=
T
r3 1
r1=
T
r2 r2=
T
r3 r2=
T
r3 0 ( 6)

[ r1 ×] r2= r3 ; [ r2 ×] r3= r1 ; [ r3 ×] r1= r2


Las relaciones ( 6) también se cumplen si se considera a R formado por vectores fila
r1 , r2 , r3 :

 r1 
R =  r2 
 r3 

1.4.1.- RELACIÓN ENTRE FRAMES.


Si se considera el frame A (representado por sus vectores unitarios (iA , j A , k A ) ) como frame
inicial, y el frame B (iB , jB , k B ) como frame final (Figura 7).

A
RB Z
Z
kB
kA 0B Y
0A Y X jB
iB
X jA
iA
6
Figura 7.- Relación entre los frames A y B a través de la rotación R
A
R B se entiende como: “el sistema A ha rotado hasta alcanzar la orientación del sistema B”, o
“Rotación del sistema B respecto al sistema A”, que en función de sus respectivos vectores
unitarios, se puede considerar:

 iA ⋅ iB i A ⋅ jB iA ⋅ k B 
A  j ⋅i
RB = j A ⋅ jB j A ⋅ k B  ( 7)
 A B
 k A ⋅ iB k A ⋅ jB k A ⋅ k B 

1.4.2.- ROTACIONES BÁSICAS.


a) Rotación del sistema B un ángulo θ alrededor del eje Z sobre un sistema A:

Los ejes Z de ambos sistemas coinciden, una vista horizontal del plano XY se vería como en la
Figura 8:

YA
YB
θ
jA XB
jB iB
θ
kA k iA
B XA

Figura 8.- vista horizontal del giro del sistema B sobre el sistema A

Aplicando la expresión ( 7) y desarrollando cada uno de sus elementos:

k A ⋅ kB =
1

k A ⋅ iB =k A ⋅ jB =iA ⋅ k B = j A ⋅ k B =0

=
iA ⋅ iB iB cos(θ ) cos(θ )
iA =

=
j A ⋅ jB jB cos(θ ) cos(θ )
jA =

i A ⋅ jB = i A jB cos(θ + 90°) =− sin(θ )

=j A ⋅ iB =
j A iB cos(θ − 90°) sin(θ )
Reemplazando resultados en la matriz de rotación:

7
cos(θ ) − sin(θ ) 0 
A
R B =  sin(θ ) cos(θ ) 0  ( 8)
 0 0 1 
Del mismo modo se puede deducir las rotaciones sobre los ejes X e Y, que se resumen en la
siguiente tabla:

Tabla 1.- Expresión de R según el eje de rotación

Eje de rotación
X Y Z
1 0 0   cos(θ ) 0 sin(θ )  cos(θ ) − sin(θ ) 0 
R= 0 cos(θ ) − sin(θ )   0 1 0   sin(θ ) cos(θ ) 0 
    
0 sin(θ ) cos(θ )   − sin(θ ) 0 cos(θ )   0 0 1 

1.4.3.- INTERPRETACIÓN GRÁFICA Y MATEMÁTICA DE UNA ROTACIÓN BÁSICA.


La rotación R de un ángulo de 90° alrededor del eje X está dado por:

1 0 0 
rot ( x,90°) = R = 0 0 −1 ( 9)
0 1 0 

Y representado gráficamente por la Figura 9:

Z R Y'

Y Z'

X X'

Figura 9

Donde las columnas de R se interpretan como:

1 
0 
  El nuevo eje X en mismo eje X anterior.
0 

0 
0 
  El nuevo eje Y en eje Z anterior.
1 

8
0
 −1
  El nuevo eje Z en la dirección opuesta del eje Y anterior.
 0 

1.5.- MATRICES Y COORDENADAS HOMOGÉNEAS.


1.5.1.- MATRICES HOMOGÉNEAS.
Herramienta útil para transformaciones espaciales, representa una rotación y una traslación de
manera conjunta. Es una matriz 4x4 que pertenece al grupo euclídeo especial ( H ∈ SE (3) ) y
se construye de la siguiente manera:

R t ( 10)
H= T
0 1
0 = [ 0 0 0]
T
Donde es el vector nulo.

H representa una traslación seguida de una rotación en el sistema resultante. El vector de


traslación queda como un vector 4x1 en el sistema euclídeo tridimensional:

t x 
t 
t =  y 
tz 
 
1
1.5.2.- COORDENADAS HOMOGÉNEAS.
p = [x z]
T
Definición: son coordenadas homogéneas de y , el vector:

 wx 
 wy  ( 11)
p =  
 wz 
 
w
Donde en robótica, w=1.

Propiedad: Si p es homogéneo, entonces se cumple que p = λ p con λ≠0


La ecuación de transformación rígida ( 4) en coordenadas homogéneas queda:

 w Rc w tc   ( 12)

Xw =  T  Xc
 0 1 
Con  = [x
X yw zw 1] y X
T
 = [ x y z 1]T
w w c c c c

La inversa de una matriz homogénea es:

9
 RT −RT t  ( 13)
H −1 =  T 
0 1 

1.5.3.- MOVIMIENTO DE TRASLACIÓN PURA


En este caso la rotación es una rotación nula:

1 0 0 tx  ( 14)
0 1 0 t y 
H=
0 0 1 tz 
 
0 0 0 1

1.5.4.- MOVIMIENTO DE ROTACIÓN PURA


Para rotaciones básicas, se muestra su expresión para cada uno de los ejes en la siguiente
Tabla 2:

Tabla 2.- Expresión de H según el eje de rotación

Eje de rotación
X Y Z
1 0 0 0  cos(θ ) 0 sin(θ )
0 cos(θ ) − sin(θ ) 0 0
H 0 cos(θ ) − sin(θ ) 0   0 1 0 0   sin(θ ) cos(θ ) 0 0 
  
0 sin(θ ) cos(θ ) 0  − sin(θ ) 0 cos(θ ) 0   0 0 1 0
     
0 0 0 1  0 0 0 1  0 0 0 1

Ejemplo 3.-

a.- Hallar la posición y orientación relativa del sistema del mundo respecto a la cámara (Figura
10).

b.- Hallar la posición y orientación contraria (la cámara respecto al mundo)

0C
ZC

XC YC
5

Zw
Yw
10

0w Xw

Figura 10

10
Solución a)
c
Primero se hallará la rotación Rw :

=
c
R w rot ( x,90°) ⋅ rot ( z ,90°)

1 0 0  0 −1 0  0 −1 0 
c 0 0 −1 1 0 0  =
Rw = 0 0 −1
    
0 1 0  0 0 1  1 0 0 

No es la única manera de obtener esta rotación:

=
R w rot ( y, −90°) ⋅ rot ( x,90°)
c

0 0 −1 1 0 0  0 −1 0 
=
c
R w 0 1 0  0 0 =−1 0 0 −1
 
1 0 0  0 1 0  1 0 0 

t w = [10 5 0]
c T

 c Rw c
tw 
Conformamos la matriz homogénea según ( 10)
c
Hw =  T 
 0 1 

0 −1 0 10 
0 0 −1 5 
c
Hw =  
1 0 0 0 
 
0 0 0 1 
Solución b)

Aplicamos la inversa de la matriz homogénea:


w
H c = c H −w1

−1 c R Tw − c R Tw c t w 
c
H = T
w 
 0 1 

 0 0 1
c
R =  −1 0 0 
T
w

 0 −1 0 

11
 0 0 1  10   0 
− R c
t =−  −1 0 0   5  =10 
T c
w w

 0 −1 0   0   5 

Conformamos la matriz homogénea solicitada:

0 0 1 0
 −1 0 0 10 
w
Hc = 
 0 −1 0 5
 
0 0 0 1
Otra forma de solución: la solución anterior no es la única manera, p.e.:

=
w
R c rot ( y,90°) ⋅ rot ( z , −90°)

 0 0 1  0 1 0  0 0 1
w  0 1 0   −1 0 0  =
Rc =  −1 0 0 
    
 −1 0 0   0 0 1   0 −1 0 

t c = [ 0 10 5]
w T

Conformamos la matriz homogénea:

0 0 1 0
 −1 0 0 10 
w
Hc = 
 0 −1 0 5
 
0 0 0 1
w
Que es igual al resultado anterior de H c aplicando su inversa de c H w .

12
1.6.- MOVIMIENTOS COMPUESTOS.
REGLA:

Si la transformación se realiza en el sistema fijo, se pre-multiplica.

Si la transformación se realiza en el sistema resultante o móvil (es decir respecto a la última


localización del sistema transformado), se post-multiplica.

Ejemplo 4

Interpretar: =
T rot ( z , −90°) * trasl (0, a, 0)
Solución a): considerando todo en el sistema fijo:

Z Z'
Z ''

a Y Y'
X '' a

X X'
Y ''
Figura 11

Solución b) considerando movimientos en el sistema resultante:

Z Z'
Z ''

X' Y
X '' a
Y'
Y '' X
Figura 12

Ejemplo 5

Interpretar la siguiente transformación:

=
T [rot ( z , −90°) * trasl (0, a, 0)]* rot ( y, −90°)
Solución a) La parte en paréntesis corresponde al Ejemplo 4 , considerar el siguiente
movimiento en el sistema resultante:

13
Z
Z '' X '''

Y
X '' a
Z '''
Y '' X
Y '''
Figura 13

Solución b) todos los movimientos son en el sistema fijo:

Z X' X ''
X '''
Z' Z ''
a Y'
a Y ''
Y
Y ''' X Z '''

Figura 14

Solución c) Lo de paréntesis y la última transformación: sistema fijo, luego lo de dentro del


paréntesis: transformaciones en sistema resultante:

Z X'
X ''' X ''
Z'
Z '' Y '
a
Y '' Y
Y ''' X Z '''

Figura 15

1.7.- COMPOSICIÓN DE ROTACIONES O TRANSFORMACIONES


Propiedad: No es conmutativa

=
0
R2 0
R1 1 R 2 ≠ 1 R 2 0 R1 ( 15)

Ejemplos:

1.- Suponer que R representa una rotación de θ alrededor de Y seguido de una rotación de φ
alrededor de Z (sistema resultante):

=R rot ( y, θ ) ⋅ rot ( z , φ )

14
2.- Obtener la matriz de transformación que representa un giro de 90° en X, luego un giro de
180° en Y (sistema fijo), y luego un giro de -90° en Y en el sistema resultante

=T [rot ( y,180°) ⋅ rot ( x,90°)] ⋅ rot ( y, −90°)

Ejemplo 6.-

Se tiene la matriz homogénea:

 −1 0 0 0.4 
 0 −1 0 0 
0
H3 = 
0 0 1 0.3
 
0 0 0 1 
0
a.- Graficar los sistemas X 0Y0 Z 0 y X 3Y3 Z 3 según la transformación H3 .
0
b.- Hallar las rotaciones básicas que generan R3 .
Solución a)

 −1 0 0  0.4 
=
0
R 3  0 −1 0  y
0
t 3 =  0 
 0 0 1   0.3

Z3

0.4 X3

Y3
0.3
Z0 0
Y0 R3
X0
Figura 16

Solución b)

=
0
R 3 rot ( z ,90°) ⋅ rot ( z ,90°)
0 −1 0  0 −1 0   −1 0 0 
=
0
R 3 1 0 0  1 0 =0   0 −1 0 
0 0 1  0 0 1   0 0 1 

=
0
R 3 rot ( z ,180°)

15
Ejemplo 7.-

Se tiene las siguientes transformaciones consecutivas: T1: traslación (6,2,3), seguido de una
rotación de -90° en Y; T2: rotación de 180° en Z; T3: traslación (-2,-1,4), seguido de una rotación
de 90° en Z.

a.- Graficar las transformaciones X 1Y1Z1 , X 2Y2 Z 2 , X 3Y3 Z 3 , según la base X 0Y0 Z 0 .
0
b.- Indicar y desarrollar las rotaciones básicas realizadas para llegar a R3 .
0
c.- Conforme la matriz H3 .
Solución a)

Y3
Z3
X1
0 X3 2
R3
1 Z1
Y1
4 Z2
Y2 X 3
2

Z0
Y0
X0 6 2

Figura 17

Solución b)
0
=
R 3 rot ( y, −90°) ⋅ rot ( z , −90°)
0 0 −1  0 1 0   0 0 −1
0 1 0   −1 0 0  =
R3 =  
  −1 0 0 
0
 
1 0 0   0 0 1   0 1 0 

Otra opción:

=
R 3 rot ( z , −90°) ⋅ rot ( x,90°)
0

 0 1 0  1 0 0   0 0 −1
0
R 3 = −1 0 0  0 0 −1 = −1 0 0 
 0 0 1  0 1 0   0 1 0 

16
Solución c)

2
0
t 3 =  3 
 5 

0 0 −1 2 
 −1 0 0 3 
0
H3 = 
0 1 0 5
 
0 0 0 1

1.8.- REPRESENTACIÓN DE MATRICES DE ROTACIÓN


1.8.1.- ANGULOS ROLL, PITCH, YAW (RPY)
La rotación R solo de tres ángulos (ψ , θ , φ ) :

R = rot ( z , φ ) ⋅ rot ( y, θ ) ⋅ rot ( x,ψ )

cφ cθ cφ sθ sψ − sφ cψ cφ sθ cψ + sφ sψ 
R =  sφ cθ sφ sθ sψ + cφ cψ sφ sθ cψ − cφ sψ  ( 16)
 − sθ cθ sψ cθ cψ 

Paso de R a RPY:

φ = a tan 2(r21 , r11 )


( 17)
θ = a tan 2(−r31 , r322 + r332 )
ψ = a tan 2(r32 , r33 )

π π
Para θ∈ − ,
2 2
Nota 1: si θ = π / 2 , se tiene una singularidad
Nota 2: Mediante la representación de RPY, la posición y orientación se puede representar en
forma compacta mediante un vector 6x1:

17
x
 y
 
z ( 18)
X= 
ψ 
θ 
 
φ 
Nota 3: en Matlab, “tr2rpy()”, su contrario: “rpy2tr()”.

1.8.2.- REPRESENTACIÓN POR TRES ÁNGULOS.


1.8.2.1.- EULERIANOS.-
Movimientos en el mismo eje pero no sucesivos: XYX, XZX, YXY, YZY, ZXZ, ZYZ, el más usado:
ZYZ.

Nota 1: en Matlab existe el comando “tr2eul()” que transforma una rotación a la forma ZYZ, su
contrario: “eul2tr()”.

1.8.2.2.- CARDANIANOS.-
Movimientos en los tres ejes: XYZ, XZY, YZX, YXZ, ZXY, ZYX, el más usado: ZYX ( es decir: roll,
pitch, yaw).

1.8.3.- REPRESENTACIÓN POR DOS VECTORES.


Sólo se necesitan 2 vectores para describir la rotación, el tercer vector se obtiene por las
propiedades de R . Si

n
o

Figura 18

Donde: a: approach, o: orientation, n: normal, si:

 nx ox ax 
R =  n y oy a y  ó R = [n o a ] ( 19)
 nz oz az 
Entonces:
n= o × a ( 20)

18
1.8.3.1.- CONVENCIONES.
Cámara:
XC
ZC

YC

Figura 19

Robot móvil:

mov.
X
Z
Figura 20

Avión o barco:

X
roll

Y
yaw pitch
Z

Figura 21

1.8.4.- ÁNGULO Y EJE (PAR DE ROTACIÓN).


La rotación se realiza sobre un eje arbitrario k un ángulo theta:

Z k
θ
Y
X
Figura 22

19
 trace(R ) − 1  ( 21)
θ = a cos  
 2 

 r32 − r23 
1  
=k r − r ( 22)
2sin(θ )  
13 31

 r21 − r12 

Donde k = [k x ky k z ]T con 1 . Si θ = 0 o θ = π , no tienen sentido


k x2 + k y2 + k z2 =
(rotación nula) y k es arbitrario.

Nota 1: en Matlab existe: “tr2angvec()” y “rotvec()”.

Nota 2: El ángulo y eje de rotación se encuentra en los valores propios y vectores propios de
R:
- Vector k : vector propio correspondiente al valor propio la unidad.
- Ángulo θ : ángulo del número complejo de cualquiera de los dos otros valores propios.

Ejemplo 8

0.433 −0.4356 0.7891 


=  0.6597 −0.0474  , Hallar el ángulo y eje.
Si R  0.75
 −0.5 0.6124 0.6124 

Solución:

 0.433 + 0.6597 + 0.6124 − 1 


θ a=
cos   1.2105
 2 

0.6124 + 0.0474  0.3525


=k
1  0.7891
= + 0.5  0.6888
2sin(1.2105)   
 0.75 + 0.4356  0.6335

Solución alternativa:

[vectp valp ] = eig (R )

 0.6617 0.6617 0.3525


vectp = −0.1835 − 0.478i −0.1835 + 0.478 i 0.6888 
 
 0.168 + 0.52i −0.168 − 052i 0.6335
valp =[0.3526 + 0.935i 0.3526 − 0.935i 1]

20
Entonces:

0.3525
k = 0.6888 y=θ angle(0.3526 + 0.935
= i ) 1.2105
0.6335

1.8.4.1.- PASO DE ( k , θ ) a R
Se usa la fórmula de Rodrígues (Olinde Rodrigues, 1790):

( 23)
R =I + sin(θ ) [ k X ] + (1 − cos(θ )) [ k X ]
2

 0 −k z ky 
 
Con [ k X ]  k z
= 0 −k x 
 −k y kx 0 

1.8.5.- REPRESENTACIÓN DE RODRIGUES


La rotación se representa por un vector r de 3 elementos tal que:

r= θ ⋅ k ( 24)

con

θ= r ( 25)
r
k=
r

1.8.5.1.- PASO DE r A R
( 26)
[r ] [r ]
2

R =I + sin  r  X + (1 − cos(θ )) X
  r 2
r

Ejemplo 9

Suponer que R es generado por una rotación de 90° en Z, luego 30° en Y, luego 60° en X
(todos en el sistema resultante).

a.- Hallar su ángulo y eje.

b.- Hallar sus ángulos RPY en grados.

21
c.- En base al ángulo y eje hallado encontrar la rotación original mediante la fórmula de
Rodrígues.

d.- Hallar la representación de la rotación por Rodrígues

Solución a)

 0 −0.5 0.866 
= , 60°) 0.866 0.433 0.25 
R rot ( z ,90°) ⋅ rot ( y,30°) ⋅ rot ( x= 
 −0.5 0.75 0.433

 trace(R ) − 1 
=θ a cos  = =
 1.6378 93.84°
 2 
 0.75 − 0.25  0.2506 
 1   0.6846 
= k  = 0.866 + 0.5  
 2sin(1.6378)  
0.866 + 0.5 0.6846 

Solución b)

φ=
a tan 2(−0.866, 0) ⋅180 / π =
90°

( )
θ = a tan 2 −(−0.5), 0.752 + 0.4332 ⋅180 / π = 30°
ψ=
a tan 2(0.75, 0.433) ⋅180 / π =
60°

Solución c)

 0 −0.6846 0.6846 
I + sin(1.6378)  0.6846
R'= 0 −0.2506  +
 −0.6846 0.2506 0 
−0.6846 0.6846 
2
 0

(1 − cos(1.6378))  0.6846 0 −0.2506 
 −0.6846 0.2506 0 

 0 −0.5 0.866 
R ' = 0.866 0.433 0.25 

 −0.5 0.75 0.433

Solución d)

0.2506  0.4104 
r = θ ⋅ k = 1.6378 ⋅ 0.6846  = 1.1212 
0.6846  1.1212 

22
1.9.- REPRESENTACIÓN POR CUATERNIOS (William Hamilton, siglo 19)
1.9.1.- CUATERNIO
Es una extensión de los números complejos, poseen 3 cantidades imaginarias, está constituido
por cuatro elementos (q0 , q1 , q2 , q3 ) donde q0 es escalar y (q1 , q2 , q3 ) es vectorial:

Q = q0 + q1i + q2 j + q3 k ( 27)

Donde i 2 =j 2 =k 2 =i ⋅ j ⋅ k =−1

Un cuaternio también puede escribirse como:

=Q q0 q1 q2 q3 ] [ s
[= v] ( 28)

=
Donde s q=
0,v (q1 , q2 , q3 ) , con la restricción: q02 + q12 + q22 + q32 =
1

2.9.2.- RELACIÓN DEL CUATERNIO CON EL ÁNGULO Y EJE.


Una rotación R representada por θ y k también se puede expresar por un cuaternio Q de
la forma:

 θ  θ   ( 29)
=Q cos   sin   ⋅ k 
 2 2 

1.9.3.- VENTAJAS DEL USO DE CUATERNIOS


1.- Ya no se trabaja con cantidades trigonométricas.

2.- Util en procesos iterativos.

3.- Evita singularidades que se pueden presentar al trabajar con la representación RPY.

1.9.4.- PROPIEDADES.
1.9.4.1.- Cuaternio conjugado
Q* = [ q0 −q1 −q2 −q3 ] = [s −v ] ( 30)

( Q1 ⋅ Q 2 ) =Q*2 ⋅ Q1*
*

1.9.4.2.- PRODUCTO DE CUATERNIOS


Q1 ⋅ Q 2= ( s1 , v1 ) ⋅ ( s2 , v2 )= [ s1s2 − v1v2 , v1 × v2 + s1v2 + s2 v1 ] ( 31)

Nota: no es conmutativo.

1.9.4.3.- SUMA
Q1 + Q 2 =[ s1 + s2 , v1 + v2 ] ( 32)

1.9.4.4.- PRODUCTO POR UN ESCALAR


[ as av ]
a ⋅Q = ( 33)

23
1.9.4.5.- PRODUCTO POR SU CONJUGADO
Q ⋅ Q* = q02 + q12 + q22 + q32 ( 34)

1.9.4.6.- NORMA
Q = Q ⋅ Q* = q02 + q12 + q22 + q32 ( 35)

1.9.4.7.- INVERSO
Q* ( 36)
Q −1 = siempre que Q ≠ 0
Q
Si Q = 1 , entonces Q −1 = Q*

1.9.4.8.- DIVISIÓN
Q ( 37)
Si Q 2 = 1 , entonces=1
Q= −1
1Q 2 Q1Q*2
Q2

1.9.4.9.- NORMALIZACIÓN
Q ( 38)
QN = , entonces Q N = 1 “CUATERNIO UNITARIO”
Q

1.9.4.10.- CUATERNIO NULO (CUATERNIO IDENTIDAD)


Q = [1 0 0 0] ó Q = 1, 0 0 0 ( 39)
Significa que no hay rotación

Ejemplo 10

Obtener el cuaternio que representa una rotación de 60° alrededor del eje=
k [3 −2 1] .

Solución:

 3 3 1
=Q [cos(30°) )⋅k] 
sin(30°= −1 
 2 2 2

Nota: en Matlab existe la instrucción “Quaternion( [ s v1 v2 v3 ] )”, “Quaternion( θ , k )”,


“Quaternion( R )”.

24
1.9.5.- PASO DE UN PUNTO (X,Y,Z) A CUATERNIOS.
REGLA:

Poner la parte escalar a cero.

Ejemplo: Pasar a cuaternio el vector (1,2,3).

Solución: Q = [ 0 1 2 3]

1.9.6.- ROTAR UN PUNTO p CON UN CUATERNIO Q


PASOS:

1.- Poner p como cuaternio.

2.- Aplicar:

p ' = Q ⋅ p ⋅ Q* ( 40)

3.- Pasar p ' a cartesianos.

1.9.7.- PASO DE CUATERNIO A R


Alternativa 1.- Aplicar la siguiente expresión:

 2 1 
 q0 + q1 − 2 q1q2 − q3 q0 q1q3 + q2 q0 
2

 
R =2 ⋅  q1q2 + q3 q0 q2 q3 − q1q0 
1
q02 + q22 − ( 41)
 2 
 1 
 q1q3 − q2 q0 q2 q3 + q1q0 q0 + q3 −
2 2

 2 

Alternativa 2: Aplicar la expresión:

I + 2q0 [ q X ] + 2 [ q X ]
R=
2 ( 42)

Donde q = [ q1 q2 q3 ] y [ q X ] es la matriz skew symmetric de q

Ejemplo 11

El vector p = (1,1, 0) es rotado 90° alrededor de Y, hallar el nuevo vector rotado usando
cuaternios.

Solución:

La rotación a aplicarse:

25
 0 0 1
R =  0 1 0 
 −1 0 0 

Su ángulo y eje:

 1−1   0  π
θ a cos  =
=  = 
 2  2 2
0 − 0  0 
=k
1  1 + 1  1 
=
π     
2sin   0 − 0  0 
2
Su cuaternio:

 2 2 
=Q [cos(45°) )⋅k] 
sin(45°= 0 0
 2 2 
Su cuaternio conjugado:

 2 2 
=Q*  0 − 0
 2 2 
p en cuaternios:

p = [ 0 1 1 0]

La rotación realizada en cuaternios:

p ' = Q ⋅ q ⋅ Q* = Q ⋅  q ⋅ Q* 

Cálculo de  q ⋅ Q  :
*

 2 2 
=
q ⋅ Q*  [0 1 1 0] ⋅  0 − 0
 2 2 
 2  2 2   2 
=
0 + , ( 0, 0, 0 ) +  , , 0  +  0, 0, − 
 2  2 2   2  
 2 2 2 2
=  − 
 2 2 2 2 

Cálculo de Q ⋅  q ⋅ Q  :
*

26
 2 2   2 2 2 2
Q ⋅  q ⋅ Q*  
= 0 0 ⋅  − 
 2 2   2 2 2 2 
1 1 1 1 1  1   1 1 
=  − ,  , , −  +  0, , 0  +  − , 0, −  
2 2 2 2 2  2   2 2 
= [0 0 1 −1]

Pasamos a cartesianos:

= [0 1 −1]
T
p'

Ejemplo 12

Se tiene dos rotaciones consecutivas: R1= rotación en el eje Y 90°, R2=rotación en el eje X 60°.
Hallar la rotación resultante,

a.- Método convencional.

b.- Por cuaternios.

c.- Comprobar que el resultado por cuaternios es igual al método convencional.

Solución a)

 
1 0 0 
 0 0 1  

R1 =  0 1 = 
0  ; R 2 0
1

3
 2 2 
 −1 0 0   
0 3 1 
 2 2 

  0 3 1 
1 0 0   2 2 

 0 0 1   
3  3
R = R1 ⋅ R 2 =  0 1 0  0
1 1
− = 0 − 
 2 2   2 2 
 −1 0 0   
0 3 1   −1 0 0 
  
2 2   
Solución b)

0  1 
R1 : θ1 = 90°; k1 = 1  ; R 2 : θ 2 =60°; k2 =0 
   
0  0 

27
 2 2 
=
Q1 [cos(45°) ) ⋅ k1 ] 
sin(45°= 0 0
 2 2 
 3 1 
Q 2 [ cos(30°) sin(30°)=
= ⋅ k2 ]  0 0
 2 2 

Q = Q1 ⋅ Q 2 = [ s1s2 − v1 ⋅ v2 , v1 × v2 + s1v2 + s2 v1 ] =
donde Q1 [=
s1 , v1 ] ; Q 2 [ s2 , v2 ]

Si

v1 ⋅ v2 =
0
 2  1  
 0 0   0 
 2  2  
 
=v1 × v2  0= 0 0  0  0 
    
− 2 0 0   0  − 2 
 2     4 

 2 3  2  2   2 3 
Q = Q1Q 2 =  ,  0, 0, −  +  , 0, 0  +  0, , 0  
 4  4   4   4  
 2 3 2 2 3 2
=  = −  [ 0.6124 0.3536 0.6124 −0.3536]
 4 4 4 4 

Solución c)

Existe dos alternativas:

Alternativa 1) Pasar de Q a R:

 3 2  2  2  2 1 3 2 2 3 2 2 2 2  3 2  2

  +  − + − +  
 4   4  2 4 4 4 4 4 4  4  
 2 2

 2 3 2 2 3 2  3 2  3 2 1 3 2 2 3 2 2
R =⋅
2  −   +   − − − 
 4 4 4 4  4   4  2 4 4 4 4 
 2 2 2 
 2 2  3 2 3 2 2 3 2 2  3 2  2 1 
 − 4 4 −  4  −
4 4
+
4 4
  +   −
4  2 
    4   

 3 
0 0.5 
 2 
 3
=R  0 0.5 − 
 2 
 −1 0 0 
 
 

28
Alternativa 2) Pasar de R a cuaternio:

De R calculamos el ángulo theta y eje k

 0.5 − 1 
=θ a=
cos   1.8235
 2 
 3
0 +   0.4472 
 2 
=
1
=  0.7746 
k  0.5 + 1   
2sin(1.8235)    −0.4472 
0 − 3 
 2 

  1.8235   1.8235  
Q cos  2=  sin  ⋅k [0.6124 0.3536 0.6124 −0.3536]
    2  

Se observa que es igual al resultado obtenido en la parte a).

29
R1

Figura 23

( 43)

( 44)

30

También podría gustarte