Жироскоп је сензор који мјери угаону брзину ротације уређаја у односу на три осе. За разлику од акцелерометра, који биљежи линеарно убрзање, жироскоп одређује ротацију и оријентацију у простору. Према подацима STMicroelectronics, 2024, савремени MEMS-жироскопи обезбјеђују прецизност до 0,01 степени у секунди, што омогућава њихову употребу у навигацији, стабилизацији слике и AR апликацијама.
Главно
Жироскоп у паметном телефону је микроелектромеханички сензор (MEMS) који мјери угаону брзину ротације уређаја. За разлику од механичких жироскопа у ваздухопловству, MEMS-жироскоп је силицијумски чип величине 2×2×1 мм постављен на матичну плочу телефона.
У савременим паметним телефонима користе се искључиво MEMS-жироскопи вибрационог типа — tuning-fork и ring-design. Они немају ротирајуће дијелове, што обезбјеђује трајност до 10 година непрекидног рада. Водећи произвођачи — Bosch Sensortec (BMI серија), STMicroelectronics (L3G, A3G серије) и InvenSense (ICM серија).
Типичан MEMS-жироскоп има опсег мјерења од ±125 до ±2000 °/s, фреквенцију одабирања до 32 kHz и потрошњу струје 3–6 mA. Према подацима Bosch Sensortec BMI160 (2023), ниво шума износи 0,007 °/s/√Hz при опсегу ±125 °/s — довољно за прецизно праћење ротација.
| Параметар | Вриједност |
|---|---|
| Технологија | MEMS (вибрациони) |
| Опсег | ±125 — ±2000 °/s |
| Потрошња | 3–6 mA |
| Величина | 2×2×1 mm |
| Шум | 0,007 °/s/√Hz |
Принцип рада MEMS-жироскопа заснива се на Кориолисовом ефекту. Унутар чипа се налази силицијумска маса која осцилује одређеном фреквенцијом (15–30 kHz). Када се уређај окреће, на осцилујућу масу дјелује Кориолисова сила сразмјерна угаоној брзини.
Кључни елементи MEMS-жироскопа су погонске електроде које стварају осцилације и осјетљиве електроде које биљеже отклон. Према истраживању „MEMS Gyroscopes for Consumer Electronics“ (IEEE, 2023), типична конструкција укључује 4–8 чешљастих структура симетрично распоређених око централне масе.
Савремени жироскопи преносе податке путем I²C или SPI магистрале. Контролер паметног телефона добија троосне вриједности угаоне брзине — за осе X (Pitch), Y (Roll) и Z (Yaw). Уграђени ADC претвара капацитивни сигнал у дигиталне вриједности са резолуцијом од 16–24 бита. Фреквенција ажурирања у режиму игара достиже 400 Hz.
Акцелерометар мјери линеарно убрзање — промјену брзине објекта дуж оса. Жироскоп мјери ротацију — брзину промјене угла. Ови сензори су комплементарни: акцелерометар даје оријентацију у односу на вектор гравитације, али не разликује нагиб од линеарног кретања. Жироскоп прати ротације независно од гравитације, али је подложан дрифту.
У реалним апликацијама користи се Sensor Fusion — алгоритам који спаја податке жироскопа, акцелерометра и магнетометра. Махонијев филтер или комплементарни филтер израчунава кватернионе оријентације са прецизношћу до 2 степена у статици и 5 степени у динамици. Android пружа виртуелни сензор TYPE_ROTATION_VECTOR на нивоу фрејмворка.
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] — кватернион оријентације
}
}
Android пружа два типа жироскопских сензора: TYPE_GYROSCOPE (калибрисан, без дрифта) и TYPE_GYROSCOPE_UNCALIBRATED (сирови подаци са процјеном дрифта). Приступ им се остварује путем SensorManager.getDefaultSensor(). Подаци се враћају у rad/s — радијанима у секунди.
Регистрација слушаоца жироскопа захтијева навођење кашњења: SENSOR_DELAY_GAME (20 ms) за игре, SENSOR_DELAY_UI (67 ms) за интерфејс, SENSOR_DELAY_FASTEST (0 ms) за максималну фреквенцију. Без отказивања регистрације у onPause() батерија се празни за 2–3 сата.
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
)
}
}
}
Сирови подаци из event.values[0..2] одговарају угаоној брзини по X, Y и Z оси. За добијање угла ротације потребно је интегрисати угаону брзину у времену. При фреквенцији од 50 Hz грешка интеграције износи око 1 степен у минути — прихватљиво за игре, али недовољно за навигацију без корекције.
Дрифт нуле (bias drift) — главни проблем MEMS-жироскопа. Чак и у мировању, сензор може показивати ненулту угаону брзину (0,1–2 °/s). Узрок — температурне промјене и механичка напрезања у силицијумској структури. Произвођачи компензују овај ефекат на хардверском нивоу.
Систем Android аутоматски калибрише жироскоп при првом укључењу или при промјени температуре. Процес калибрације траје 10–30 секунди и не захтијева учешће корисника — довољно је ставити телефон на непокретну површину. Метод calibrate() није доступан на свим уређајима. За принудну калибрацију користи се TYPE_GYROSCOPE_UNCALIBRATED са добијањем bias offset путем event.values[3..5].
private fun handleUncalibratedGyro(event: SensorEvent) {
val rawX = event.values[0] // rad/s без калибрације
val biasX = event.values[3] // X помјерај
val calibratedX = rawX - biasX
applyCalibrationToFusion(
calibratedX,
event.values[1] - event.values[4],
event.values[2] - event.values[5]
)
}
Жироскоп се користи у десетинама сценарија — од стабилизације камере до VR наочара Google Cardboard. ARKit од Apple-а и ARCore од Google-а користе жироскоп као главни сензор за праћење ротације главе. Према Apple ARKit Technical Specification (2024), жироскоп у пару са акцелерометром обезбјеђује прецизност праћења до 0,5 степени.
Изван потрошачке електронике, жироскопи се користе у роботици и дроновима. Мобилни роботи засновани на Android Things и ROS (Robot Operating System) користе MEMS-жироскопе за стабилизацију кретања и одометрију. Према истраживању IEEE „MEMS IMU in Robotics“ (2024), прецизност позиционирања мобилног робота са жироскопом је 3–5 пута већа него са самом одометријом точкова, посебно при кретању по клизавим површинама. У потрошачким дроновима, жироскоп у пару са барометром одржава висину лета са прецизношћу од 0,5 метара при вјетру до 10 m/s.
За AR апликације жироскоп је главни сензор који одређује положај виртуелних објеката у односу на стварни свијет. Google ARCore користи жироскоп за праћење кретања уређаја са фреквенцијом од 1000 Hz (путем интерног одабирања, независно од фреквенције API-ја). ARKit од Apple-а достиже прецизност позиционирања од 0,5 степени при кретању, довољну за постављање виртуелног намјештаја или ликова из игара на реалну сцену.
Нова генерација 6-осних IMU (InvenSense ICM-42688, 2024) обједињава жироскоп и акцелерометар у једном чипу са потрошњом од 0,45 mA у режиму ниске потрошње. Развој градиометара и атомских жироскопа за мобилне уређаје остаје у фази лабораторијских прототипова. Индустријски узорци MEMS-жироскопа са прецизношћу од 0,001 °/s очекују се до 2028. године.
Често постављана питања
Жироскоп одређује ротацију и оријентацију уређаја у простору. Без њега су немогући VR режим, аутоматска ротација екрана при нагибу, стабилизација видеа и AR апликације. Савремени телефони не могу радити без жироскопа.
Акцелерометар мјери линеарно убрзање (кретање и нагиб у односу на гравитацију). Жироскоп мјери угаону брзину (ротацију). Акцелерометар не разликује ротацију уређаја од његовог линеарног помјерања — жироскоп рјешава овај проблем.
У Android-у се користи аутоматска калибрација. За ручну калибрацију преузмите апликације попут „GPS Status & Toolbox“ — оне предлажу постављање телефона на равну површину и извођење калибрације путем TYPE_GYROSCOPE_UNCALIBRATED.
То је дрифт нуле — природна особина MEMS-сензора. Чак и скупи жироскопи имају офсет од 0,1–2 °/s у мировању. Калибрација одузима овај офсет. Ако дрифт прелази 5 °/s — сензор је неисправан.
Користите SensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) и региструјте SensorEventListener. Подаци стижу у rad/s по три осе. За игре користите SENSOR_DELAY_GAME (20 ms), за позадину — SENSOR_DELAY_UI (67 ms).
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође