IMU per identificare in modo preciso la posizione: Parte 2 - Come usare il software per le IMU per una maggiore precisione

Di Steve Leibson

Contributo di Editori nordamericani di DigiKey

Molti sistemi embedded devono tracciare la propria posizione e direzione, e spesso i progettisti si rivolgono in prima battuta a GNSS (sistema di navigazione satellitare globale) (vedere "Progettare rapidamente sistemi di rilevamento della posizione utilizzando moduli GNSS"). Ma spesso diverse ragioni, a cominciare dal consumo energetico, impediscono di usare il GPS esclusivamente per avere informazioni su posizione e direzione.

I sistemi GPS sono energivori. Molti sistemi embedded, specie quelli alimentati a batteria, non possono permettersi il budget energetico richiesto per mantenere in continuo il GPS attivo per tracciare la posizione. Inoltre i GPS sono soggetti a interruzioni del segnale, aggiornamenti lenti e a una precisione di 1 metro che per certe applicazioni potrebbe non essere sufficiente.

L'uso di unità di misura inerziale (IMU) a integrazione dei dati sulla posizione GNSS può ovviare a questi problemi.

L'uso di IMU relativamente poco costose basate sulla tecnologia dei MEMS per stabilire la posizione e la direzione è stato trattato in un precedente articolo sull'argomento. Vedere "Uso di IMU per dati precisi sulla posizione quando il GPS non basta". Ma i soli dati del sensore IMU non sono in grado di fornire la posizione assoluta. Anche se i ricevitori GNSS forniscono solo i dati sulla posizione, è richiesto molto software per convertire i dati di una IMU sul movimento in una posizione e direzione assolute utilizzando filtraggio dei sensori, fusione e doppia integrazione.

Questo articolo tratta dell'uso embedded di IMU, delle fonti di errore nei dati provenienti da vari sensori IMU e del software necessario per calcolare le informazioni precise su posizione e direzione trasmesse dai sensori IMU. Presenta inoltre la libreria MotionFX di STMicroelectronics e come usare questo software per trasformare i dati dei sensori IMU in posizione e direzione con un sistema embedded.

In che modo le IMU integrano i ricevitori GNSS

I GNSS hanno quattro tipi di problemi:

  1. I segnali GNSS sono molto direzionali e vengono facilmente bloccati dagli edifici. Pertanto, l'uso dei GNSS in interni o dentro i cosiddetti canyon urbani in calcestruzzo può essere problematico.
  2. I ricevitori GNSS hanno tempi di avvio a caldo e a freddo misurati in decine di secondi o più. Se il ricevitore GNSS non viene usato in modo continuo, ad esempio per risparmiare energia, ogni nuova lettura della posizione può richiedere diversi secondi.
  3. La posizione del GNSS viene aggiornata solo una volta al secondo. Questa velocità non basta per applicazioni embedded che implicano un movimento rapido. E l'elenco di queste applicazioni è lungo, dalla realtà virtuale alla movimentazione dei materiali e alla robotica.
  4. La precisione del GNSS viene misurata in metri. Per molte applicazioni embedded questa risoluzione è troppo approssimativa.

Le IMU forniscono una risoluzione di posizionamento migliore e una maggiore velocità di aggiornamento, come richiesto da numerose applicazioni embedded. Inoltre, forniscono dati di posizione relativi da un punto di partenza noto rispetto alle informazioni di posizionamento assolute date da un ricevitore GNSS, quindi i due tipi di sensori di posizione si completano a vicenda. Grazie a queste caratteristiche, le IMU sono molto utili per aumentare le informazioni di posizionamento ottenute direttamente dai ricevitori GNSS; vedere "Progettare rapidamente sistemi di rilevamento della posizione utilizzando moduli GNSS".

Il settore aerospaziale usa le IMU da diversi decenni. Ma queste IMU aerospaziali di precisione sono basate su giroscopi costosi e su altri sensori di grandi dimensioni e quindi sono difficilmente applicabili a sistemi più sensibili ai costi.

Le moderne IMU elettroniche sono altamente integrate e possono contenere diversi tipi di sensori - accelerometri, giroscopi e magnetometri - basati sulla tecnologia dei sistemi microelettromeccanici (MEMS), per cui sono piccole, leggere e relativamente robuste. Queste nuove generazioni di IMU sono disponibili come componenti installabili su scheda e si stanno rivelando ideali per le applicazioni embedded.

Le IMU hanno diverse capacità in termini di gradi di libertà (DOF) e, a differenza dei ricevitori GNSS, non dipendono da segnali radio per i dati di posizione. Consumano anche molto poco e sono disponibili da molteplici fonti con un'ampia gamma di specifiche di risoluzione e precisione.

Queste caratteristiche permettono di usare le IMU per aumentare le informazioni sul posizionamento dai moduli ricevitori GNSS (vedere, "Progettare rapidamente sistemi di rilevamento della posizione utilizzando moduli GNSS"). Ma è richiesto molto software per filtrare i dati dei sensori IMU, fondere i dati dai diversi tipi di sensori all'interno della IMU e calcolare una posizione da questa fusione utilizzando la doppia integrazione.

Fonti di errore delle IMU

Il settore aerospaziale utilizza comunemente da lunga data più tipi di sensori e nei sistemi di navigazione inerziale si fa un uso massiccio di accelerometri e giroscopi. In questi sistemi, i giroscopi rilevano l'orientamento attraverso le variazioni angolari della velocità, ma col tempo tendono ad avere una deriva perché rilevano solo i cambiamenti e non hanno un quadro di riferimento fisso. L'aggiunta dei dati dell'accelerometro ai dati del giroscopio consente di ridurre al minimo il bias del giroscopio e ottenere una stima più accurata della posizione. Gli accelerometri rilevano i cambi di direzione rispetto alla gravità e quei dati possono essere utilizzati per orientare un giroscopio.

Gli accelerometri sono più accurati per i calcoli statici (rispetto a quelli dinamici). I giroscopi sono migliori per rilevare l'orientamento quando il sistema è già in movimento. Gli accelerometri hanno una reazione rapida, per cui il jitter e il loro rumore producono un errore accumulato quando si utilizzano solo questi dati. Inoltre, tendono a distorcere le accelerazioni dovute a forze esterne come quelle gravitazionali, che si accumulano anch'esse nel sistema come rumore.

Combinando la precisione a breve termine di un giroscopio con quella a lungo termine di un accelerometro si ottengono letture dell'orientamento più precise, facendo affidamento sui punti di forza di ogni sensore per annullare o quanto meno ridurre i punti deboli dell'altro sensore. I due tipi di sensori si completano a vicenda.

Per ridurre l'errore serve la fusione del filtraggio

Il software per le IMU utilizza il filtraggio per ridurre al minimo l'errore di posizionamento dai dati della IMU. Esistono diversi metodi di filtraggio per fondere i dati dei sensori, ognuno con un suo grado di complessità. Un filtro complementare è un modo semplice per combinare i dati di diversi sensori. Il filtraggio complementare è una funzione lineare che combina un filtro del giroscopico passa-alto e un filtro dell'accelerometro passa-basso. Il rumore ad alta frequenza dei dati dell'accelerometro viene pertanto filtrato a breve termine e livellato dai dati del giroscopio.

Se da un lato il filtro complementare è semplice dal punto di vista computazionale, per ottenere una migliore precisione ora per la IMU si preferiscono tecniche più specifiche come il filtro di Kalman. Il filtro di Kalman è un algoritmo di fusione sensoriale ricorsivo molto diffuso perché non richiede una grande potenza di elaborazione per realizzare un sistema di posizionamento più accurato. Esistono diversi tipi di filtraggio Kalman, fra cui il filtro di Kalman standard, quello esteso (EKF) e quello unscented (UKF) (letteralmente, "inodore").

Un filtro di Kalman prevede i valori utilizzando diverse equazioni matematiche basate sull'ipotesi che i dati che vengono filtrati assumano la forma di una distribuzione gaussiana, a cui il filtro applica equazioni lineari. Nel mondo reale, però, il movimento non è pulito come ipotizzato dal filtro di Kalman. Nel mondo reale il movimento aderisce a equazioni che spesso implicano funzioni seno e coseno che sono non lineari, quindi l'EKF impiega una serie di Taylor e approssimazioni a punto singolo della distribuzione gaussiana per linearizzare le funzioni non lineari. Queste approssimazioni possono essere delle fonti significative di errore.

L'UKF affronta il problema di questo errore con un approccio di campionamento deterministico che genera un insieme di punti campione scelti con cura per rappresentare la distribuzione gaussiana prevista dei dati piuttosto che l'approssimazione singola utilizzata dall'EKF. Questi punti campione catturano completamente la media e la covarianza reali dei valori gaussiani previsti e danno un filtraggio più accurato.

Fonti di errore del magnetometro

Una IMU tipica contiene tre diversi sensori: un giroscopio per misurare il tasso/la velocità angolare, un accelerometro per misurare l'accelerazione lineare e un magnetometro per misurare la forza del campo magnetico. Più specificamente, i magnetometri della IMU misurano la forza del campo magnetico terrestre per determinare la direzione rispetto al nord magnetico della terra. Una IMU progettata per applicazioni di navigazione contiene solitamente tre sensori di ogni tipo, per coprire i tre assi del movimento ortogonale.

I magnetometri sono tuttavia suscettibili alle distorsioni causate dai materiali ferromagnetici di cui sono composti (la magnetizzazione è temporanea nel ferro dolce, mentre è permanente nel ferro duro). Le distorsioni del campo magnetico terrestre prodotte da influenze magnetiche esterne in genere sono temporanee o permanenti in base al materiale ferromagnetico. In assenza di distorsioni, ruotando un magnetometro di 360° e tracciando i dati risultanti si ottengono dei dati che formano un cerchio centrato attorno a (0, 0) (Figura 1).

Grafico della rotazione di un magnetometro di 360° e rappresentazione dei dati risultanti

Figura 1: Ruotando un magnetometro di 360° e tracciando i dati risultanti si ottengono dei dati che, in assenza delle distorsioni di campo locali causate dalla presenza di disturbi ferromagnetici nelle vicinanze, formano un cerchio centrato sulla posizione (0, 0). (Immagine per gentile concessione di sensorsmag.com)

La presenza di effetti hard e soft-iron può disturbare il cerchio. Gli effetti permanenti provocano un semplice spostamento dalla posizione (0, 0) (Figura 2).

Immagine dell'effetto di distorsione permanente che scompensa i dati magnetici

Figura 2: Effetto della distorsione permanente che scompensa i dati magnetici dalla posizione (0, 0). (Immagine per gentile concessione di sensorsmag.com)

Gli effetti temporanei deformano il cerchio e producono un'ellisse (Figura 3).

Immagine dell'effetto di distorsione temporanea che distorce i dati magnetici su 360°

Figura 3: Effetto della distorsione temporanea che distorce i dati magnetici su 360° trasformando il cerchio in un'ellisse. (Immagine per gentile concessione di sensorsmag.com)

Tenere presente che gli effetti temporanei e permanenti possono apparire contemporaneamente.

Per compensare la distorsione temporanea servono molti più calcoli rispetto a quelli necessari per compensare la distorsione permanente. Pertanto potrebbe essere più efficiente e pratico allontanare semplicemente i materiali di magnetizzazione temporanea dai magnetometri della IMU. Tuttavia, in molti casi questa non è un'opzione pratica e serviranno calcoli di compensazione.

Integrare due volte

Infine, dato che gli accelerometri e i giroscopi forniscono informazioni solo sulle forze di accelerazione (lineare e rotatoria) su un oggetto, per ottenere la posizione i dati devono essere integrati due volte, perché l'accelerazione è il tasso di variazione della velocità di un oggetto e la velocità è il tasso di variazione della posizione di un oggetto. Detto in altri termini, i dati del giroscopio e dell'accelerometro della IMU forniscono le doppie derivate della posizione assoluta di un oggetto.

La sola doppia integrazione richiede molta elaborazione, ma per il posizionamento 3D occorre annullare anche gli effetti dell'accelerazione gravitazionale. Un accelerometro vede la gravità come un'accelerazione costante, cosa che produce uno scostamento nei dati. Di solito, gli effetti dell'accelerazione gravitazionale devono essere calibrati fuori dal sistema mentre la IMU e l'oggetto che la contiene sono a riposo.

Tenere presente che questa doppia integrazione provocherà errori dovuti all'errore di campionamento. Più lenta è la frequenza di campionamento, maggiore sarà il rumore.

Considerazioni sulla progettazione per il software per le IMU

Al momento di implementare questi tipi di algoritmi per il software per le IMU per il mondo reale considerare i passaggi e le raccomandazioni seguenti:

  • I segnali dei sensori IMU non sono privi di rumore e richiedono il filtraggio digitale. In genere, nelle applicazioni IMU viene utilizzato un tipo di filtro di Kalman.
  • Malgrado il filtraggio, saranno presenti altre fonti di errore come il rumore meccanico accoppiato alla IMU oltre alla distorsione temporanea e permanente illustrata sopra. Questo rumore deve essere filtrato o rimosso in altro modo dai dati.
  • All'inizio dell'applicazione sarà richiesta una routine di calibrazione eseguita mentre la IMU è a riposo perché, per essere il più preciso possibile, il software dovrà sapere quali sono le letture del sensore quando l'oggetto non si muove. Il valore reale dell'accelerazione per un oggetto in movimento è il campione corrente da un sensore di accelerazione meno il valore di calibrazione.
  • Dopo la calibrazione, i valori del sensore possono essere positivi o negativi. Occorre pertanto usare delle variabili per mantenere questi valori.
  • Una frequenza di campionamento più veloce per i dati del sensore produce risultati più accurati, ma aumentando i campioni serviranno più memoria, requisiti di temporizzazione più rigidi e forse occorrerà affrontare altre problematiche hardware.
  • Il periodo di campionamento deve sempre essere esattamente identico. Periodi diseguali causano infatti errori nei dati.
  • L'approssimazione dei dati lineari tra i campioni (interpolazione) produce risultati più accurati ma richiede anche tempi di elaborazione più lunghi.

Da quanto detto sopra, è evidente che i calcoli necessari per determinare dai dati IMU la direzione, la posizione e il movimento non sono semplici. Questo è il motivo per cui i fornitori di IMU offrono spesso pacchetti di applicazioni software per eseguire questi calcoli per i loro prodotti. STMicroelectronics, ad esempio, ha sviluppato la libreria MotionFX che espande le funzionalità del suo software X-CUBE-MEMS1 scaricabile per includere le funzioni IMU.

Il software in questa libreria acquisisce i dati da accelerometri, giroscopi e magnetometri ed esegue la fusione dei dati dei sensori di movimento in tempo reale per i sensori MEMS di STMicroelectronics, incluse le IMU. Il software predittivo e di filtraggio MotionFX utilizza algoritmi avanzati per integrare in modo intelligente le uscite di più sensori MEMS, a prescindere dalle condizioni ambientali. Questa libreria è stata progettata esclusivamente per IMU MEMS di STMicroelectronics. Pertanto, quando si utilizzano IMU di altri fornitori, le funzionalità e le prestazioni del software non sono garantite.

La libreria MotionFX può essere eseguita su diversi microcontroller STMicroelectronics basati sui core di processore Arm® Cortex®-M0 +, Cortex-M3 e Cortex-M4. Sono disponibili implementazioni di esempio per la scheda di espansione X-NUCLEO-IKS01A2 di STMicroelectronics (Figura 4), quando installata sulla:

  • scheda di sviluppo NUCLEO-F401RE basata su un MCU STM32F4, che incorpora un core di processore Arm Cortex-M4,
  • scheda di sviluppo NUCLEO-L476RG basata su un MCU STM32L4, che incorpora un core di processore Arm Cortex-M4,
  • scheda di sviluppo NUCLEO-L152RE basata su un MCU STM32L1, che incorpora un core di processore Arm Cortex-M3,
  • oppure sulla scheda di sviluppo NUCLEO-L073RZ basata su un MCU STM32L0, che incorpora un core di processore Arm Cortex-M0+.

La libreria MotionFX di STMicroelectronics gestisce e fonde i dati acquisiti dagli accelerometri, giroscopi e magnetometri di una IMU. La libreria fornisce routine per:

  • La fusione in tempo reale dei dati di sensori di movimento a 9 assi (accelerometro, giroscopio, magnetometro)
  • La fusione in tempo reale dei dati di sensori di movimento a 6 assi (accelerometro, giroscopio)
  • Calcolo dei dati di rotazione, quaternioni, gravità e accelerazione lineare
  • Calibrazione del bias del giroscopio
  • Calibrazione permanente del magnetometro

STMicroelectronics consiglia una frequenza di campionamento dei dati del sensore a 100 Hz quando si utilizza il software MotionFX.

Immagine della scheda di espansione X-NUCLEO-IKS01A2 di STMicroelectronics

Figura 4: La scheda di espansione X-NUCLEO-IKS01A2 di STMicroelectronics è supportata dal software MotionFX della società per le IMU. (Immagine per gentile concessione di STMicroelectronics)

La libreria MotionFX implementa un algoritmo di fusione sensoriale per stimare l'orientamento 3D nello spazio. Filtra e fonde i dati di diversi sensori per compensare le limitazioni dei singoli sensori della IMU.

Il Listato 1 fornisce un codice demo che mostra cosa serve per rendere operativa la IMU di STMicroelectronics.

Copy
[…]
#define VERSION_STR_LENG 35
#define MFX_DELTATIME 10
[…]
/*** Initialization ***/
char lib_version[VERSION_STR_LENG];
char acc_orientation[3];
MFX_knobs_t iKnobs;
/* Sensor Fusion API initialization function */
MotionFX_initialize();
/* Optional: Get version */
MotionFX_GetLibVersion(lib_version);
MotionFX_getKnobs(&iKnobs);
/* Modify knobs settings */
MotionFX_setKnobs(&iKnobs);
/* Enable 9-axis sensor fusion */
MotionFX_enable_9X(MFX_ENGINE_ENABLE);
[…]
/*** Using Sensor Fusion algorithm ***/
Timer_OR_DataRate_Interrupt_Handler()
{
MFX_input_t data_in;
MFX_output_t data_out;
/* Get acceleration X/Y/Z in g */
MEMS_Read_AccValue(data_in.acc[0], data_in.acc[1], data_in.acc[2]);
/* Get angular rate X/Y/Z in dps */
MEMS_Read_GyroValue(data_in.gyro[0], data_in.gyro[1], data_in.gyro[2]);
/* Get magnetic field X/Y/Z in uT/50 */
MEMS_Read_MagValue(data_in.mag[0], data_in.mag[1], &data_in.mag[2]);
/* Run Sensor Fusion algorithm */
MotionFX_propagate(&data_out, &data_in, MFX_DELTATIME);
MotionFX_update(&data_out, &data_in, MFX_DELTATIME, NULL);
}

Listato 1: Il codice demo mostra l'uso della libreria MotionFX per estrarre informazioni dai componenti IMU sulla scheda di espansione X-NUCLEO-IKS01A2 della società. (Codice per gentile concessione di STMicroelectronics)

Viene dato anche un diagramma di flusso del software demo (Figura 5).

Immagine del diagramma di flusso che illustra la sequenza di passaggi utilizzata dal codice demo MotionFX

Figura 5: Questo diagramma di flusso illustra la sequenza di passaggi utilizzata dal codice demo MotionFX nel Listato 1 per estrarre i dati dalla scheda di espansione X-NUCLEO-IKS01A2 di STMicroelectronics e fonderli in un orientamento spaziale 3D. (Immagine per gentile concessione di STMicroelectronics)

Tenere presente che i dati del giroscopio possono avere una deriva, il che può pregiudicare la stima dell'orientamento spaziale 3D. Il software MotionFX può compensare questo deterioramento utilizzando i dati del magnetometro, che fornisce informazioni di orientamento assolute. I magnetometri non producono dati di direzione a frequenza elevata e soffrono di perturbazioni magnetiche, ma i dati del giroscopio possono compensare questi punti deboli del magnetometro.

I calcoli per la fusione dei dati di sensori a 9 assi del software MotionFX utilizzano i dati dell'accelerometro, del giroscopio e del magnetometro per fornire un orientamento assoluto nello spazio 3D, compresa la direzione (rispetto al nord magnetico).

I calcoli per la fusione dei dati di sensori a 6 assi del software MotionFX utilizzano solo i dati dell'accelerometro e del giroscopio. Questo livello operativo ha minori requisiti di calcolo e non fornisce informazioni sull'orientamento assoluto, ma l'esecuzione delle routine è più rapida rispetto alle routine a 9 assi. La fusione sensoriale a 6 assi è idonea per la misurazione di movimenti rapidi, ad esempio per videogiochi o robot stazionari, e può essere utilizzata anche quando non serve l'orientamento assoluto.

Conclusione

Le IMU sono molto utili nelle applicazioni embedded per fornire, da sole, informazioni sulla posizione e sulla direzione. Sono utili anche quando vengono utilizzate per aumentare le informazioni del ricevitore GNSS nei casi che richiedono una precisione ancora maggiore o velocità di aggiornamento più elevate. Tuttavia, l'inclusione di una IMU in un sistema embedded richiede moltissimo software, che i fornitori di IMU mettono spesso a disposizione per agevolare l'applicazione di questi dispositivi nel mondo reale.

 
DigiKey logo

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo autore

Image of Steve Leibson

Steve Leibson

Steve Leibson è stato System Engineer per HP e Cadnetix, Editor in Chief per EDN e Microprocessor Report, blogger tecnologico per Xilinx e Cadence (solo per citarne alcuni), e ha collaborato come esperto di tecnologia in due episodi di "The Next Wave with Leonard Nimoy". Da 33 anni collabora con molti progettisti allo sviluppo di sistemi migliori, più veloci e più affidabili.

Informazioni su questo editore

Editori nordamericani di DigiKey