IMU: con l'apprendimento automatico l'host potrà rimanere a riposo
Contributo di Editori nordamericani di DigiKey
2019-04-18
Le unità di misurazione inerziale (IMU) sono molto diffuse per fornire un flusso stabile di informazioni sulla posizione multi-asse provenienti da accelerometri, giroscopi e altri sensori. Con i molti gradi di libertà (DOF) che generano tutti i dati, i flussi di dati aggregati provenienti da questi dispositivi possono mantenere sempre attivi i processori di sistema e oberarli di lavoro mentre vagliano i dati grezzi dell'IMU per estrarre informazioni utili sulla posizione del sistema e sui gesti. Ai progettisti serve un modo per togliere al processore principale questa funzione di vagliatura. La risposta può essere l'apprendimento automatico.
Dopo una breve panoramica dell'uso delle IMU, questo articolo presenterà LSM6DSO a 6 DOF di STMicroelectronics. Verrà quindi esaminato l'utilizzo di questo dispositivo per dimostrare come l'aggiunta e l'integrazione dell'apprendimento automatico e dell'elaborazione dell'albero decisionale nelle IMU può alleggerire l'elaborazione della posizione e del movimento in tempo reale a carico del processore per applicazioni host e come utilizzare queste caratteristiche in applicazioni reali.
Un rapido sguardo alle IMU
Le IMU integrano diversi sensori di movimento in un unico dispositivo e possono fornire informazioni estremamente accurate sul posizionamento. Possono essere utilizzate per numerose applicazioni, comprese quelle consumer (telefoni cellulari), medicali (imaging), industriali (robotica) e militari (head tracking). Reagiscono al movimento del sensore e incorporano uno o più dei seguenti tipi di sensori di movimento:
- I giroscopi misurano le variazioni di posizione angolare, che in genere sono espresse in gradi al secondo. L'integrazione della velocità angolare nel tempo dà un angolo di spostamento misurato che può essere utilizzato per tenere traccia dei cambiamenti di orientamento. I giroscopi tracciano il movimento relativo indipendentemente dalla gravità, quindi gli errori di polarizzazione del sensore o di integrazione causano un errore di posizione chiamato "deriva", che può essere compensato tramite software.
- Gli accelerometri misurano l'accelerazione lineare, incluse le componenti dell'accelerazione causate dal movimento del dispositivo e l'accelerazione dovuta alla gravità. L'unità di misura dell'accelerazione è g, dove 1 g = forza gravitazionale della terra = 9,8 metri/secondo2. Gli accelerometri sono disponibili a uno, due o tre assi, che definiscono un sistema di coordinate X, Y, Z.
- I sensori di campo magnetico misurano l'intensità del campo magnetico, in genere in unità microTesla (µT) o Gauss (100 µT = 1 Gauss). Quello più comune utilizzato per i dispositivi elettronici portatili è un magnetometro a effetto Hall a tre assi. Calcolando l'angolo del campo magnetico terrestre rilevato e confrontandolo con la gravità misurata da un accelerometro, è possibile misurare con grande precisione la direzione di un dispositivo rispetto al nord magnetico.
Il controllo del movimento tramite le IMU utilizza Sensor Fusion per ricavare un'unica stima estremamente precisa dell'orientamento relativo del dispositivo e della posizione da un punto di partenza e da un orientamento noti. La tecnica di Sensor Fusion di solito si serve di un software per combinare le varie uscite dei sensori di movimento dell'IMU utilizzando complessi algoritmi matematici sviluppati dal produttore dell'IMU o dallo sviluppatore dell'applicazione.
I calcoli della posizione tramite Sensor Fusion possono produrre le seguenti misurazioni:
- Gravità - nello specifico, la gravità terrestre, che esclude l'accelerazione causata dal movimento del dispositivo. Un accelerometro misura il vettore di gravità quando l'IMU è ferma. Quando l'IMU è in movimento, la misurazione della gravità richiede l'aggregazione dei dati di un accelerometro e di un giroscopio, sottraendo l'accelerazione causata dal movimento.
- Accelerazione lineare - equivalente all'accelerazione del dispositivo misurata dall'accelerometro, ma sottraendo il vettore di gravità tramite software. L'accelerazione lineare dell'IMU può essere utilizzata per misurare il movimento nello spazio tridimensionale.
- Orientamento (assetto) - l'insieme degli angoli di Eulero, compresi imbardata (azimut), beccheggio e rollio, misurati in unità di gradi.
- Vettore di rotazione - derivato da una combinazione di dati provenienti da accelerometro, giroscopio e magnetometri. Il vettore di rotazione rappresenta un angolo di rotazione attorno a un asse specificato.
Fonti di errore delle IMU
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 al software 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. Il filtraggio di questi dati migliora la precisione.
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 contribuire a ridurre gli errori, ma esistono anche altri modi per farlo.
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 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.
La potenza di calcolo necessaria per eseguire tutte queste elaborazioni, il filtraggio e la fusione dei dati dei sensori consuma energia, il che può essere un problema nei sistemi alimentati a batteria, specie quando non è richiesto che le informazioni dell'IMU siano a flusso continuo. Per molte applicazioni integrate, è possibile ottenere ingenti risparmi energetici se l'IMU è in grado di generare un interrupt che risveglia il processore host dalla modalità di sospensione così che possa avviare l'elaborazione o intraprendere una qualche azione come risultato dell'interrupt. Per consentire questa capacità, alcuni fornitori di IMU stanno iniziando a incorporarvi funzioni decisionali e di elaborazione.
Lasciare che sia l'IMU a farsi carico di queste elaborazioni
Una di queste IMU è LSM6DSO a 6 DOF di STMicroelectronics. Incorpora tre giroscopi MEMS (sistemi microelettromeccanici) e tre accelerometri MEMS e può rilevare cambiamenti di orientamento e gesti senza la supervisione o l'assistenza di un processore host, semplicemente utilizzando l'elaborazione integrata. L'IMU consuma 0,55 mA nella modalità di prestazioni più elevate.
In questa modalità, LSM6DSO può monitorare in modo continuo il proprio assetto e il proprio movimento nello spazio e generare un interrupt in presenza di una condizione prestabilita che risveglia il processore host per eseguire ulteriori elaborazioni sul flusso del sensore. L'utilizzo di un'IMU a basso consumo che può rimanere sempre in funzione è vantaggioso perché lascia a riposo il processore host, risvegliandolo solo quando necessario. Questo è un modo sperimentato e affidabile per risparmiare energia nei sistemi alimentati a batteria.
Oltre ai sensori giroscopio e accelerometro, l'IMU LSM6DSO contiene un blocco filtro e di condizionamento del segnale, una macchina a stati finiti (FSM) in grado di eseguire fino a 16 programmi - tutti con la stessa velocità di uscita dei dati configurabile - e un core per l'apprendimento automatico. Utilizzate assieme, queste risorse possono generare interrupt di rilevamento eventi per le seguenti condizioni:
- Caduta libera
- Riattivazione
- Orientamento 6 DOF
- Rilevamento di clic e doppio clic
- Riconoscimento di attività/inattività
- Rilevamento di stato stazionario/di movimento
Il blocco di condizionamento del segnale applica i fattori di conversione memorizzati nei suoi registri di sensibilità per scalare i dati grezzi dei sensori. Quindi converte il flusso di dati grezzi dei sensori dell'IMU in un formato a 16 bit, un formato in byte a virgola mobile a mezza precisione (HFP) che l'FSM può capire. I sensori MEMS dell'IMU (accelerometri e giroscopi), i due convertitori analogico/digitale (ADC) e i quattro blocchi filtro sono mostrati nella Figura 1. I blocchi filtro sono utilizzati per convertire i segnali analogici dei sensori MEMS in flussi di dati digitali filtrati.

