Gyroskop je senzor měřící úhlovou rychlost otáčení zařízení vzhledem ke třem osám. Na rozdíl od akcelerometru, který zaznamenává lineární zrychlení, gyroskop určuje otáčení a orientaci v prostoru. Podle údajů STMicroelectronics, 2024, moderní MEMS-gyroskopy poskytují přesnost až 0,01 stupně za sekundu, což umožňuje jejich použití v navigaci, stabilizaci obrazu a AR aplikacích.
Hlavní body
Gyroskop v chytrém telefonu je mikroelektromechanický senzor (MEMS), který měří úhlovou rychlost otáčení zařízení. Na rozdíl od mechanických gyroskopů v letectví je MEMS-gyroskop křemíkový čip o velikosti 2×2×1 mm umístěný na základní desce telefonu.
V moderních chytrých telefonech se používají výhradně MEMS-gyroskopy vibračního typu — tuning-fork a ring-design. Nemají žádné rotující části, což zajišťuje životnost až 10 let nepřetržitého provozu. Přední výrobci — Bosch Sensortec (řada BMI), STMicroelectronics (řady L3G, A3G) a InvenSense (řada ICM).
Typický MEMS-gyroskop má rozsah měření od ±125 do ±2000 °/s, vzorkovací frekvenci až 32 kHz a odběr proudu 3–6 mA. Podle údajů Bosch Sensortec BMI160 (2023) je úroveň šumu 0,007 °/s/√Hz při rozsahu ±125 °/s — to je dostatečné pro přesné sledování otáček.
| Parametr | Hodnota |
|---|---|
| Technologie | MEMS (vibrační) |
| Rozsah | ±125 — ±2000 °/s |
| Odběr | 3–6 mA |
| Velikost | 2×2×1 mm |
| Šum | 0,007 °/s/√Hz |
Princip fungování MEMS-gyroskopu je založen na Coriolisově jevu. Uvnitř čipu se nachází křemíková hmota, která kmitá s určitou frekvencí (15–30 kHz). Když se zařízení otáčí, na kmitající hmotu působí Coriolisova síla úměrná úhlové rychlosti.
Klíčovými prvky MEMS-gyroskopu jsou hnací elektrody vytvářející kmity a citlivé elektrody zaznamenávající odchylku. Podle výzkumu „MEMS Gyroscopes for Consumer Electronics“ (IEEE, 2023) typická konstrukce zahrnuje 4–8 hřebenových struktur symetricky rozmístěných kolem centrální hmoty.
Moderní gyroskopy přenášejí data přes sběrnici I²C nebo SPI. Řadič chytrého telefonu přijímá tříosé hodnoty úhlové rychlosti — pro osy X (Pitch), Y (Roll) a Z (Yaw). Vestavěný ADC převádí kapacitní signál na digitální hodnoty s rozlišením 16–24 bitů. Frekvence aktualizace v herním režimu dosahuje 400 Hz.
Akcelerometr měří lineární zrychlení — změnu rychlosti objektu podél os. Gyroskop měří otáčení — rychlost změny úhlu. Tyto senzory jsou komplementární: akcelerometr poskytuje orientaci vzhledem k vektoru gravitace, ale nerozlišuje náklon od lineárního pohybu. Gyroskop sleduje otáčky nezávisle na gravitaci, ale je náchylný k driftu.
V reálných aplikacích se používá Sensor Fusion — algoritmus spojující data z gyroskopu, akcelerometru a magnetometru. Mahonyho filtr nebo komplementární filtr vypočítává kvaterniony orientace s přesností až 2 stupně ve statice a 5 stupňů v dynamice. Android poskytuje virtuální senzor TYPE_ROTATION_VECTOR na úrovni frameworku.
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] — kvaternion orientace
}
}
Android poskytuje dva typy gyroskopických senzorů: TYPE_GYROSCOPE (kalibrovaný, bez driftu) a TYPE_GYROSCOPE_UNCALIBRATED (surová data s odhadem driftu). Přístup k nim je přes SensorManager.getDefaultSensor(). Data jsou vrácena v rad/s — radiánech za sekundu.
Registrace posluchače gyroskopu vyžaduje zadání zpoždění: SENSOR_DELAY_GAME (20 ms) pro hry, SENSOR_DELAY_UI (67 ms) pro rozhraní, SENSOR_DELAY_FASTEST (0 ms) pro maximální frekvenci. Bez zrušení registrace v onPause() se baterie vybije za 2–3 hodiny.
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
)
}
}
}
Surová data z event.values[0..2] odpovídají úhlové rychlosti pro X, Y a Z. Pro získání úhlu otočení je třeba integrovat úhlovou rychlost v čase. Při frekvenci 50 Hz je chyba integrace přibližně 1 stupeň za minutu — přijatelné pro hry, ale nedostatečné pro navigaci bez korekce.
Drift nuly (bias drift) — hlavní problém MEMS-gyroskopů. I v klidu může senzor vykazovat nenulovou úhlovou rychlost (0,1–2 °/s). Příčinou jsou teplotní změny a mechanická napětí v křemíkové struktuře. Výrobci kompenzují tento efekt na hardwarové úrovni.
Systém Android automaticky kalibruje gyroskop při prvním zapnutí nebo při změně teploty. Proces kalibrace trvá 10–30 sekund a nevyžaduje zásah uživatele — stačí položit telefon na nehybný povrch. Metoda calibrate() není dostupná na všech zařízeních. Pro vynucenou kalibraci se používá TYPE_GYROSCOPE_UNCALIBRATED se získáním bias offset přes event.values[3..5].
private fun handleUncalibratedGyro(event: SensorEvent) {
val rawX = event.values[0] // rad/s bez kalibrace
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]
)
}
Gyroskop se používá v desítkách scénářů — od stabilizace kamery po VR headsety Google Cardboard. ARKit od Apple a ARCore od Google používají gyroskop jako hlavní senzor pro sledování otáčení hlavy. Podle Apple ARKit Technical Specification (2024) poskytuje gyroskop spolu s akcelerometrem přesnost sledování až 0,5 stupně.
Mimo spotřební elektroniku se gyroskopy používají v robotice a dronech. Mobilní roboty založené na Android Things a ROS (Robot Operating System) používají MEMS-gyroskopy pro stabilizaci pohybu a odometrii. Podle výzkumu IEEE „MEMS IMU in Robotics“ (2024) je přesnost polohování mobilního robota s gyroskopem 3–5krát vyšší než s odometrií pouze kol, zejména při pohybu na kluzkých površích. Ve spotřebních dronech udržuje gyroskop spolu s barometrem výšku letu s přesností 0,5 metru při větru do 10 m/s.
Pro AR aplikace je gyroskop hlavním senzorem určujícím polohu virtuálních objektů vůči reálnému světu. Google ARCore používá gyroskop ke sledování pohybu zařízení s frekvencí 1000 Hz (prostřednictvím interního vzorkování, nezávisle na frekvenci API). ARKit od Apple dosahuje přesnosti polohování 0,5 stupně při pohybu, což je dostatečné pro umístění virtuálního nábytku nebo herních postav na reálnou scénu.
Nová generace 6-osých IMU (InvenSense ICM-42688, 2024) spojuje gyroskop a akcelerometr v jednom čipu s odběrem 0,45 mA v režimu nízké spotřeby. Vývoj gradiometrů a atomových gyroskopů pro mobilní zařízení zůstává ve fázi laboratorních prototypů. Průmyslové vzorky MEMS-gyroskopů s přesností 0,001 °/s se očekávají do roku 2028.
Často kladené otázky
Gyroskop určuje otáčení a orientaci zařízení v prostoru. Bez něj jsou nemožné režim VR, automatické otáčení obrazovky při náklonu, stabilizace videa a AR aplikace. Moderní telefony nemohou fungovat bez gyroskopu.
Akcelerometr měří lineární zrychlení (pohyb a náklon vůči gravitaci). Gyroskop měří úhlovou rychlost (otáčení). Akcelerometr nerozlišuje otáčení zařízení od jeho lineárního posunu — gyroskop tento problém řeší.
V Androidu se používá automatická kalibrace. Pro ruční kalibraci si stáhněte aplikace jako „GPS Status & Toolbox“ — ty navrhují položit telefon na rovný povrch a provést kalibraci přes TYPE_GYROSCOPE_UNCALIBRATED.
To je drift nuly — přirozená vlastnost MEMS-senzorů. I drahé gyroskopy mají offset 0,1–2 °/s v klidu. Kalibrace tento offset odečítá. Pokud drift přesahuje 5 °/s — je senzor vadný.
Použijte SensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) a zaregistrujte SensorEventListener. Data přicházejí v rad/s podél tří os. Pro hry použijte SENSOR_DELAY_GAME (20 ms), pro pozadí — SENSOR_DELAY_UI (67 ms).
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také