8

Ho un accelerometro e un magnetometro ciascuno che produce letture X, Y e Z. Da questo ho bisogno di determinare la direzione magnetica di un oggetto.Calcolo della direzione magnetica utilizzando i dati grezzi di accelerometro e magnetometro

Non sono molto bravo in trig ma ho messo insieme una formula che risponde abbastanza bene alla rotazione del dispositivo, ma risponde anche a movimenti che non si penserebbero rilevanti, come ad esempio la pesca dispositivo in modo tale da non avere alcun impatto sulla direzione in cui è puntato. Ad esempio, ponendolo piano e "rotolando" il dispositivo.

Penso che la formula che ho per calcolare l'intestazione magnetica sia valida, ma penso che i miei radianti di pitch e roll per input siano sbagliati.

Quindi immagino il nocciolo della mia domanda (a meno che qualcuno non abbia effettivamente una formula in giro per farlo), è come calcoliamo gli angoli, in radianti, usando un accelerometro per l'inclinazione e il rollio.

Quindi, in secondo luogo, qualsiasi informazione sulla formula di titolo sarebbe grande.

+0

Quale intestazione stai cercando di calcolare e relativamente a quale oggetto? Posso presumere che tu stia parlando di un telefono? – Seth

risposta

2

seconda della precisione l'applicazione richiede, può essere necessario per risolvere i diversi problemi:

  1. sono gli assi dell'accelerometro calibrato? Ho visto gli accelerometri MEM che avevano assi che non erano reciprocamente perpendicolari e avevano caratteristiche di risposta significativamente differenti per ciascun asse (in genere X e Y corrispondevano, e Z sarebbe diverso). Sarà necessario sintetizzare gli assi XYZ ideali da qualsiasi lettura fisica fornita dal dispositivo. (Google 'calibrazione accelerometro'.)

  2. Gli assi del magnetometro sono calibrati? Problema simile come sopra, eccetto molto più difficile da controllare: è molto difficile generare campi magnetici calibrati uniformi. Se si utilizza il campo geomagnetico ambientale, sarà necessario controllare attentamente il magnetismo locale dell'ambiente di lavoro e degli strumenti. (Calibratura del magnetometro di Google.)

  3. Dopo aver calibrato l'accelerometro e il magnetometro, i loro assi devono essere calibrati l'uno rispetto all'altro. Poiché entrambi questi dispositivi sono tipicamente saldati su un PCB, è quasi garantito un disallineamento significativo. In molti casi, il layout della scheda e i parametri del dispositivo potrebbero anche non consentire agli assi XYZ di corrispondere l'uno con l'altro! Questa potrebbe essere la parte più difficile da fare da una prospettiva di laboratorio, quindi ti consiglio di fare un confronto diretto usando altro hardware che ha entrambi i tipi di sensori ed è già calibrato (come un iPhone o un telefono Android - ma prima verifica il dispositivo uso). Normalmente, ciò si ottiene regolando le precedenti due matrici di calibrazione finché non generano vettori allineati correttamente l'uno rispetto all'altro.

  4. Solo dopo aver generato vettori magnetici e accelerometrici calibrati reciprocamente è possibile applicare le soluzioni suggerite dagli altri rispondenti.

ho descritto solo la soluzione statica, in cui sia il magnetometro e accelerometro sono immobili rispetto ai campi gravitazionali e magnetici locali. Se è necessario generare risposte in tempo reale mentre il sistema è in rapido movimento, è necessario tenere conto del comportamento temporale di ciascun sensore. Ci sono due modi per farlo: 1) Applicare filtri del dominio del tempo a ciascun sensore in modo che i loro output condividano un dominio del tempo comune (in genere aggiungendo un po 'di ritardo). 2) Utilizzare la modellazione predittiva per modificare le uscite del sensore in tempo reale (meno ritardo, ma più rumore).

Ho visto i filtri di Kalman utilizzati per tali applicazioni, ma applicandoli in un dominio vettoriale può richiedere l'uso di quaternioni invece di matrici di Eulero. I quaternioni sono più facili da usare computazionalmente (sono necessarie meno operazioni rispetto alle matrici), ma ho trovato che sono molto più difficili da capire e da ottenere.

Oppure, puoi scegliere un percorso completamente diverso e utilizzare le statistiche e l'adattamento dei dati per eseguire tutto il lavoro sopra in un unico passaggio. Considerare il problema come segue: Dati 6 valori di input (XYZ ciascuno da magnetometro non calibrato e accelerometro) e un riferimento al dispositivo (supponendo che sia tenuto in mano e c'è una freccia dipinta sul caso), emettere un singolo angolo che rappresenta il cuscinetto magnetico verso cui punta la freccia sulla cassa e l'altezza della freccia rispetto al vettore gravitazionale (inclinazione della cassa).

Utilizzando un dispositivo di riferimento calibrato (come indicato sopra), associarlo al dispositivo da calibrare e prelevare diverse centinaia di punti dati, con il dispositivo con diversi orientamenti. Quindi utilizzare un potente pacchetto matematico come Matlab, MathCAD, R o SciPy per impostare e risolvere le equazioni non lineari per creare le matrici di trasformazione.

+0

PS: ho usato una base di telescopio computerizzata economica per fare questa ultima parte: farlo manualmente non è realmente fattibile. – BobC