Figura 1: L'IMU LSM6DSO usa due ADC per convertire in flussi digitali i segnali analogici dei suoi accelerometri e giroscopi MEMS interni. Gli ADC sono seguiti da quattro filtri digitali per condizionare i segnali sui quali l'FSM interna, il core per l'apprendimento automatico e il processore host dovranno prendere una decisione. (Immagine per gentile concessione di STMicroelectronics)
L'FSM programmabile consiste in un blocco di configurazione e in sedici blocchi di programma. Il blocco di configurazione dell'FSM configura e controlla tutta l'FSM. Ognuno dei sedici blocchi di programma dell'FSM è costituito da un blocco selettore dell'ingresso e da un blocco di codice (Figura 2). Entrambi questi blocchi sono controllati da valori scritti in registri all'interno dell'IMU.

Figura 2: Ognuno dei sedici blocchi di programma dell'FSM nell'IMU LSM6DSO è costituito da un blocco selettore dell'ingresso e da un blocco di codice. (Immagine per gentile concessione di STMicroelectronics)
Il blocco selettore dell'ingresso indirizza al blocco di codice i dati di ingresso selezionati da uno dei sensori interni dell'IMU o da un sensore esterno collegato all'hub di sensori dell'IMU. L'hub di sensori dell'IMU può accogliere un massimo di quattro sensori esterni supplementari, come i magnetometri, che sono collegati all'IMU tramite una porta I2C.
Il blocco di codice dell'FSM contiene un programma per la macchina a stati. La parte fissa della sezione dei dati del blocco di programma è composta da sei byte che definiscono il numero di soglie, l'isteresi, la maschera e le impostazioni del timer per il programma. La sezione dei dati variabili del blocco di programma contiene la soglia, l'isteresi, la maschera e le impostazioni del timer effettive per ogni programma, come definito dai valori memorizzati nella parte fissa della sezione dei dati.
La parte fissa della sezione dei dati definisce anche le dimensioni della parte variabile dell'ingombro della memoria del blocco di codice, un vettore di reset programmabile e un contatore di programma. Poiché sono tutti valori a 8 bit, ogni programma FSM è limitato a 256 byte.
La sezione delle istruzioni del blocco di programma contiene il programma effettivo FSM. Le istruzioni del programma includono opcode per il controllo degli ingressi dei sensori rispetto alle soglie, degli zero-crossing e dei valori del timer per il confronto del timeout. Gli opcode specificano la condizione necessaria per passare dallo stato corrente dell'FSM a quello successivo. Inoltre, vi sono degli opcode di comando per scegliere le soglie e le maschere memorizzate nella sezione dei dati variabili del programma, per impostare il selettore multiplex dell'hub di sensori dell'IMU per il collegamento a uno dei quattro possibili sensori esterni e per l'asserzione di un interrupt.
Ogni programma FSM può generare un interrupt e modificare il contenuto di un valore di registro corrispondente in base al segnale di ingresso selezionato. Questi valori di registro sono utilizzati per trasmettere i dati dall'IMU al processore host.
L'FSM può essere considerata come un microprocessore senza l'unità logica aritmetica. L'FSM può scegliere, fare confronti e prendere decisioni sul suo prossimo stato in base a questi confronti. Non calcola valori diversi dai risultati booleani derivanti dai confronti.
L'FSM non è un microprocessore. Può fare confronti e, sulla base di questi confronti, eseguire semplici modifiche al flusso del programma. Essendo una macchina semplice, viene programmata direttamente con gli opcode FSM. Non esiste un compilatore di linguaggio di alto livello per l'FSM, ma in genere i programmi sono così semplici che non ne hanno bisogno.
Uso dell'FSM
L'FSM dell'IMU LSM6DSO può essere programmata per generare segnali di interrupt attivati da modelli di movimento predefiniti. Per rilevare il movimento l'FSM può eseguire fino a 16 programmi simultanei e indipendenti. Ogni programma FSM è costituito da una sequenza di passi if-then-else e utilizza come ingressi i flussi dei sensori provenienti dagli accelerometri e dai giroscopi dell'LSM6DSO. Se uno dei programmi FSM rileva una corrispondenza con il modello preprogrammato, l'FSM può generare un interrupt al processore host.
Ognuno dei sedici programmi FSM possibili contiene tre sezioni di memoria per dati fissi, dati variabili e istruzioni. Nella Figura 3 viene mostrato il diagramma a blocchi di un singolo programma FSM.

Figura 3: L'FSM nell'IMU LSM6DSO di STMicroelectronics incorpora sedici blocchi di codice, ognuno dei quali contiene tre sezioni di memoria per dati fissi, dati variabili e istruzioni. (Immagine per gentile concessione di STMicroelectronics)
La struttura di un singolo programma in un blocco di codice è costituita da tre sezioni in un blocco di memoria:
- Una sezione di dati fissi, le cui dimensioni sono identiche per tutti i programmi FSM.
- Una sezione di dati variabili, di dimensioni variabili
- Una sezione di istruzioni, che contiene condizioni e comandi
La programmazione di ogni blocco di codice FSM comporta il caricamento delle tre sezioni di memoria con valori di programmazione che determinano il comportamento dell'FSM. STMicroelectronics fornisce uno strumento di programmazione FSM all'interno del software di sviluppo Unico scaricabile e del relativo ambiente di sviluppo. Inoltre, STMicroelectronics ha incluso negli strumenti di sviluppo Unico diversi programmi FSM di esempio per agevolare l'apprendimento della programmazione dell'FSM. Questi programmi di esempio dimostrano diversi scenari di interrupt basati sull'IMU, tra cui:
- Un contapassi di base
- Sistema in caduta libera
- Rilevamento semplice del movimento
- Il sistema è stato prelevato
- Il sistema è stato scosso
- Il sistema ha smesso di muoversi (fermo)
- Inclinazione del polso
Gli esempi del programma campione per FSM dimostrano l'uso delle varie funzioni FSM. Questi programmi di esempio possono essere installati in una piattaforma demo IMU come la scheda di valutazione eMotion STM32 STEVAL-MKI109V3, che ha un connettore a 28 pin che accetta la scheda adattatore IMU LSM6DSO STEVAL-MKI197V1. Per programmare la scheda STEVAL-MKI109V2 con uno dei programmi di esempio sono richiesti solo pochi clic nell'ambiente di sviluppo Unico.
Tuttavia, LSM6DSO ha altre funzionalità nascoste.
Il core per l'apprendimento automatico
L'IMU LSM6DSO incorpora anche un motore di abbinamento di pattern programmabile e più sofisticato chiamato "core per l'apprendimento automatico". Questo core è in grado di identificare le classi di movimento utilizzando i vari flussi di dati provenienti dai sensori interni dell'IMU e da qualsiasi sensore esterno collegato. Le classi degli eventi riconoscibili includono stato stazionario (nessun movimento), passeggiata, jogging, ciclismo e guida. La classificazione assume la forma di alberi decisionali all'interno del core per l'apprendimento automatico.
Il core per l'apprendimento automatico è costituito da tre blocchi: il blocco dati dei sensori, il blocco di calcolo e l'albero decisionale (Figura 4). Il blocco dati dei sensori del core per l'apprendimento automatico aggrega i flussi di dati provenienti dagli accelerometri e dai giroscopi interni dell'IMU e da qualsiasi sensore esterno collegato all'IMU attraverso l'interfaccia I2C. Il blocco di calcolo può filtrare i dati dei sensori utilizzando parametri di filtraggio predefiniti e calcolare statistiche a finestre che includono la media, la varianza, l'ampiezza picco-picco, il minimo, il massimo e zero crossing per i dati dei sensori. Per classificare i dati di ingresso, l'albero decisionale confronta le statistiche dei dati dei sensori calcolate a fronte delle soglie.

