Giroskop, cihazın üç oxa nisbətən fırlanma bucaq sürətini ölçən sensordur. Xətti sürətlənməni qeyd edən akselerometrdən fərqli olaraq, giroskop fırlanma və məkanda oriyentasiyanı təyin edir. STMicroelectronics, 2024 məlumatlarına görə, müasir MEMS-giroskoplar saniyədə 0.01 dərəcə dəqiqlik təmin edir ki, bu da onları naviqasiyada, görüntü stabilləşdirmədə və AR tətbiqlərində istifadə etməyə imkan verir.
Əsas məqamlar
Giroskop smartfonda — cihazın fırlanma bucaq sürətini ölçən mikroelektromexaniki sensor (MEMS)-dur. Aviasiyada mexaniki giroskoplardan fərqli olaraq, MEMS-giroskop telefonun ana platasında quraşdırılmış 2×2×1 mm ölçüdə silisium çipdir.
Müasir smartfonlarda yalnız MEMS-giroskoplar vibrasiya tipli — tuning-fork və ring-design istifadə olunur. Onların fırlanan hissələri yoxdur ki, bu da 10 ilə qədər fasiləsiz iş müddətini təmin edir. Aparıcı istehsalçılar — Bosch Sensortec (BMI seriyası), STMicroelectronics (L3G, A3G seriyaları) və InvenSense (ICM seriyası).
Tipik MEMS-giroskop ±125-dən ±2000 °/s-ə qədər ölçmə diapazonuna, 32 kHz-ə qədər seçmə tezliyinə və 3–6 mA cərəyan sərfiyyatına malikdir. Bosch Sensortec BMI160 (2023) məlumatlarına görə, ±125 °/s diapazonunda səs-küy səviyyəsi 0.007 °/s/√Hz təşkil edir — bu dəqiq fırlanma izləmə üçün kifayətdir.
| Parametr | Qiymət |
|---|---|
| Texnologiya | MEMS (vibrasiya) |
| Diapazon | ±125 — ±2000 °/s |
| Cərəyan sərfiyyatı | 3–6 mA |
| Ölçü | 2×2×1 mm |
| Səs-küy | 0.007 °/s/√Hz |
MEMS-giroskopun iş prinsipi Koriolis effektinə əsaslanır. Çipin içərisində müəyyən tezlikdə (15–30 kHz) titrəyən silisium kütlə yerləşir. Cihaz döndükdə, titrəyən kütləyə bucaq sürəti ilə mütənasib olan Koriolis qüvvəsi təsir edir.
MEMS-giroskopun əsas elementləri — titrəyiş yaradan sürücü elektrodlar və yayınma qeydə alan həssas elektrodlardır. IEEE-nin “MEMS Gyroscopes for Consumer Electronics” (2023) tədqiqatına görə, tipik konstruksiya mərkəzi kütlənin ətrafında simmetrik yerləşən 4–8 daraqvari strukturdan ibarətdir.
Müasir giroskoplar məlumatları I²C və ya SPI magistralı vasitəsilə ötürür. Smartfon nəzarətçisi üçoxlu bucaq sürəti dəyərlərini — X (Pitch), Y (Roll) və Z (Yaw) oxları üzrə alır. Daxili ADC tutum siqnalını 16–24 bit dəqiqliklə rəqəmsal dəyərlərə çevirir. Oyun rejimində yeniləmə tezliyi 400 Hz-ə çatır.
Akselerometr xətti sürətlənməni — cismin oxlar boyunca sürət dəyişikliyini ölçür. Giroskop fırlanmanı — bucaq dəyişmə sürətini ölçür. Bu sensorlar komplementardır: akselerometr qravitasiya vektoruna nisbətən oriyentasiya verir, lakin maili xətti hərəkətdən fərqləndirmir. Giroskop qravitasiyadan asılı olmayaraq fırlanmanı izləyir, lakin dreyfə məruz qalır.
Real tətbiqlərdə Sensor Fusion — giroskop, akselerometr və maqnitometr məlumatlarını birləşdirən alqoritm istifadə olunur. Mahoni filtri və ya komplementar filtr 2 dərəcə statikada və 5 dərəcə dinamikada oriyentasiya kvaternionlarını hesablayır. Android framework səviyyəsində virtual TYPE_ROTATION_VECTOR sensoru təqdim edir.
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] — oriyentasiya kvaternionu
}
}
Android iki giroskop sensoru növü təqdim edir: TYPE_GYROSCOPE (kalibrlənmiş, dreyfsiz) və TYPE_GYROSCOPE_UNCALIBRATED (dreyf qiymətləndirməsi ilə xam məlumatlar). Onlara SensorManager.getDefaultSensor() vasitəsilə giriş əldə edilir. Məlumatlar rad/s — saniyədə radianla qaytarılır.
Giroskopun dinləyicisinin qeydiyyatı gecikmənin göstərilməsini tələb edir: oyunlar üçün SENSOR_DELAY_GAME (20 ms), interfeys üçün SENSOR_DELAY_UI (67 ms), maksimum tezlik üçün SENSOR_DELAY_FASTEST (0 ms). onPause() metodunda qeydiyyatı ləğv etmədən batareya 2–3 saata boşalır.
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
)
}
}
}
Xam məlumatlar event.values[0..2] müvafiq olaraq X, Y və Z üzrə bucaq sürətinə uyğundur. Fırlanma bucağını əldə etmək üçün bucaq sürətini zamana görə inteqrasiya etmək lazımdır. 50 Hz tezliyində inteqrasiya xətası dəqiqədə təxminən 1 dərəcə təşkil edir — bu oyunlar üçün məqbuldur, lakin düzəlişsiz naviqasiya üçün kifayət deyil.
Sıfır dreyfi (bias drift) MEMS-giroskopların əsas problemidir. Hətta hərəkətsiz vəziyyətdə belə sensor sıfırdan fərqli bucaq sürəti (0.1–2 °/s) göstərə bilər. Səbəb — temperatur dəyişiklikləri və silisium strukturunda mexaniki gərginliklərdir. İstehsalçılar bu effekti aparat səviyyəsində kompensasiya edir.
Android sistemi giroskopu ilk açılışda və ya temperatur dəyişdikdə avtomatik kalibrləyir. Kalibrasiya prosesi 10–30 saniyə çəkir və istifadəçi müdaxiləsi tələb etmir — telefonu hərəkətsiz səthə qoymaq kifayətdir. calibrate() metodu bütün cihazlarda mövcud deyil. Məcburi kalibrasiya üçün event.values[3..5] vasitəsilə bias offset əldə edərək TYPE_GYROSCOPE_UNCALIBRATED istifadə olunur.
private fun handleUncalibratedGyro(event: SensorEvent) {
val rawX = event.values[0] // rad/s kalibrləməsiz
val biasX = event.values[3] // X yerdəyişməsi
val calibratedX = rawX - biasX
applyCalibrationToFusion(
calibratedX,
event.values[1] - event.values[4],
event.values[2] - event.values[5]
)
}
Giroskop kamera stabilləşdirməsindən tutmuş VR dəbilqələrinə Google Cardboard kimi onlarla ssenaridə istifadə olunur. Apple-dan ARKit və Google-dan ARCore baş fırlanmasını izləmək üçün giroskopdan əsas sensor kimi istifadə edir. Apple ARKit Technical Specification (2024) məlumatlarına görə, giroskop akselerometrlə birlikdə 0.5 dərəcəyə qədər izləmə dəqiqliyi təmin edir.
İstehlak elektronikasından kənarda giroskoplar robototexnika və PUA-larda istifadə olunur. Android Things və ROS (Robot Operating System) əsaslı mobil robotlar hərəkətin stabilləşdirilməsi və odometriya üçün MEMS-giroskoplardan istifadə edir. IEEE-nin “MEMS IMU in Robotics” (2024) tədqiqatına görə, giroskoplu mobil robotun yerləşmə dəqiqliyi yalnız təkər odometriyasından 3–5 dəfə yüksəkdir, xüsusən sürüşkən səthlərdə hərəkət edərkən. İstehlak dronlarında giroskop barometrlə birlikdə 10 m/s-ə qədər küləkdə 0.5 metr dəqiqliklə uçuş hündürlüyünü saxlayır.
AR tətbiqləri üçün giroskop virtual obyektlərin real dünyaya nisbətən mövqeyini təyin edən əsas sensordur. Google ARCore giroskopdan cihazın hərəkətini 1000 Hz tezliyində izləmək üçün istifadə edir (API tezliyindən asılı olmayaraq daxili seçmə vasitəsilə). Apple-dan ARKit hərəkət zamanı 0.5 dərəcə yerləşmə dəqiqliyinə nail olur ki, bu da real səhnəyə virtual mebel və ya oyun personajlarının əlavə edilməsi üçün kifayətdir.
Yeni nəsil 6-oxlu IMU (InvenSense ICM-42688, 2024) aşağı enerji sərfiyyatı rejimində 0.45 mA cərəyanla bir çipdə giroskop və akselerometri birləşdirir. Mobil cihazlar üçün qradientometr və atom giroskoplarının inkişafı hələlik laboratoriya prototipləri mərhələsində qalır. 0.001 °/s dəqiqliklə sənaye MEMS-giroskop nümunələrinin 2028-ci ilə qədər gözlənilir.
Tez-tez verilən suallar
Giroskop cihazın fırlanmasını və məkanda oriyentasiyasını təyin edir. Onsuz VR rejimi, ekranın mailə görə avtomatik çevrilməsi, video stabilləşdirmə və AR tətbiqləri mümkün deyil. Müasir telefonlar giroskop olmadan işləyə bilməz.
Akselerometr xətti sürətlənməni (qravitasiyaya nisbətən hərəkət və maili) ölçür. Giroskop bucaq sürətini (fırlanma) ölçür. Akselerometr cihazın fırlanmasını onun xətti yerdəyişməsindən fərqləndirmir — giroskop bu problemi həll edir.
Android-də avtomatik kalibrasiya istifadə olunur. Əllə kalibrləmə üçün “GPS Status & Toolbox” kimi tətbiqləri yükləyin — onlar telefonu düz səthə qoymağı və TYPE_GYROSCOPE_UNCALIBRATED vasitəsilə kalibrləməni təklif edir.
Bu sıfır dreyfi — MEMS-sensorların təbii xüsusiyyətidir. Hətta bahalı giroskoplarda sakit vəziyyətdə 0.1–2 °/s yerdəyişmə olur. Kalibrasiya bu yerdəyişməni çıxır. Dreyf 5 °/s-dən çox olarsa — sensor xarabdır.
SensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) istifadə edin və SensorEventListener qeydiyyatdan keçirin. Məlumatlar üç ox üzrə rad/s ilə gəlir. Oyunlar üçün SENSOR_DELAY_GAME (20 ms), fon üçün — SENSOR_DELAY_UI (67 ms) istifadə edin.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun