Directorio de artículos
1. Representación de puntos y vectores.
Punto : Es el elemento básico del espacio, sin longitud ni volumen.
Supongamos que hay un punto aa en el espacio tridimensional.a , sus coordenadas se pueden expresar como[ x , y , z ] T \left[\begin{matrix}x, y, z\end{matrix}\right]^\text{T}[x ,y ,z]T. _
Un vector se forma conectando dos puntos.
Vector : Puede verse como una flecha que apunta de un punto a otro. No confunda los dos conceptos de vector y sus coordenadas. Un vector es algo en el espacio, como el vector a ⃗ \vec{a }a. Aquí un ⃗ \vec{a}aNo está asociado a varios números reales. Solo cuando especificamos un determinado sistema de coordenadas en este espacio tridimensional, podemos hablar de las coordenadas del vector en este sistema de coordenadas, es decir, encontrar varios números reales correspondientes a este vector.
Vector a ⃗ \vec{a}aEn base de espacio lineal [ e ⃗ 1 , e ⃗ 2 , e ⃗ 3 ] \left[\begin{matrix}\vec{e}_1, \vec{e}_2, \vec{e}_3\end{matrix} \bien][mi1,mi2,mi3Las coordenadas bajo ] son [ x , y , z ] T \left[\begin{matrix}x, y, z\end{matrix}\right]^\text{T}[x ,y ,z]T , entonces existe la siguiente fórmula
a ⃗ = [ e ⃗ 1 e ⃗ 2 e ⃗ 3 ] [ xyz ] = e ⃗ 1 x + e ⃗ 2 y + e ⃗ 3 z = xe ⃗ 1 + ye ⃗ 2 + ze ⃗ 3 \begin{aligned} \ vec{a} = \left[\begin{matrix} \vec{e}_1 & \vec{e}_2 & \vec{e}_3 \end{matrix}\right] \left[\begin{matrix} x \\ y \\ z \\ \end{matrix}\right] = \vec{e}_1x + \vec{e}_2 y + \vec{e}_3 z \\ = x \vec{e}_1+ y \vec{e}_2 + z \vec{e}_3 \end{alineado}a=[mi1mi2mi3] Xyz =mi1X+mi2y+mi3z=Xmi1+ymi2+zmi3
2. Derivación de la matriz de rotación RR basada en vectoresR
Para el mismo vector a ⃗ \vec{a}a, establecido en la base ortonormal unitaria [ e ⃗ 1 , e ⃗ 2 , e ⃗ 3 ] \left[\begin{matrix}\vec{e}_1, \vec{e}_2, \vec{e}_3\end {matriz}\derecha][mi1,mi2,mi3Las coordenadas bajo ] son [ x , y , z ] T \left[\begin{matrix}x, y, z\end{matrix}\right]^\text{T}[x ,y ,z]T ,
después de una rotación, la base ortonormal unitaria se convierte en[ e ⃗ 1 ′ , e ⃗ 2 ′ , e ⃗ 3 ′ ] \left[\begin{matrix}\vec{e}_1^\prime, \vec{ e} _2^\prime, \vec{e}_3^\prime\end{matrix}\right][mi1′,mi2′,mi3′] , y el vectora ⃗ \vec{a}aLas coordenadas bajo la nueva base ortogonal son [ x ′ , y ′ , z ′ ] T \left[\begin{matrix}x^\prime, y^\prime, z^\prime\end{matrix}\right ]^\texto{T}[X′ ,y′ ,z′]T. _
Dado que este vector no se mueve con la rotación del sistema de coordenadas, según la definición de coordenadas, tenemos
a ⃗ = [ e ⃗ 1 e ⃗ 2 e ⃗ 3 ] [ xyz ] = [ e ⃗ 1 ′ e ⃗ 2 ′ e ⃗ 3 ′ ] [ x ′ y ′ z ′ ] \begin{aligned} \vec{a} &= \left[\begin{matrix} \vec{e}_1 & \vec{e}_2 & \vec{e}_3 \end{matrix}\right] \left[\begin{matrix} x \\ y \\ z \\ \end{matrix}\right]\ \\ &= \left[\begin{matrix} \vec{e}_1^\prime & \vec{e}_2^\prime & \vec{e }_3^\prime \end{matrix}\right] \left[\begin{matrix} x^\prime \\ y^\prime \\ z^\prime \\ \end{matrix}\right] \end{ alineado}a=[mi1mi2mi3] Xyz =[mi1′mi2′mi3′] X′y′z′
Si la matriz se deja multiplicada en ambos lados de la ecuación al mismo tiempo [ e ⃗ 1 T e ⃗ 2 T e ⃗ 3 T ] \left[\begin{matrix}\vec{e}_1^\text{ T} \\ \vec{e} _2^\text{T} \\ \vec{e}_3^\text{T}\end{matrix}\right] mi1tmi2tmi3t ,tener
[ e ⃗ 1 T e ⃗ 2 T e ⃗ 3 T ] [ e ⃗ 1 e ⃗ 2 e ⃗ 3 ] [ xyz ] = [ e ⃗ 1 T e ⃗ 2 T e ⃗ 3 T ] [ e ⃗ 1 ′ e ⃗ 2 ′ e ⃗ 3 ′ ] [ x ′ y ′ z ′ ] [ e ⃗ 1 T e ⃗ 1 e ⃗ 1 T e ⃗ 2 e ⃗ 1 T e ⃗ 3 e ⃗ 2 T e ⃗ 1 e ⃗ 2 T e ⃗ 2 e ⃗ 2 T e ⃗ 3 e ⃗ 3 T e ⃗ 1 e ⃗ 3 T e ⃗ 2 e ⃗ 3 T e ⃗ 3 ] [ xyz ] = [ e ⃗ 1 T e ⃗ 1 ′ e ⃗ 1 T e ⃗ 2 ′ e ⃗ 1 T e ⃗ 3 ′ e ⃗ 2 T e ⃗ 1 ′ e ⃗ 2 T e ⃗ 2 ′ e ⃗ 2 T e ⃗ 3 ′ e ⃗ 3 T e ⃗ 1 ′ e ⃗ 3 T e ⃗ 2 ′ e ⃗ 3 T e ⃗ 3 ′ ] [ x ′ y ′ z ′ ] \begin{aligned} \left[\begin{matrix} \vec{e}_1^\text{T} \\ \vec{e}_2^ \text{T} \\ \vec{e}_3^\text{T} \\ \end{matrix}\right] \left[\begin{matrix} \vec{e}_1 & \vec{e}_2 & \vec{e}_3 \end{matrix}\right] \left[\begin{matrix} x \\ y \\ z \\ \end{matrix}\right] &= \left[\begin{matrix} \vec{e}_1^\text{T} \\ \vec{e}_2^\text{T} \\ \vec{e}_3^\text{T} \\ \end{matrix}\right] \left[\begin{matriz} \vec{e}_1^\prime& \vec{e}_2^\prime & \vec{e}_3^\prime \end{matrix}\right] \left[\begin{matrix} x^\prime \\ y^\prime \\ z^ \prime \\ \end{matrix}\right] \\ \left[\begin{matrix} \vec{e}_1^\text{T} \vec{e}_1 & \vec{e}_1^\text {T} \vec{e}_2 & \vec{e}_1^\text{T} \vec{e}_3 \\ \vec{e}_2^\text{T} \vec{e}_1 & \ vec{e}_2^\text{T} \vec{e}_2 & \vec{e}_2^\text{T} \vec{e}_3 \\ \vec{e}_3^\text{T} \vec{e}_1 & \vec{e}_3^\text{T} \vec{e}_2 & \vec{e}_3^\text{T} \vec{e}_3 \\ \end{matrix }\right] \left[\begin{matrix} x \\ y \\ z \\ \end{matrix}\right] &= \left[\begin{matrix} \vec{e}_1^\text{T } \vec{e}_1^\prime & \vec{e}_1^\text{T} \vec{e}_2^\prime & \vec{e}_1^\text{T} \vec{e} _3^\prime \\ \vec{e}_2^\text{T} \vec{e}_1^\prime & \vec{e}_2^\text{T} \vec{e}_2^\prime & \vec{e}_2^\text{T} \vec{e}_3^\prime \\ \vec{e}_3^\text{T} \vec{e}_1^\prime& \vec{e}_3^\text{T} \vec{e}_2^\prime & \vec{e}_3^\text{T} \vec{e}_3^\prime \\ \end{matrix }\right] \left[\begin{matrix} x^\prime \\ y^\prime \\ z^\prime \\ \end{matrix}\right] \end{aligned} mi1tmi2tmi3t [mi1mi2mi3] Xyz mi1tmi1mi2tmi1mi3tmi1mi1tmi2mi2tmi2mi3tmi2mi1tmi3mi2tmi3mi3tmi3 Xyz = mi1tmi2tmi3t [mi1′mi2′mi3′] X′y′z′ = mi1tmi1′mi2tmi1′mi3tmi1′mi1tmi2′mi2tmi2′mi3tmi2′mi1tmi3′mi2tmi3′mi3tmi3′ X′y′z′
Obviamente hay
mi ⃗ 1 T mi ⃗ 1 = 1 , mi ⃗ 1 T mi ⃗ 2 = 0 , mi ⃗ 1 T mi ⃗ 3 = 0 , mi ⃗ 2 T mi ⃗ 1 = 0 , mi ⃗ 2 T mi ⃗ 2 = 1 , mi ⃗ 2 T mi ⃗ 3 = 0 , mi ⃗ 3 T mi ⃗ 1 = 0 , mi ⃗ 3 T mi ⃗ 2 = 0 , mi ⃗ 3 T mi ⃗ 3 = 1 , \begin{aligned} \vec{e} _1^\text{T} \vec{e}_1 = 1, \quad & \vec{e}_1^\text{T} \vec{e}_2 = 0, \quad & \vec{e}_1^ \text{T} \vec{e}_3 = 0, \quad \\ \vec{e}_2^\text{T} \vec{e}_1 = 0, \quad & \vec{e}_2^\ texto{T} \vec{e}_2 = 1, \quad & \vec{e}_2^\text{T} \vec{e}_3 = 0, \quad \\ \vec{e}_3^\text {T} \vec{e}_1 = 0, \quad & \vec{e}_3^\text{T} \vec{e}_2 = 0, \quad & \vec{e}_3^\text{T } \vec{e}_3 = 1, \quad \\ \end{aligned}mi1tmi1=1 ,mi2tmi1=0 ,mi3tmi1=0 ,mi1tmi2=0 ,mi2tmi2=1 ,mi3tmi2=0 ,mi1tmi3=0 ,mi2tmi3=0 ,mi3tmi3=1 ,
Por lo tanto, se puede simplificar aún más a
[ e ⃗ 1 T e ⃗ 1 e ⃗ 1 T e ⃗ 2 e ⃗ 1 T e ⃗ 3 e ⃗ 2 T e ⃗ 1 e ⃗ 2 T e ⃗ 2 e ⃗ 2 T e ⃗ 3 e ⃗ 3 T e ⃗ 1 e ⃗ 3 T e ⃗ 2 e ⃗ 3 T e ⃗ 3 ] [ xyz ] = [ e ⃗ 1 T e ⃗ 1 ′ e ⃗ 1 T e ⃗ 2 ′ e ⃗ 1 T e ⃗ 3 ′ e ⃗ 2 T e ⃗ 1 ′ e ⃗ 2 T e ⃗ 2 ′ e ⃗ 2 T e ⃗ 3 ′ e ⃗ 3 T e ⃗ 1 ′ e ⃗ 3 T e ⃗ 2 ′ e ⃗ 3 T e ⃗ 3 ′ ] [ x ′ y ′ z ′ ] [ xyz ] = [ e ⃗ 1 T e ⃗ 1 ′ e ⃗ 1 T e ⃗ 2 ′ e ⃗ 1 T e ⃗ 3 ′ e ⃗ 2 T e ⃗ 1 ′ e ⃗ 2 T e ⃗ 2 ′ e ⃗ 2 T e ⃗ 3 ′ e ⃗ 3 T e ⃗ 1 ′ e ⃗ 3 T e ⃗ 2 ′ e ⃗ 3 T e ⃗ 3 ′ ] [ x ′ y ′ z ′ ] = def R [ x ′ y ′ z ′ ] \begin {alineado} \left[\begin{matrix} \vec{e}_1^\text{T} \vec{e}_1 & \vec{e}_1^\text{T} \vec{e}_2 & \ vec{e}_1^\text{T} \vec{e}_3 \\ \vec{e}_2^\text{T} \vec{e}_1 & \vec{e}_2^\text{T} \vec{e}_2 & \vec{e}_2^\text{T} \vec{e}_3 \\ \vec{e}_3^\text{T} \vec{e}_1 & \vec{e }_3^\text{T} \vec{e}_2 & \vec{e}_3^\text{T} \vec{e}_3 \\\end{matrix}\right] \left[\begin{matrix} x \\ y \\ z \\ \end{matrix}\right] &= \left[\begin{matrix} \vec{e}_1^ \text{T} \vec{e}_1^\prime & \vec{e}_1^\text{T} \vec{e}_2^\prime & \vec{e}_1^\text{T} \ vec{e}_3^\prime \\ \vec{e}_2^\text{T} \vec{e}_1^\prime & \vec{e}_2^\text{T} \vec{e}_2 ^\prime & \vec{e}_2^\text{T} \vec{e}_3^\prime \\ \vec{e}_3^\text{T} \vec{e}_1^\prime & \ vec{e}_3^\text{T} \vec{e}_2^\prime & \vec{e}_3^\text{T} \vec{e}_3^\prime \\ \end{matrix}\ derecha] \left[\begin{matrix} x^\prime \\ y^\prime \\ z^\prime \\ \end{matrix}\right] \\ \left[\begin{matrix} x \\ y \\ z \\ \end{matrix}\right] &= \left[\begin{matrix} \vec{e}_1^\text{T} \vec{e}_1^\prime & \vec{e} _1^\text{T} \vec{e}_2^\prime & \vec{e}_1^\text{T} \vec{e}_3^\prime \\ \vec{e}_2^\text{ T} \vec{e}_1^\prime & \vec{e}_2^\text{T} \vec{e}_2^\prime& \vec{e}_2^\text{T} \vec{e}_3^\prime \\ \vec{e}_3^\text{T} \vec{e}_1^\prime & \vec{e }_3^\text{T} \vec{e}_2^\prime & \vec{e}_3^\text{T} \vec{e}_3^\prime \\ \end{matrix}\right] \ left[\begin{matrix} x^\prime \\ y^\prime \\ z^\prime \\ \end{matrix}\right] \\ & \overset{def}{=} R \left[\begin {matriz} x^\prime \\ y^\prime \\ z^\prime \\ \end{matrix}\right] \end{aligned} mi1tmi1mi2tmi1mi3tmi1mi1tmi2mi2tmi2mi3tmi2mi1tmi3mi2tmi3mi3tmi3 Xyz Xyz = mi1tmi1′mi2tmi1′mi3tmi1′mi1tmi2′mi2tmi2′mi3tmi2′mi1tmi3′mi2tmi3′mi3tmi3′ X′y′z′ = mi1tmi1′mi2tmi1′mi3tmi1′mi1tmi2′mi2tmi2′mi3tmi2′mi1tmi3′mi2tmi3′mi3tmi3′ X′y′z′ =def _ _R X′y′z′
Este RRR describe la rotación de un vector, llamada Matriz de Rotación.
El proceso de derivación anterior se basa en la relación algebraica de vectores, así como el proceso de derivación utilizando el ángulo de rotación del eje de coordenadas tridimensional. Puede consultar el artículo: Capítulo 3 - Conocimientos matemáticos básicos -> Transformación de coordenadas .
Matriz de rotaciónRRR tiene propiedades:
-
Matriz de rotaciónRRR es una matriz ortogonal con determinante 1. Por el contrario, una matriz ortogonal con determinante 1 también es una matriz de rotación. Allnn__La matriz de rotación n- dimensional forma un grupo ortogonal especialSO ( n ) SO(n)SO ( n )。 SO ( n ) = { R ∈ R n × n ∣ RRT = I , det ( R ) = I } SO(n) = \{ R \in \R^{n \times n} | RR^\text{T} = Yo, \text{det}(R) = Yo \}entonces ( n )={ R∈Rnorte × norte ∣RRt=yo ,eso ( R )=yo }
-
Matriz de rotaciónRRR es una matriz ortogonal (Matriz ortogonal, una matriz ortogonal es una matriz cuya inversa es su propia transpuesta), y la inversa de la matriz de rotaciónR − 1 R^{-1}R− 1 describe una rotación opuesta
3. Transformación euclidiana de vectores.
En visión por computadora y robótica, la traducción euclidiana/rígida (o transformación rígida) es una transformación muy común.
La transformación euclidiana consta de dos partes:
- Rotación: Puede representarse mediante una matriz de rotación.
- Traducción: Puede representarse mediante un vector de traducción.
Si no lo tiene claro, consulte el artículo: [Conocimientos matemáticos] Movimiento básico de cuerpos rígidos, traslación y rotación .
Supongamos que existe el siguiente proceso de rotación y traslación: hay un vector a ⃗ 1 \vec{a}_1 en el sistema de coordenadas mundiala1, después de una rotación R 1 t 2 R_{1t2}R1 t 2y una traducción t 1 t 2 t_{1t2}t1 t 2Después de eso, se obtiene el vector a ⃗ 2 \vec{a}_2a2, entonces existe la siguiente relación
a ⃗ 2 = R 1 t 2 a ⃗ 1 + t 1 t 2 \vec{a}_2 = R_{1t2} \vec{a}_1 + t_{1t2}a2=R1 t 2a1+t1 t 2
4. La transformación euclidiana tiene limitaciones no lineales.
La transformación euclidiana es una transformación rígida, que incluye rotación y traslación. Mientras que la traslación es lineal, la rotación no es lineal.
Para la rotación, podemos usar matrices de rotación, cuaterniones o ejes de rotación y ángulos de rotación para describirla. Independientemente de cómo se describa, la naturaleza de la rotación no es lineal.
Si realizamos dos transformaciones: R 1 t 2 , t 1 t 2 R_{1t2}, t_{1t2}R1 t 2,t1 t 2和R 2 t 3 , t 2 t 3 R_{2t3}, t_{2t3}R2 t 3,t2 t 3
a ⃗ 2 = R 1 t 2 a ⃗ 1 + t 1 t 2 a ⃗ 3 = R 2 t 3 a ⃗ 2 + t 2 t 3 = R 2 t 3 ( R 1 t 2 a ⃗ 1 + t 1 t 2 ) + t 2 t 3 \begin{aligned} \vec{a}_2 &= R_{1t2} \vec{a}_1 + t_{1t2} \\ \vec{a}_3 &= R_{2t3} \vec {a}_2 + t_{2t3} \\ &= R_{2t3} (R_{1t2} \vec{a}_1 + t_{1t2}) + t_{2t3} \end{aligned}a2a3=R1 t 2a1+t1 t 2=R2 t 3a2+t2 t 3=R2 t 3( r.1 t 2a1+t1 t 2)+t2 t 3
Hay dos matrices de rotación en la transformación anterior, pero la combinación de las dos rotaciones R 2 t 3 × R 1 t 2 R_{2t3} \times R_{1t2}R2 t 3×R1 t 2No es igual a una combinación lineal simple de dos matrices de rotación, como la suma.
De la misma manera, si usamos cuaterniones para describir la rotación, la multiplicación de cuaterniones también es no lineal.
5. Utilice la matriz de transformación TTT resuelve la no linealidad
Para el problema no lineal de la transformación euclidiana, podemos resolverlo mediante el método de coordenadas homogéneas.
Las coordenadas homogéneas amplían las coordenadas estándar agregando una coordenada adicional. Las rotaciones y traslaciones se pueden representar mediante una única matriz, lo que simplifica las transformaciones.
La solución específica es convertir el vector tridimensional en un vector de cuatro dimensiones, llamado coordenada homogénea, sumando 1 al final. Para esta transformación euclidiana
a ⃗ 2 = R 1 t 2 a ⃗ 1 + t 1 t 2 \vec{a}_2 = R_{1t2} \vec{a}_1 + t_{1t2}a2=R1 t 2a1+t1 t 2
Escriba la matriz de rotación y el vector de traslación en la misma matriz de transformación (Matriz de transformación) y expanda las dimensiones al mismo tiempo:
[ a ⃗ 2 1 ] = [ R 1 t 2 t 1 t 2 0 1 × 3 1 ] [ a ⃗ 1 1 ] = T [ a ⃗ 1 1 ] \begin{aligned} \left[\begin{matrix} \ vec{a}_2 \\ 1 \end{matrix}\right] &= \left[\begin{matrix} R_{1t2} & t_{1t2} \\ 0_{1 \times 3} & 1 \\ \end {matrix}\right] \left[\begin{matrix} \vec{a}_1 \\ 1 \\ \end{matrix}\right] \\ &= T \left[\begin{matrix} \vec{a }_1 \\ 1 \\ \end{matrix}\right] \end{aligned}[a21]=[R1 t 201 × 3t1 t 21][a11]=t[a11]
TTT es la matriz de transformación.
El significado de coordenadas homogéneas es expresar la transformación euclidiana como una relación lineal.
Por lo tanto, después de que la transformación euclidiana se vuelve coordenadas homogéneas, tenemos
a ⃗ 2 = R 1 t 2 a ⃗ 1 + t 1 t 2 [ a ⃗ 2 1 ] = T [ a ⃗ 1 1 ] \begin{alineado} \vec{a}_2 &= R_{1t2} \vec{ a}_1 + t_{1t2} \\ \left[\begin{matrix} \vec{a}_2 \\ 1 \end{matrix}\right] &= T \left[\begin{matrix} \vec{a }_1 \\ 1 \\ \end{matrix}\right]\end{aligned}a2[a21]=R1 t 2a1+t1 t 2=t[a11]
Matriz de transformación TTPropiedades de T :
-
Matriz de transformación TTT forma el grupo euclidiano especialSE SESE:
SE ( 3 ) = { T = [ R t 0 1 × 3 1 ] ∈ R 4 × 4 ∣ R ∈ SO ( 3 ) , t ∈ R 3 } SE(3) = \{ T = \left[\ comenzar{matriz} R & t \\ 0_{1\times3} & 1 \\ \end{matrix}\right] \in \R^{4\times4} | R \en SO(3), t \en \R^3 \}SE ( 3 )={ T=[R01 × 3t1]∈R4 × 4 ∣R_∈Entonces ( 3 ) ,t∈R3 } -
La inversa de una matriz de transformación representa una transformación inversa:
T − 1 = [ RT − RT t 0 1 × 3 1 ] T^{-1} = \left[\begin{matrix} R^\text{T} & - R^\text{T} t \\ 0_{1\times3} & 1 \\ \end{matrix}\right]t− 1=[Rt01 × 3−R _t t1]
Árbitro
- "Visual SLAM catorce conferencias de la teoría a la práctica" Conferencia 3 Movimiento del cuerpo rígido en un espacio tridimensional - Zhihu
- Notas de estudio de SLAM (1) Conferencia 3: Movimiento de cuerpo rígido en un espacio tridimensional
- [Sorkine-Hornung O, Rabinovich M. Movimiento rígido de mínimos cuadrados utilizando svd[J]. Computación, 2017, 1(1): 1-5.]