Giroscopul este un senzor care măsoară viteza unghiulară de rotație a dispozitivului în raport cu trei axe. Spre deosebire de accelerometru, care înregistrează accelerația liniară, giroscopul determină rotația și orientarea în spațiu. Conform datelor STMicroelectronics, 2024, MEMS-giroscopurile moderne asigură o precizie de până la 0,01 grade pe secundă, ceea ce permite utilizarea lor în navigație, stabilizare a imaginii și aplicații AR.
Principalele
Giroscopul din smartphone este un senzor microelectromecanic (MEMS) care măsoară viteza unghiulară de rotație a dispozitivului. Spre deosebire de giroscopurile mecanice din aviație, MEMS-giroscopul este un cip de siliciu de dimensiune 2×2×1 mm montat pe placa de bază a telefonului.
În smartphone-urile moderne se folosesc exclusiv MEMS-giroscopuri de tip vibrator — tuning-fork și ring-design. Acestea nu au părți rotative, ceea ce asigură o durabilitate de până la 10 ani de funcționare continuă. Producători de top — Bosch Sensortec (seria BMI), STMicroelectronics (seriile L3G, A3G) și InvenSense (seria ICM).
Un MEMS-giroscop tipic are un domeniu de măsurare de la ±125 la ±2000 °/s, frecvența de eșantionare până la 32 kHz și un consum de curent de 3–6 mA. Conform datelor Bosch Sensortec BMI160 (2023), nivelul de zgomot este de 0,007 °/s/√Hz la domeniul ±125 °/s — suficient pentru urmărirea precisă a rotațiilor.
| Parametru | Valoare |
|---|---|
| Tehnologie | MEMS (vibrator) |
| Domeniu | ±125 — ±2000 °/s |
| Consum | 3–6 mA |
| Dimensiune | 2×2×1 mm |
| Zgomot | 0,007 °/s/√Hz |
Principiul de funcționare al MEMS-giroscopului se bazează pe efectul Coriolis. În interiorul cipului se află o masă de siliciu care oscilează la o frecvență specifică (15–30 kHz). Când dispozitivul se rotește, asupra masei oscilante acționează forța Coriolis proporțională cu viteza unghiulară.
Elementele cheie ale MEMS-giroscopului sunt electrozii de acționare care creează oscilațiile și electrozii sensibili care înregistrează deviația. Conform cercetării „MEMS Gyroscopes for Consumer Electronics“ (IEEE, 2023), construcția tipică include 4–8 structuri pieptene dispuse simetric în jurul masei centrale.
Giroscopurile moderne transmit date prin magistrala I²C sau SPI. Controlerul smartphone-ului primește valorile triaxiale ale vitezei unghiulare — pentru axele X (Pitch), Y (Roll) și Z (Yaw). ADC-ul intern convertește semnalul capacitiv în valori digitale cu o rezoluție de 16–24 biți. Frecvența de actualizare în modul jocuri atinge 400 Hz.
Accelerometrul măsoară accelerația liniară — modificarea vitezei obiectului de-a lungul axelor. Giroscopul măsoară rotația — viteza de modificare a unghiului. Acești senzori sunt complementari: accelerometrul oferă orientarea față de vectorul gravitațional, dar nu distinge înclinarea de mișcarea liniară. Giroscopul urmărește rotațiile independent de gravitație, dar este supus derivelor.
În aplicațiile reale se utilizează Sensor Fusion — un algoritm care îmbină datele de la giroscop, accelerometru și magnetometru. Filtrul Mahony sau filtrul complementar calculează cuaternionii de orientare cu o precizie de până la 2 grade în statică și 5 grade în dinamică. Android oferă senzorul virtual TYPE_ROTATION_VECTOR la nivel de 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] — cuaternion de orientare
}
}
Android oferă două tipuri de senzori giroscopici: TYPE_GYROSCOPE (calibrat, fără derive) și TYPE_GYROSCOPE_UNCALIBRATED (date brute cu estimarea derivelor). Accesul la acestea se face prin SensorManager.getDefaultSensor(). Datele sunt returnate în rad/s — radiani pe secundă.
Înregistrarea ascultătorului giroscopului necesită specificarea întârzierii: SENSOR_DELAY_GAME (20 ms) pentru jocuri, SENSOR_DELAY_UI (67 ms) pentru interfață, SENSOR_DELAY_FASTEST (0 ms) pentru frecvență maximă. Fără anularea înregistrării în onPause() bateria se descarcă în 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
)
}
}
}
Datele brute din event.values[0..2] corespund vitezei unghiulare pe axele X, Y și Z. Pentru a obține unghiul de rotație, trebuie integrată viteza unghiulară în timp. La frecvența de 50 Hz, eroarea de integrare este de aproximativ 1 grad pe minut — acceptabil pentru jocuri, dar insuficient pentru navigație fără corecție.
Deriva de zero (bias drift) — principala problemă a MEMS-giroscopurilor. Chiar și în stare de repaus, senzorul poate afișa o viteză unghiulară nenulă (0,1–2 °/s). Cauza — modificările de temperatură și tensiunile mecanice în structura de siliciu. Producătorii compensează acest efect la nivel hardware.
Sistemul Android calibrează automat giroscopul la prima pornire sau la modificarea temperaturii. Procesul de calibrare durează 10–30 de secunde și nu necesită intervenția utilizatorului — este suficient să așezați telefonul pe o suprafață fixă. Metoda calibrate() nu este disponibilă pe toate dispozitivele. Pentru calibrare forțată se utilizează TYPE_GYROSCOPE_UNCALIBRATED cu obținerea bias offset prin event.values[3..5].
private fun handleUncalibratedGyro(event: SensorEvent) {
val rawX = event.values[0] // rad/s fără calibrare
val biasX = event.values[3] // offset X
val calibratedX = rawX - biasX
applyCalibrationToFusion(
calibratedX,
event.values[1] - event.values[4],
event.values[2] - event.values[5]
)
}
Giroscopul este folosit în zeci de scenarii — de la stabilizarea camerei până la căștile VR Google Cardboard. ARKit de la Apple și ARCore de la Google utilizează giroscopul ca senzor principal pentru urmărirea rotației capului. Conform Apple ARKit Technical Specification (2024), giroscopul împreună cu accelerometrul asigură o precizie de urmărire de până la 0,5 grade.
Dincolo de electronica de consum, giroscopurile sunt utilizate în robotică și drone. Roboții mobili bazați pe Android Things și ROS (Robot Operating System) folosesc MEMS-giroscopuri pentru stabilizarea mișcării și odometrie. Conform cercetării IEEE „MEMS IMU in Robotics“ (2024), precizia de poziționare a robotului mobil cu giroscop este de 3–5 ori mai mare decât cu odometria doar a roților, în special la mișcarea pe suprafețe alunecoase. În dronele de consum, giroscopul împreună cu barometrul menține altitudinea de zbor cu o precizie de 0,5 metri la vânt de până la 10 m/s.
Pentru aplicațiile AR, giroscopul este senzorul principal care determină poziția obiectelor virtuale în raport cu lumea reală. Google ARCore folosește giroscopul pentru urmărirea mișcării dispozitivului cu frecvența de 1000 Hz (prin eșantionare internă, independent de frecvența API). ARKit de la Apple atinge o precizie de poziționare de 0,5 grade în timpul mișcării, suficientă pentru suprapunerea mobilei virtuale sau a personajelor de joc pe scena reală.
Noua generație de IMU cu 6 axe (InvenSense ICM-42688, 2024) combină giroscopul și accelerometrul într-un singur cip cu un consum de 0,45 mA în modul de consum redus. Dezvoltarea gradiometrelor și a giroscopurilor atomice pentru dispozitive mobile rămâne în stadiul de prototipuri de laborator. Probele industriale de MEMS-giroscop cu precizie de 0,001 °/s sunt așteptate până în 2028.
Întrebări frecvente
Giroscopul determină rotația și orientarea dispozitivului în spațiu. Fără el sunt imposibile modul VR, rotirea automată a ecranului la înclinare, stabilizarea video și aplicațiile AR. Telefoanele moderne nu pot funcționa fără giroscop.
Accelerometrul măsoară accelerația liniară (mișcarea și înclinarea față de gravitație). Giroscopul măsoară viteza unghiulară (rotația). Accelerometrul nu distinge rotația dispozitivului de deplasarea sa liniară — giroscopul rezolvă această problemă.
În Android se utilizează calibrarea automată. Pentru calibrarea manuală descărcați aplicații precum „GPS Status & Toolbox“ — acestea propun așezarea telefonului pe o suprafață plană și efectuarea calibrării prin TYPE_GYROSCOPE_UNCALIBRATED.
Aceasta este deriva de zero — o caracteristică naturală a senzorilor MEMS. Chiar și giroscopurile scumpe au un offset de 0,1–2 °/s în repaus. Calibrarea scade acest offset. Dacă derivea depășește 5 °/s — senzorul este defect.
Utilizați SensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) și înregistrați SensorEventListener. Datele vin în rad/s pe trei axe. Pentru jocuri folosiți SENSOR_DELAY_GAME (20 ms), pentru fundal — SENSOR_DELAY_UI (67 ms).
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și