Modul GPS dan IMU sama-sama dapat mengirim angka tentang gerakan ke ESP32, tetapi keduanya mengamati besaran fisik yang berbeda. Menganggap keduanya sebagai sensor yang dapat saling menggantikan akan cepat menghasilkan pengukuran yang keliru.

Receiver GPS memperkirakan posisi geografis dari sinyal satelit. Dua position fix dapat diubah menjadi perkiraan jarak di permukaan Bumi. IMU seperti MPU-6050 mengukur percepatan dan laju sudut pada sumbunya. Data tersebut dapat dipakai untuk memperkirakan kemiringan, rotasi, dan gerakan jangka pendek.

Batas fungsi ini penting pada perangkat yang membutuhkan lokasi sekaligus keseimbangan. GPS menjawab posisi perangkat di Bumi. IMU menggambarkan bagaimana perangkat bergerak atau berorientasi secara lokal.

GPS tidak mengukur langsung jarak antara dua modul

Modul GPS yang terhubung ke ESP32 biasanya memberikan data seperti latitude, longitude, altitude, waktu, kecepatan, dan kualitas fix. Field yang tersedia bergantung pada receiver dan protokol yang digunakan.

Jika dua perangkat memiliki receiver GPS, masing-masing dapat memperoleh koordinat:

Device A -> -7.257500, 112.752100
Device B -> -7.258000, 112.753000

ESP32 dapat menghitung jarak geografis setelah memiliki kedua pasangan koordinat. GPS bukan sensor seperti ultrasonic atau LiDAR yang diarahkan dari A menuju B untuk mengukur jarak langsung.

Untuk jarak permukaan yang relatif pendek, rumus Haversine umum digunakan:

a = sin²(Δφ / 2) +
    cos(φ1) × cos(φ2) × sin²(Δλ / 2)

c = 2 × atan2(√a, √(1-a))

d = R × c

Di sini, φ adalah latitude dalam radian, λ adalah longitude dalam radian, dan R adalah radius rata-rata Bumi. Hasil d merupakan great-circle distance antara dua koordinat dengan pendekatan Bumi berbentuk bola.

Perhitungannya bisa sangat presisi secara numerik sementara hasil fisiknya tetap tidak akurat. Batas utamanya biasanya berasal dari position fix yang masuk ke perhitungan.

Error posisi berubah menjadi error jarak

Posisi GNSS konsumen dapat bergerak walaupun receiver diam. Geometri satelit, sinyal yang terhalang, efek atmosfer, pantulan multipath, kualitas antena, dan desain receiver memengaruhi fix.

GPS.gov menyebut sekitar 4,9 meter sebagai radius akurasi tipikal GPS smartphone di area dengan langit terbuka dan mencatat bahwa performanya memburuk di sekitar gedung, jembatan, dan pepohonan. Receiver embedded mandiri memiliki karakteristik receiver dan antenanya sendiri, jadi angka smartphone tersebut tidak boleh dianggap sebagai spesifikasi untuk setiap modul GPS ESP32.

Konsekuensinya penting. Misalnya dua receiver diam secara fisik dengan jarak dua meter. Jika koordinat dari masing-masing receiver berubah beberapa meter, selisih koordinat tersebut tidak akan menjadi sistem pengukuran jarak dua meter yang andal.

Untuk separasi puluhan atau ratusan meter, GNSS biasa dapat berguna tergantung error budget yang dibutuhkan. Untuk separasi jarak dekat dengan presisi tinggi, teknologi ranging lain biasanya lebih sesuai. RTK GNSS merupakan kelas solusi berbeda yang menggunakan informasi koreksi dan receiver yang sesuai untuk mencapai akurasi posisi jauh lebih tinggi.

GPS hanya menerima dari sisi perangkat

Receiver GPS normal tidak mengirim pesan ke satelit GPS untuk meminta posisinya. Satelit GPS menyiarkan sinyal navigasi satu arah yang membawa informasi waktu dan orbit, kemudian receiver memakai sinyal tersebut untuk menghitung posisi.

Artinya, dua node ESP32 yang masing-masing memiliki GPS juga tidak otomatis mengetahui koordinat satu sama lain.

Sistem dengan dua perangkat bergerak membutuhkan jalur komunikasi terpisah jika device A harus mengetahui jaraknya dari device B:

GPS A -> ESP32 A -- communication --> ESP32 B
                                      ^
GPS B -------------------------------|

Link komunikasinya dapat berupa Wi-Fi, ESP-NOW, LoRa, seluler, atau radio lain yang sesuai dengan kebutuhan jarak dan data. GPS menyediakan posisi; radio bertugas menukar data posisi.

IMU mengukur gerakan lokal

Keseimbangan merupakan masalah pengukuran yang berbeda.

MPU-6050, misalnya, memiliki accelerometer tiga sumbu dan gyroscope tiga sumbu. Accelerometer mengukur specific force pada sumbu X, Y, dan Z, sedangkan gyroscope mengukur laju sudut terhadap ketiga sumbu tersebut.

Pada kondisi diam, accelerometer dapat memakai arah gravitasi sebagai referensi kemiringan. Dalam kasus sederhana, roll dan pitch dapat diperkirakan dari komponen percepatan:

roll  = atan2(ay, az)

pitch = atan2(-ax, sqrt(ay² + az²))

Persamaan ini berguna ketika gravitasi mendominasi pembacaan accelerometer. Saat terjadi percepatan linear cepat, getaran, atau benturan, pembacaan accelerometer juga mengandung percepatan akibat gerakan. Menganggap setiap sample sebagai gravitasi murni akan menghasilkan estimasi kemiringan yang terdistorsi.

Gyroscope lebih baik dalam mengikuti rotasi cepat karena sensor ini langsung memberikan laju sudut:

angle_new = angle_old + angular_rate × Δt

Namun integrasi laju sudut juga mengintegrasikan bias error. Offset gyro yang kecil akan terakumulasi menjadi drift sudut seiring waktu.

Keseimbangan biasanya membutuhkan sensor fusion

Accelerometer dan gyroscope memiliki kelemahan yang saling melengkapi. Estimasi kemiringan dari accelerometer memiliki referensi gravitasi absolut, tetapi dapat noisy atau menyesatkan saat perangkat bergerak dinamis. Integrasi gyroscope mengikuti rotasi dengan halus, tetapi mengalami drift.

Complementary filter sederhana dapat menggabungkan keduanya:

angle =
    α × (previous_angle + gyro_rate × dt)
    + (1 - α) × accelerometer_angle

Gyro mendominasi perubahan jangka pendek, sedangkan accelerometer perlahan menarik estimasi kembali ke referensi gravitasi.

Kalman filter atau attitude estimator yang lebih lengkap dapat memodelkan sistem secara lebih rinci. Namun filter yang lebih rumit tidak dapat memperbaiki sensor yang dipasang buruk, getaran berat, pemetaan sumbu yang salah, error timing, atau bias yang belum dikalibrasi. Penempatan mekanis dan disiplin sampling tetap menjadi bagian dari sistem pengukuran.

Yaw memiliki masalah referensi yang berbeda

Accelerometer memberikan referensi gravitasi untuk roll dan pitch ketika kondisinya sesuai. Gravitasi tidak memberikan arah kompas.

Karena itu, IMU enam sumbu yang hanya berisi accelerometer dan gyroscope tidak bisa memperoleh referensi yaw absolut dari gravitasi. Integrasi gyroscope dapat mengikuti perubahan yaw untuk sementara, tetapi bias membuat estimasinya mengalami drift.

Aplikasi yang membutuhkan heading terhadap utara magnetik biasanya menambahkan magnetometer, membentuk kumpulan sensor yang sering disebut IMU sembilan sumbu. Magnetometer juga membutuhkan kalibrasi dan dapat terganggu medan magnet lokal, terutama di dekat motor, struktur baja, kabel berarus tinggi, dan magnet.

GPS terkadang dapat memberikan course over ground ketika perangkat bergerak, tetapi nilai itu bukan pengukuran yang sama dengan arah fisik perangkat yang sedang diam.

GPS dan IMU dapat saling melengkapi

Desain embedded yang baik memberi tugas berbeda kepada setiap sensor daripada memaksa satu sensor menyelesaikan seluruh masalah gerakan:

GNSS:
  posisi global
  ground speed
  course saat bergerak
  referensi geografis jangka panjang

IMU:
  percepatan
  laju sudut
  kemiringan
  gerakan lokal yang cepat

ESP32:
  sampling
  filtering
  state estimation
  komunikasi
  application logic

Ambil contoh robot outdoor kecil. GNSS dapat menunjukkan bahwa robot berjarak 35 meter dari waypoint. IMU dapat menunjukkan bahwa chassis miring 12 derajat atau sedang berputar cepat. Kedua pengukuran itu tidak saling menggantikan.

Pemisahan yang sama berlaku pada wearable atau objek yang dilacak. GNSS dapat mencatat lokasi pergerakan di luar ruangan; IMU dapat mendeteksi perubahan orientasi, benturan, atau pola gerakan di antara update posisi yang lebih lambat.

Pilih sensor berdasarkan besaran yang diukur

Kata “jarak” dapat menyembunyikan beberapa kebutuhan yang berbeda. Jarak geografis antara dua koordinat outdoor adalah masalah positioning. Jarak langsung ke objek dekat adalah masalah ranging. Jarak tempuh roda adalah masalah odometry. Kemiringan dan keseimbangan adalah masalah orientation.

Perbedaan tersebut menentukan sensornya:

Pengukuran Sensor yang umum
Posisi geografis GNSS/GPS
Jarak antara koordinat geografis Posisi GNSS + perhitungan
Jarak langsung ke objek dekat ToF, ultrasonic, LiDAR, atau UWB sesuai kebutuhan
Roll dan pitch Accelerometer + gyroscope
Rotasi cepat Gyroscope
Heading magnetik absolut Magnetometer yang digabung dengan IMU
Posisi outdoor presisi tinggi Sistem GNSS yang mendukung RTK

ESP32 berguna karena dapat menggabungkan aliran data tersebut, bukan karena ESP32 mengubah besaran fisik yang diamati oleh sensor.

Pertahankan batas pengukuran dengan jelas

GPS, radio komunikasi, dan IMU menyelesaikan tiga bagian berbeda dalam sistem embedded. GPS menerima sinyal navigasi satelit dan menghasilkan estimasi posisi. Radio komunikasi memindahkan data antarperangkat. IMU mengukur gerakan inersial lokal.

Dengan batas yang jelas, arsitektur lebih mudah dianalisis. Hitung separasi geografis dari koordinat hanya ketika error budget GNSS masih dapat diterima. Gunakan IMU untuk keseimbangan dan orientasi dengan filtering yang sesuai dengan karakter gerak. Tambahkan sensor ranging ketika kebutuhan sebenarnya adalah separasi jarak dekat, bukan lokasi.

ESP32 dapat menghubungkan semuanya, tetapi kualitas pengukuran tetap bergantung pada pemilihan sensor yang besaran fisiknya sesuai dengan kebutuhan aplikasi.