Per un progetto, io e il mio team abbiamo cercato di tracciare un wiimote in uno spazio 3D utilizzando l'accelerometro integrato e il giroscopio WiiMotion Plus.Come si tiene conto della gravità utilizzando l'accelerometro del wiimote?
Siamo stati in grado di tracciare la rotazione e la posizione utilizzando un ODE (Trovato a http://www.alglib.net/,) ma abbiamo incontrato un problema con la rimozione del componente gravità dall'accelerometro.
abbiamo guardato Accelerometer gravity components che aveva la formula (implementato in C#/XNA)
private Vector3 RemoveGravityFactor(Vector3 accel)
{
float g = -1f;
float pitchAngle = (Rotation.Z);
float rollAngle = (Rotation.Y);
float yawAngle = (Rotation.X);
float x = (float)(g * Math.Sin(pitchAngle));
float y = (float)(-g * Math.Cos(pitchAngle) * Math.Sin(rollAngle));
float z = (float)(-g * Math.Cos(pitchAngle) * Math.Cos(rollAngle));
Vector3 offset = new Vector3(x, y, z);
accel = accel - offset;
return accel;
}
Ma non funziona affatto. Come riferimento, l'accelerazione è direttamente dall'accelerometro e la rotazione viene misurata in radianti dopo che è stata elaborata attraverso l'ODE.
Inoltre, abbiamo problemi con la comprensione di come funziona questa formula. A causa del fatto che il nostro monitoraggio tiene conto di tutte le dimensioni, perché Yaw non viene preso in considerazione?
Grazie in anticipo per qualsiasi consiglio o aiuto che viene offerto.
EDIT:
Dopo aver discusso con i miei compagni di squadra e capo, siamo arrivati a scoprire che questa formula sarebbe effettivamente funzionare se stessimo usando correttamente X, Y e Z. Siamo arrivati a un altro ceppo però.
Il problema che stiamo avendo è che la libreria Wiimote che stiamo usando restituisce valori di rotazione relativi basati sul movimento del giroscopio. In altre parole, se i pulsanti sono rivolti verso l'alto, ruotando il wiimote a sinistra e a destra è imbardata e se i pulsanti sono rivolti verso di te, l'imbardata è la stessa quando DOVREBBE essere la rotazione dell'intero wiimote.
Abbiamo trovato che gli angoli di Eulero possono essere la nostra risposta, ma non siamo sicuri di come usarli in modo appropriato. Se c'è qualche input su questo nuovo sviluppo o qualche altro suggerimento, per favore daglielo.
Significa che il telecomando non riesce quando lo si capovolge? –
non ha bisogno di essere calibrato a gravità zero. la gravità è 1 g giù e molto prevedibile. non è che non puoi compensarlo. –
@dan_waterworth: sì, la gravità è molto prevedibile; e sì, puoi compensarlo. È diverso da "rimuovere l'effetto gravità dall'accelerometro". Il risarcimento non rimuoverà l'effetto; lo compenserà, ma c'è un diverso livello di accuratezza tra rimozione e compensazione. –