Estoy intentando crear un sistema en el que necesito medir la orientación relativa del borde del brazo con respecto a su base:
Elaparatoserácomoeneldiagramadearriba.Paramedirlaposiciónrelativa,actualmenteestoyusandodosIMU9DoF-MPU9250conectadasaTeensyLC(unaenelbordeylaotraenlabase),yusandovaloresdecuaternión.
Elrequisitodetomarlaposiciónrelativaesqueestebrazopuedegiraralrededordelabaseentodaslasdirecciones(exceptodebajodelasuperficiedelabase).yelpropiosistemapuedegirarencualquierdirección.Peromientrasgira,elbrazonocambiarálaposición,permaneceráenlaposicióninicial.Porejemplo,aquíhayotraposiciónqueelsistemapuedeser:
Comosemuestra,laorientaciónrelativadelbordenohacambiado,segúnsubase.Además,noestoyinteresadoendeterminarlaposición/direccióndetodoelsistema,soloestoyinteresadoenlaposiciónrelativadelbordeconrespectoalabase.
Aquíhayalgunosejemplosmás:
En este momento estoy usando el algoritmo de actualización de Madgwick Quaternion para calcular los cuaterniones y usar la siguiente ecuación para calcular la orientación relativa:
void quatDiff(float* E, float* rw_B)
{
float B[] = { rw_B[0], -rw_B[1], -rw_B[2], -rw_B[3]};
float q00 = (E[0] * B[0] - E[1] * B[1] - E[2] * B[2] - E[3] * B[3]);
float q11 = (E[0] * B[1] + E[1] * B[0] + E[2] * B[3] - E[3] * B[2]);
float q22 = (E[0] * B[2] - E[1] * B[3] + E[2] * B[0] + E[3] * B[1]);
float q33 = (E[0] * B[3] + E[1] * B[2] - E[2] * B[1] + E[3] * B[0]);
}
E y rw_B son los resultados de cuaterniones de dos IMU (borde y base).
Mis preguntas son: ¿Es este método un método confiable y válido para calcular la orientación relativa del cuaternión de dos IMU? Si es así, ¿es correcta esta ecuación para comparar valores?