Figura 4: Il core per l'apprendimento automatico nell'IMU LSM6DSO di STMicroelectronics è costituito da tre blocchi: un blocco dati dei sensori che aggrega i flussi di dati provenienti dai sensori interni ed esterni, un blocco di calcolo che filtra i dati dei sensori e calcola le statistiche su quei dati, e un albero decisionale che classifica gli eventi sulla base delle statistiche calcolate. (Immagine per gentile concessione di STMicroelectronics)
Come per l'FSM di LSM6DSO, per programmare il core per l'apprendimento automatico dell'IMU viene utilizzato un tool dedicato nell'ambiente di sviluppo Unico.
La macchina a stati finiti e il core per l'apprendimento automatico possono essere utilizzati anche in combinazione con un processore host per implementare algoritmi più sofisticati di tracciamento della posizione. Il pacchetto software scaricabile X-CUBE-MEMS1 di STMicroelectronics per il suo sistema di sviluppo STM32Cube include le seguenti routine software di esempio:
- Riconoscimento dell'attività - Fornisce informazioni sul tipo di attività svolta dall'utente, tra cui stare immobili, camminare, camminare a passo spedito, fare jogging, andare in bicicletta o guidare. In linea di massima questo algoritmo potrebbe essere utilizzato in un telefono cellulare o in un qualche tipo di dispositivo indossabile.
- Rilevamento della durata del movimento - Quando combinato con i dati del contapassi, il rilevamento della durata del movimento può essere utilizzato per determinare per quanti secondi un utente è attivo. Questo algoritmo potrebbe essere utilizzato in un dispositivo indossabile per fitness o monitoraggio della salute.
- Rilevamento dell'intensità di vibrazione o di movimento - Fornisce informazioni sull'intensità del movimento dell'utente e può distinguerla in un intervallo che va da 0 (fermo) a 10 (sprint). Questo algoritmo potrebbe essere utilizzato in un telefono cellulare o in un qualche tipo di dispositivo indossabile di fitness.
- Riconoscimento della posizione di trasporto - Fornisce informazioni su come l'utente sta portando un dispositivo e può distinguere tra le seguenti posizioni: su una scrivania, in mano, vicino alla testa, in una tasca della camicia, in una tasca dei pantaloni, in una tasca della giacca e su un braccio che oscilla. Questo algoritmo potrebbe essere utilizzato in un telefono cellulare o in un qualche tipo di dispositivo portatile per un'attività legata al rilevamento del contesto.
Conclusione
A causa del consumo energetico relativamente elevato del processore host, tenerlo in funzione per mantenere un assetto di posizione e per rilevare movimenti e gesti dai dati IMU può essere un obiettivo difficile da raggiungere con i progetti embedded alimentati a batteria. Tuttavia, una nuova generazione di IMU a basso consumo con un'elaborazione integrata sufficiente per eseguire l'apprendimento automatico può risolvere questo problema consentendo al processore host di rimanere inattivo in modalità a basso consumo finché non è richiesta la sua attivazione.
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.



