Un giroscopio è un sensore che misura la velocità angolare di rotazione di un dispositivo rispetto a tre assi. A differenza di un accelerometro, che misura l’accelerazione lineare, un giroscopio rileva la rotazione e l’orientamento nello spazio. Secondo STMicroelectronics, 2024, i giroscopi MEMS moderni raggiungono una precisione fino a 0,01 gradi al secondo, consentendone l’uso in navigazione, stabilizzazione dell’immagine e applicazioni di RA.
Punti chiave
Un giroscopio in uno smartphone è un sensore microelettromeccanico (MEMS) che misura la velocità angolare di rotazione del dispositivo. A differenza dei giroscopi meccanici usati in aviazione, un giroscopio MEMS è un chip di silicio di 2×2×1 mm montato sulla scheda madre del telefono.
Gli smartphone moderni utilizzano esclusivamente giroscopi MEMS di tipo vibrante — tuning-fork e ring-design. Non hanno parti rotanti, garantendo una durata fino a 10 anni di funzionamento continuo. I principali produttori sono Bosch Sensortec (serie BMI), STMicroelectronics (serie L3G, A3G) e InvenSense (serie ICM).
Un tipico giroscopio MEMS ha un range di misura da ±125 a ±2000 °/s, una frequenza di campionamento fino a 32 kHz e un consumo di corrente di 3–6 mA. Secondo Bosch Sensortec BMI160 (2023), il livello di rumore è di 0,007 °/s/√Hz a un range di ±125 °/s — sufficiente per un tracciamento preciso delle rotazioni.
| Parametro | Valore |
|---|---|
| Tecnologia | MEMS (vibrante) |
| Range | ±125 — ±2000 °/s |
| Consumo | 3–6 mA |
| Dimensioni | 2×2×1 mm |
| Rumore | 0,007 °/s/√Hz |
Il principio di funzionamento di un giroscopio MEMS si basa sull’effetto Coriolis. All’interno del chip c’è una massa di silicio che vibra a una frequenza specifica (15–30 kHz). Quando il dispositivo ruota, la forza di Coriolis agisce sulla massa vibrante, proporzionale alla velocità angolare.
Gli elementi chiave di un giroscopio MEMS sono gli elettrodi di pilotaggio che creano le vibrazioni e gli elettrodi sensori che rilevano lo spostamento. Secondo l’articolo di ricerca “MEMS Gyroscopes for Consumer Electronics” (IEEE, 2023), un design tipico include 4–8 strutture a pettine disposte simmetricamente attorno alla massa centrale.
I giroscopi moderni trasmettono dati tramite bus I²C o SPI. Il controller dello smartphone riceve valori di velocità angolare su tre assi — X (Pitch), Y (Roll) e Z (Yaw). L’ADC integrato converte il segnale capacitivo in valori digitali con risoluzione di 16–24 bit. La frequenza di aggiornamento in modalità gioco raggiunge i 400 Hz.
Un accelerometro misura l’accelerazione lineare — la variazione di velocità di un oggetto lungo gli assi. Un giroscopio misura la rotazione — la velocità di variazione dell’angolo. Questi sensori sono complementari: l’accelerometro fornisce l’orientamento rispetto al vettore di gravità, ma non distingue l’inclinazione dal movimento lineare. Il giroscopio traccia le rotazioni indipendentemente dalla gravità, ma è soggetto a deriva.
Nelle applicazioni reali si utilizza la Sensor Fusion — un algoritmo che combina i dati di giroscopio, accelerometro e magnetometro. Il filtro di Mahony o il filtro complementare calcolano quaternioni di orientamento con una precisione di 2 gradi in condizioni statiche e 5 gradi in condizioni dinamiche. Android fornisce il sensore virtuale TYPE_ROTATION_VECTOR a livello di framework.
val rotationVector = sensorManager
.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR)
val callback = object : SensorEventListener {
override fun onSensorChanged(event: SensorEvent) {
val quat = FloatArray(4)
SensorManager.getQuaternionFromVector(quat, event.values)
// quat[0..3] — quaternione di orientamento
}
}
Android offre due tipi di sensori giroscopici: TYPE_GYROSCOPE (calibrato, senza deriva) e TYPE_GYROSCOPE_UNCALIBRATED (dati grezzi con stima della deriva). L’accesso avviene tramite SensorManager.getDefaultSensor(). I dati vengono restituiti in rad/s — radianti al secondo.
La registrazione di un listener per il giroscopio richiede di specificare un ritardo: SENSOR_DELAY_GAME (20 ms) per i giochi, SENSOR_DELAY_UI (67 ms) per l’interfaccia, SENSOR_DELAY_FASTEST (0 ms) per la massima frequenza. Senza annullare la registrazione in onPause(), la batteria si scarica in 2–3 ore.
class GyroActivity : AppCompatActivity() {
private lateinit var sensorManager: SensorManager
private var gyroscope: Sensor? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
gyroscope = sensorManager.getDefaultSensor(
Sensor.TYPE_GYROSCOPE
)
}
override fun onResume() {
super.onResume()
gyroscope?.let { sensor ->
sensorManager.registerListener(
this, sensor, SensorManager.SENSOR_DELAY_GAME
)
}
}
}
I dati grezzi da event.values[0..2] corrispondono alla velocità angolare lungo X, Y e Z. Per ottenere l’angolo di rotazione, è necessario integrare la velocità angolare nel tempo. A 50 Hz, l’errore di integrazione è di circa 1 grado al minuto — accettabile per i giochi ma insufficiente per la navigazione senza correzione.
La deriva dello zero (bias drift) è il problema principale dei giroscopi MEMS. Anche a riposo, il sensore può mostrare una velocità angolare non nulla (0,1–2 °/s). La causa sono le variazioni di temperatura e le sollecitazioni meccaniche nella struttura di silicio. I produttori compensano questo effetto a livello hardware.
Il sistema Android calibra automaticamente il giroscopio al primo avvio o al variare della temperatura. Il processo di calibrazione richiede 10–30 secondi e non necessita dell’intervento dell’utente — basta appoggiare il telefono su una superficie fissa. Il metodo calibrate() non è disponibile su tutti i dispositivi. Per una calibrazione forzata, si utilizza TYPE_GYROSCOPE_UNCALIBRATED ottenendo l’offset di bias tramite event.values[3..5].
private fun handleUncalibratedGyro(event: SensorEvent) {
val rawX = event.values[0] // rad/s non calibrato
val biasX = event.values[3] // offset asse X
val calibratedX = rawX - biasX
applyCalibrationToFusion(
calibratedX,
event.values[1] - event.values[4],
event.values[2] - event.values[5]
)
}
Il giroscopio è utilizzato in decine di scenari — dalla stabilizzazione della fotocamera ai cuffie VR come Google Cardboard. ARKit di Apple e ARCore di Google utilizzano il giroscopio come sensore principale per il tracciamento della rotazione della testa. Secondo Apple ARKit Technical Specification (2024), il giroscopio abbinato a un accelerometro offre una precisione di tracciamento fino a 0,5 gradi.
Oltre all’elettronica di consumo, i giroscopi sono utilizzati in robotica e UAV. Robot mobili basati su Android Things e ROS (Robot Operating System) utilizzano giroscopi MEMS per la stabilizzazione del movimento e l’odometria. Secondo lo studio IEEE “MEMS IMU in Robotics” (2024), la precisione di posizionamento di un robot mobile con giroscopio è 3–5 volte superiore alla sola odometria delle ruote, specialmente su superfici scivolose. Nei droni consumer, il giroscopio abbinato a un barometro mantiene l’altitudine di volo con una precisione di 0,5 metri con vento fino a 10 m/s.
Per le applicazioni di RA, il giroscopio è il sensore principale che determina la posizione degli oggetti virtuali rispetto al mondo reale. Google ARCore utilizza il giroscopio per il tracciamento del movimento del dispositivo a 1000 Hz (tramite campionamento interno, indipendente dalla frequenza dell’API). ARKit di Apple raggiunge una precisione di posizionamento di 0,5 gradi durante il movimento, sufficiente per sovrapporre mobili virtuali o personaggi di gioco sulla scena reale.
La nuova generazione di IMU a 6 assi (InvenSense ICM-42688, 2024) integra giroscopio e accelerometro in un singolo chip con un consumo di 0,45 mA in modalità a basso consumo. Lo sviluppo di gradiometri e giroscopi atomici per dispositivi mobili rimane nella fase di prototipo di laboratorio. Giroscopi MEMS di qualità commerciale con una precisione di 0,001 °/s sono previsti entro il 2028.
Domande frequenti
Il giroscopio rileva la rotazione e l’orientamento del dispositivo nello spazio. Senza di esso, la modalità VR, la rotazione automatica tramite inclinazione, la stabilizzazione video e le applicazioni di RA sarebbero impossibili. I telefoni moderni non possono funzionare senza un giroscopio.
Un accelerometro misura l’accelerazione lineare (movimento e inclinazione rispetto alla gravità). Un giroscopio misura la velocità angolare (rotazione). L’accelerometro non può distinguere la rotazione del dispositivo dal suo movimento lineare — il giroscopio risolve questo problema.
Android utilizza la calibrazione automatica. Per la calibrazione manuale, scarica app come “GPS Status & Toolbox” — ti guidano a posizionare il telefono su una superficie piana e a calibrare tramite TYPE_GYROSCOPE_UNCALIBRATED.
Questa è la deriva dello zero — una proprietà naturale dei sensori MEMS. Anche i giroscopi costosi hanno un offset di 0,1–2 °/s a riposo. La calibrazione sottrae questo offset. Se la deriva supera 5 °/s, il sensore è difettoso.
Usa SensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) e registra un SensorEventListener. I dati arrivano in rad/s su tre assi. Per i giochi, usa SENSOR_DELAY_GAME (20 ms); per lo sfondo, SENSOR_DELAY_UI (67 ms).
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche