A giroszkóp egy érzékelő, amely a készülék három tengelyhez viszonyított forgási szögsebességét méri. Az gyorsulásmérővel ellentétben, amely lineáris gyorsulást rögzít, a giroszkóp a forgást és térbeli tájolást határozza meg. A STMicroelectronics, 2024 adatai szerint a modern MEMS-giroszkópok akár 0,01 fok/másodperc pontosságot biztosítanak, lehetővé téve használatukat navigációban, képstabilizálásban és AR alkalmazásokban.
Főbb pontok
Giroszkóp az okostelefonban egy mikroelektromechanikai érzékelő (MEMS), amely méri a készülék forgási szögsebességét. A repülésben használt mechanikus giroszkópokkal ellentétben a MEMS-giroszkóp egy 2×2×1 mm méretű szilícium chip, amely a telefon alaplapjára van szerelve.
A modern okostelefonokban kizárólag MEMS-giroszkópokat használnak, rezgő típusúakat — tuning-fork és ring-design. Nincsenek forgó alkatrészeik, ami akár 10 év folyamatos működést biztosít. Vezető gyártók — Bosch Sensortec (BMI sorozat), STMicroelectronics (L3G, A3G sorozatok) és InvenSense (ICM sorozat).
Egy tipikus MEMS-giroszkóp mérési tartománya ±125-től ±2000 °/s-ig, mintavételi frekvenciája 32 kHz-ig, és áramfelvétele 3–6 mA. A Bosch Sensortec BMI160 (2023) adatai szerint a zajszint 0,007 °/s/√Hz a ±125 °/s tartományban — ami elegendő a forgások pontos követéséhez.
| Paraméter | Érték |
|---|---|
| Technológia | MEMS (rezgő) |
| Tartomány | ±125 — ±2000 °/s |
| Áramfelvétel | 3–6 mA |
| Méret | 2×2×1 mm |
| Zaj | 0,007 °/s/√Hz |
A MEMS-giroszkóp működési elve a Coriolis-hatáson alapul. A chip belsejében egy szilícium tömeg található, amely egy meghatározott frekvencián (15–30 kHz) rezeg. Amikor a készülék forog, a rezgő tömegre a szögsebességgel arányos Coriolis-erő hat.
A MEMS-giroszkóp kulcselemei a meghajtó elektródák, amelyek rezgéseket hoznak létre, és az érzékeny elektródák, amelyek rögzítik az eltérést. Az IEEE „MEMS Gyroscopes for Consumer Electronics“ (2023) kutatása szerint a tipikus felépítés 4–8 fésűs struktúrát tartalmaz, amelyek szimmetrikusan helyezkednek el a központi tömeg körül.
A modern giroszkópok adatokat továbbítanak I²C vagy SPI buszon keresztül. Az okostelefon vezérlője háromtengelyű szögsebesség értékeket kap — az X (Pitch), Y (Roll) és Z (Yaw) tengelyekre. A beépített ADC átalakítja a kapacitív jelet digitális értékekké 16–24 bites felbontással. A frissítési frekvencia játék módban eléri a 400 Hz-et.
Gyorsulásmérő lineáris gyorsulást mér — a tárgy sebességének változását a tengelyek mentén. Giroszkóp forgást mér — a szögváltozás sebességét. Ezek az érzékelők komplementerek: a gyorsulásmérő tájolást ad a gravitációs vektorhoz képest, de nem különbözteti meg a dőlést a lineáris mozgástól. A giroszkóp a forgást a gravitációtól függetlenül követi, de hajlamos az eltolódásra.
Valós alkalmazásokban Sensor Fusion-t használnak — egy algoritmust, amely egyesíti a giroszkóp, a gyorsulásmérő és a magnetométer adatait. A Mahony-szűrő vagy a komplementer szűrő 2 fokos pontossággal számol tájolási kvaterniókat statikus állapotban, és 5 fokos pontossággal dinamikus állapotban. Az Android virtuális TYPE_ROTATION_VECTOR érzékelőt biztosít keretrendszer szinten.
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] — tájolási kvaternió
}
}
Az Android kétféle giroszkóp érzékelőt biztosít: TYPE_GYROSCOPE (kalibrált, eltolódás nélkül) és TYPE_GYROSCOPE_UNCALIBRATED (nyers adatok eltolódás becsléssel). Hozzáférésük a SensorManager.getDefaultSensor()-ön keresztül történik. Az adatok rad/s — radián per másodperc — mértékegységben kerülnek visszaadásra.
A giroszkóp hallgatójának regisztrálása megköveteli a késleltetés megadását: SENSOR_DELAY_GAME (20 ms) játékokhoz, SENSOR_DELAY_UI (67 ms) interfészhez, SENSOR_DELAY_FASTEST (0 ms) maximális frekvenciához. A regisztráció onPause()-ban történő visszavonása nélkül az akkumulátor 2–3 óra alatt lemerül.
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
)
}
}
}
Nyers adatok az event.values[0..2]-ből megfelelnek a szögsebességnek X, Y és Z tengelyekre. A forgási szög megszerzéséhez integrálni kell a szögsebességet az idő függvényében. 50 Hz-es frekvencián az integrációs hiba körülbelül 1 fok/perc — ez elfogadható játékokhoz, de nem elegendő navigációhoz korrekció nélkül.
Nullponti eltolódás (bias drift) — a MEMS-giroszkópok fő problémája. Még nyugalomban is az érzékelő nem nulla szögsebességet (0,1–2 °/s) mutathat. Ok — hőmérséklet-változások és mechanikai feszültségek a szilícium struktúrában. A gyártók ezt a hatást hardver szinten kompenzálják.
Az Android rendszer automatikusan kalibrálja a giroszkópot első bekapcsoláskor vagy hőmérséklet-változáskor. A kalibrációs folyamat 10–30 másodpercig tart, és nem igényel felhasználói beavatkozást — elég a telefont mozdulatlan felületre helyezni. A calibrate() metódus nem minden eszközön érhető el. Kényszerített kalibrációhoz a TYPE_GYROSCOPE_UNCALIBRATED használatos a bias offset megszerzésével az event.values[3..5]-ön keresztül.
private fun handleUncalibratedGyro(event: SensorEvent) {
val rawX = event.values[0] // rad/s kalibráció nélkül
val biasX = event.values[3] // X eltolódás
val calibratedX = rawX - biasX
applyCalibrationToFusion(
calibratedX,
event.values[1] - event.values[4],
event.values[2] - event.values[5]
)
}
A giroszkópot több tucat forgatókönyvben használják — a kamera stabilizálásától a VR fejhallgatókig Google Cardboard. Az Apple ARKit-je és a Google ARCore-ja a giroszkópot használja fő érzékelőként a fej forgásának követésére. Az Apple ARKit Technical Specification (2024) szerint a giroszkóp a gyorsulásmérővel együtt akár 0,5 fokos követési pontosságot biztosít.
A fogyasztói elektronikán túl a giroszkópokat robotikában és drónokban használják. Az Android Things és ROS (Robot Operating System) alapú mobil robotok MEMS-giroszkópokat használnak a mozgás stabilizálására és odometriára. Az IEEE „MEMS IMU in Robotics“ (2024) kutatása szerint a mobil robot pozicionálási pontossága giroszkóppal 3–5-ször nagyobb, mint csak kerék odometriával, különösen csúszós felületeken történő mozgáskor. Fogyasztói drónokban a giroszkóp a barométerrel együtt 0,5 méteres pontossággal tartja a repülési magasságot akár 10 m/s-os szélben.
AR alkalmazásokhoz a giroszkóp a fő érzékelő, amely meghatározza a virtuális objektumok helyzetét a valós világhoz képest. A Google ARCore a giroszkópot használja a készülék mozgásának követésére 1000 Hz-es frekvencián (belső mintavételezéssel, az API frekvenciájától függetlenül). Az Apple ARKit-je 0,5 fokos pozicionálási pontosságot ér el mozgás közben, ami elegendő virtuális bútorok vagy játékkarakterek valós jelenetre helyezéséhez.
Az új generációs 6 tengelyes IMU (InvenSense ICM-42688, 2024) egyetlen chipben egyesíti a giroszkópot és a gyorsulásmérőt 0,45 mA fogyasztással alacsony energiafogyasztású módban. A gradiométerek és atomgiroszkópok fejlesztése mobil eszközökhöz továbbra is laboratóriumi prototípusok stádiumában marad. A 0,001 °/s pontosságú ipari MEMS-giroszkóp minták 2028-ig várhatók.
Gyakran Ismételt Kérdések
A giroszkóp meghatározza a készülék forgását és tájolását a térben. Nélküle lehetetlen a VR mód, a képernyő automatikus elforgatása döntéskor, a videó stabilizálása és az AR alkalmazások. A modern telefonok nem működhetnek giroszkóp nélkül.
Gyorsulásmérő lineáris gyorsulást mér (mozgás és dőlés a gravitációhoz képest). Giroszkóp szögsebességet mér (forgás). A gyorsulásmérő nem különbözteti meg a készülék forgását a lineáris elmozdulástól — a giroszkóp megoldja ezt a problémát.
Androidban automatikus kalibrációt használnak. Kézi kalibrációhoz töltsön le olyan alkalmazásokat, mint a „GPS Status & Toolbox“ — ezek azt javasolják, hogy helyezze a telefont sík felületre, és végezze el a kalibrációt a TYPE_GYROSCOPE_UNCALIBRATED-en keresztül.
Ez a nullponti eltolódás — a MEMS-érzékelők természetes tulajdonsága. Még a drága giroszkópoknak is van 0,1–2 °/s offset-e nyugalomban. A kalibráció kivonja ezt az offset-et. Ha az eltolódás meghaladja az 5 °/s-ot — az érzékelő hibás.
Használja a SensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) függvényt, és regisztráljon egy SensorEventListener-t. Az adatok rad/s-ban érkeznek három tengely mentén. Játékokhoz használja a SENSOR_DELAY_GAME (20 ms), háttérhez — a SENSOR_DELAY_UI (67 ms) értéket.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is