1 votos

Distancia de rotación

Ahora mismo estoy trabajando en un proyecto de visión por ordenador y voy a reconocer marcadores fiduciales, he creado un banco de pruebas de simulación para comparar la precisión de diferentes métodos. Por ejemplo, rotaré los marcadores y luego trataré de obtener la rotación (orientación) del marcador a partir de las imágenes capturadas.

El marcador siempre gira alrededor del eje z, con los siguientes ángulos de euler:

$r_{gt} = [\alpha_0, \beta_0, \gamma_0]$

digamos que hemos reconocido el amrker en la imagen con la siguiente orientación respecto a la coordenada mundial (ambas orientaciones se midieron respecto a la coordenada mundial)

$r_{i} = [\alpha_i, \beta_i, \gamma_i]$

$d(r_0, r_i) = ? $

Ahora mi pregunta es ¿cómo puedo medir la distancia entre las dos rotaciones? Distancia de cuaterniones .

¡Por favor, si da una respuesta también dé el enlace de referencia, donde puedo investigar sobre este tema!

4voto

Joan Solà Puntos 381

Los ángulos de Euler no son buenos para calcular las métricas, ya que no tienen simetrías adecuadas. Sugiero (ya que la pregunta está etiquetada en quaternions ) convierte sus dos orientaciones en cuaterniones $p$ y $q$ . Entonces:

En primer lugar, suponiendo que por distancia te refieras a la distancia entre dos rotaciones.

En segundo lugar, sabiendo que los cuaterniones tienen una doble cobertura del colector de rotación, es decir, $q$ y $-q$ representan la misma rotación.

Tercero, de segundo, decir que la "distancia" de cualquier cuaternión $q=(w,x,y,z)$ al cuaternión de identidad $(1,0,0,0)$ tiene sentido si $w>0$ . De lo contrario, para $w<0$ la distancia debe ser calculada a la "otra" identidad $(-1,0,0,0)$ que sí está más cerca; o de forma equivalente, se encontraría la distancia entre $-q$ y la verdadera identidad $(1,0,0,0)$ .

Cuarto, la distancia entre dos cuaterniones $p$ y $q$ se puede encontrar de la siguiente manera:

  1. toma $r = p^* q$ el cuaternión que une $p$ a $q$ . La distancia de $p$ a $q$ es ahora igual a la distancia de $r$ a $(1,0,0,0)$ (o a $(-1,0,0,0)$ (ver Tercero arriba).
  2. toma el tronco, $u\theta = \log(p^* q)$ , donde $u=[u_x,u_y,u_z]$ es un vector unitario que define el eje de rotación, y $\theta$ es la mitad del ángulo girado.
  3. la distancia es el ángulo girado, $\phi=2\theta$ .

Nota: al tener cuaterniones unitarios $q=[\cos(\phi/2), u_x \sin(\phi/2), u_y \sin(\phi/2), u_z \sin(\phi/2)]$ el registro se puede encontrar por inspección, pero si sólo se busca la distancia, esta distancia $\phi$ se puede encontrar con sólo:

  1. $r = p^* q$ como en el punto 1.
  2. si $r_w<0$ hacer $r \gets -r$ (cambiar el signo del cuaternión $r$ ).
  3. $\phi=2 \arccos(r_w)$ , donde $r_w$ es la parte real de $r$ .

Quinto. Se puede utilizar un atajo considerando sólo el doble del ángulo entre los dos cuaterniones vistos como 4'vectores, es decir $$ \cos \theta = p^\top q \rightarrow \phi = 2\theta = 2\arccos (p^\top q) $$ Si $\cos\theta<0$ , cambia el signo de uno de los cuaterniones y vuelve a empezar.

Toda esta información se puede encontrar aquí https://arxiv.org/abs/1711.02508

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X