Show HN: Proyek Membuat Penerima GPS
(axleos.com)- gypsum adalah proyek membuat penerima yang mendekode sinyal GPS dari nol untuk memperoleh posisi; bagian 1 dari seri 4 bagian berfokus pada pencarian sinyal satelit yang terkubur di bawah derau
- GPS adalah sinyal siaran yang dikirim oleh sekitar 30 satelit ke seluruh Bumi, sehingga satelit tidak tahu siapa yang mendengarkan, dan pusat data juga tidak bisa menggantikan penerimaan gelombang radio pengguna
- Sinyal GPS yang mencapai antena di permukaan Bumi bisa memiliki daya 100.000 kali lebih rendah daripada derau sekitar, dan 100 juta kali lebih lemah daripada sinyal seluler biasa, sehingga hampir tidak terlihat begitu saja
- Penerima berulang kali membandingkan kode C/A yang diketahui oleh satelit maupun penerima untuk merata-ratakan derau acak, lalu menemukan sinyal data 50 bps di atas kode PRN 1 Mbps
- Acquisition adalah tahap intensif komputasi yang menelusuri PRN per satelit, Doppler shift ±5 kHz, dan fase kode sekaligus untuk menemukan satelit yang terlihat serta perkiraan kasar delay waktu dan kecepatan relatif
Proyek Mendengarkan Sinyal GPS Secara Langsung
- gypsum adalah proyek penerima GPS yang dibuat dari nol
- Seri 4 bagian ini membahas proses mendekode sinyal GPS untuk memperoleh posisi; bagian 1 mencakup tahap menemukan sinyal dan mengakuisisi satelit
- GPS mengirimkan sinyal ke seluruh Bumi melalui sekitar 30 satelit, dan sinyal ini selalu ada di sekitar kita terlepas dari ketinggian maupun cuaca
- GPS dimulai pada 1978, dan pada saat tulisan dibuat sudah berlalu 45 tahun
Beacon Senyap dan Perhitungan Posisi yang Tidak Bisa Digantikan Server
- Saat dipancarkan, sinyal satelit GPS memiliki kekuatan yang mirip dengan lampu rumah tangga, tetapi menjadi sangat lemah saat mencapai permukaan Bumi
- GPS mendekati pola send-and-forget, sehingga satelit tidak bisa mengetahui siapa yang mendengarkan
- Radio FM dan TV siaran juga memiliki karakteristik serupa
- Karena struktur ini, sulit bagi siapa pun untuk mengenakan biaya atas akses GPS itu sendiri
- Perhitungan posisi tidak cocok dengan struktur ketika layanan web memprosesnya sebagai pengganti lalu mengirimkan hasilnya
- GPS harus mendengarkan langsung gelombang radio yang mencapai lokasi pengguna
- Pusat data tidak bisa menggantikan mendengarkan gelombang radio yang datang di lokasi pengguna
Menjelajahi Frekuensi GPS dengan SDR
- Untuk menerima sinyal GPS dengan perangkat lunak dan memprosesnya setelahnya, diperlukan penerima RF yang dapat disetel; perangkat ini adalah software-defined radio (SDR)
- SDR++ digunakan untuk menjelajahi spektrum
- Dalam penggunaan SDR, beberapa konsep diperlukan
- bias tee: sirkuit internal SDR memasok daya DC ke antena yang terhubung lewat SMA. SDR yang digunakan secara default dalam keadaan mati, sehingga harus dinyalakan secara manual
- automatic gain control (AGC): rangkaian perangkat keras atau fitur perangkat lunak yang mencoba memperkuat sinyal lemah untuk meningkatkan rasio sinyal-terhadap-derau (SNR) pada data yang diterima
- IQ samples: I adalah komponen in-phase, Q adalah komponen quadrature atau imaginary, yang memungkinkan pemrosesan dari sudut pandang waktu, amplitudo, dan polaritas
- SDR menghasilkan spike besar pada frekuensi tengah yang disetel
- Bagi pemula, ini bisa terlihat seolah ada sinyal kuat ke mana pun mereka melihat
- Spike ini dapat dikurangi dengan menyetel sedikit menjauh dari frekuensi tengah, atau dengan IQ correction di perangkat lunak
Cara Menemukan Sinyal yang Terkubur di Bawah Derau
- Pada antena di permukaan Bumi, sinyal GPS tiba dengan daya 100.000 kali lebih rendah daripada energi dan sinyal di sekitarnya
- Sinyal GPS bisa hingga 50 dB lebih rendah daripada thermal noise floor
- Satelit GPS modern dirancang mengirim sinyal yang mencapai penerima pada kisaran sekitar -130 dBm
- Thermal noise floor pada lingkungan hunian umum di bandwidth C/A sekitar -110 dBm
- Sebagai pembanding, sinyal seluler sekitar -50 dBm, atau 100 juta kali lebih kuat daripada sinyal GPS
- Untuk mengidentifikasi dan mendekode sinyal yang terkubur di bawah derau seperti ini, GPS menggunakan teknik spread-spectrum
Mendengar Sinyal Tak Terdengar dengan Kode C/A dan PRN
- Satelit GPS mengirimkan data yang tidak diketahui penerima bersama sinyal yang diketahui oleh satelit dan penerima
- Sinyal ini disebut C/A code, PRN code, atau chipping code, dan diulang oleh satelit 1.000 kali per detik
- C/A adalah singkatan dari coarse acquisition
- Pada GPS yang awalnya dirancang untuk militer, kode C/A merupakan tahap beresolusi rendah untuk mengunci ke P code yang lebih presisi
- Saat ini kode C/A menjadi dasar sebagian besar GPS sipil, sementara P code masih hanya dapat digunakan untuk militer
- Alasan penerima sipil tidak dapat memakai P code adalah karena mereka tidak mengetahui nilai chipping sequence-nya
- Jika rumus pembangkitan P code dipublikasikan, kode tersebut dapat dikunci dengan teknik yang sama seperti kode C/A
- Alasan P code lebih presisi adalah karena ia beroperasi dengan chipping rate yang lebih tinggi
- Penerima berulang kali menjumlahkan dan membandingkan PRN yang diperkirakan dengan sinyal yang benar-benar diterima
- Derau acak akan rata menuju 0 seiring waktu
- Sinyal PRN terus terakumulasi dan membesar
- GPS menggunakan code-division multiple access (CDMA) untuk menangani banyak satelit secara bersamaan
- Sinyal data sebenarnya dikirim dengan dicampurkan ke dalam kode PRN
- Kode PRN beroperasi pada 1 Mbps
- Sinyal data dikirim jauh lebih lambat, yaitu 50 bps
- Berkat laju data yang rendah, kode PRN tetap menjadi sinyal acuan yang stabil selama waktu yang relatif panjang
Pembangkitan Kode C/A per Satelit
- Karena ada banyak satelit, penerima harus mengetahui satelit mana yang terlihat
- Setiap satelit GPS memiliki kode PRN yang unik dan stabil
- Kode ini didefinisikan dalam
Table 3-I (Code Phase Assignments)pada spesifikasi GPS sipil IS-GPS-200L - Ada banyak materi daring yang menjelaskan cara membangkitkan kode PRN, tetapi tidak banyak materi yang dapat direproduksi untuk mencocokkan keseluruhan kode PRN
Tahap Acquisition: Menemukan Satelit yang Terlihat
- Penerima GPS membuat salinan PRN yang dipancarkan setiap satelit untuk menemukan satelit yang terlihat di langit, lalu mencari PRN tersebut dalam data yang dikumpulkan antena
- Tahap ini adalah acquisition, dan tujuannya adalah mengunci ke satelit yang berada di atas pengguna
- Penerima mengambil snapshot data antena yang singkat, sekitar 1 detik, lalu menghitung correlation dengan setiap replika PRN
- Jika ada korelasi kuat antara replika PRN dan data sebenarnya, dapat diketahui bahwa satelit dengan PRN tersebut sedang mengirim sinyal dari atas
- Sinyal yang benar-benar diterima berbeda dari PRN ideal
- Sinyal GPS melemah saat melewati atmosfer Bumi
- Karena satelit bergerak cepat, sinyal yang diterima mengalami Doppler shift
- Kecepatan orbit satelit GPS sudah diketahui dengan baik, sehingga rentang Doppler shift yang diperkirakan juga telah ditentukan
- Satelit yang mendekat mengalami kenaikan frekuensi hingga +5 kHz
- Satelit yang menjauh mengalami penurunan frekuensi -5 kHz
- Karena waktu mulai penerimaan bersifat arbitrer, penerima bisa saja mulai mendengarkan dari tengah transmisi PRN
- Tahap acquisition menelusuri tiga sumbu sekaligus
- Kode PRN setiap satelit
- Rentang Doppler shift yang diperkirakan
- Fase untuk menggeser replika PRN agar cocok dengan PRN yang diterima
- Beban komputasinya besar, tetapi jika parameter yang tepat ditemukan, spike korelasi akan terlihat jelas
Cara Implementasi dan Hasil Bagian 1
- Implementasinya mengubah setiap PRN dari domain waktu ke domain frekuensi, lalu mengorelasikan frekuensi data satelit yang masuk dengan spektrum setiap kode PRN
- Cara ini merupakan cross correlation domain frekuensi
- Offset fase di domain waktu menjadi pergeseran komponen frekuensi, sehingga penelusuran Doppler shift dan fase dapat ditangani dalam perhitungan yang sama
- Doppler shift dikonvergensikan dengan cara yang mirip binary search untuk menemukan nilai yang menghasilkan spike korelasi terkuat bagi setiap satelit yang terlihat
- Sebagai hasil bagian 1, penerima dapat menentukan satelit GPS yang saat ini berada di atas pengguna, serta memperoleh perkiraan kasar phase/time delay dan Doppler shift/relative velocity tiap satelit
- Tahap berikutnya berlanjut ke Part 2: Tracking Pinpricks
1 komentar
Komentar Hacker News
Kini ada penerima sampling RF langsung atau konversi RF langsung yang cukup cepat untuk GPS. Contoh: Xilinx RFSoc https://www.mouser.com/datasheet/2/903/ds889_zynq_usp_rfsoc_..., artikel National Instruments https://www.ni.com/en/solutions/aerospace-defense/radar-elec..., dan perangkat keras siap pakai terkait https://www.ni.com/en-us/shop/category/flexrio-custom-instru...
Agak aneh juga bahwa NI menganggap konversi RF langsung itu hemat biaya, tetapi menjual peralatannya seharga 30 ribu dolar. Namun, jika ingin membuat prototipe penerimaan pita lebar yang koheren fase di sekitar 3GHz dan punya lab serta anggaran yang memadai, mungkin masuk akal membeli beberapa unit. Untuk produksi massal, saya mungkin akan menunggu sampai biaya papan rakitan sendiri turun, atau melihat apakah penerima heterodyne tradisional sudah cukup
Untuk penggunaan militer, jika khawatir dengan senjata pelacak RF canggih, penerima konversi langsung bisa jadi pilihan bagus. Sebab tidak ada kebocoran osilator lokal yang bisa dideteksi oleh peralatan musuh
Setiap melihat istilah “from scratch”, saya jadi penasaran seberapa jauh benar-benar dikerjakan dari nol, dan sedikit kecewa ketika melihat perangkat kerasnya ternyata RTL-SDR. Meski begitu, dekode protokol-nya sangat menarik dan hasilnya juga luar biasa
GPS dimulai pada 1978, tetapi sampai tahun 2000 sinyalnya sengaja diturunkan kualitasnya lewat metode yang disebut “selective availability”. Karena itu, GPS praktis tidak terlalu berguna untuk banyak keperluan, jelas tidak cocok untuk navigasi jalan, dan hanya terbatas manfaatnya untuk penjelajahan daerah terpencil atau navigasi laut
Fakta bahwa gypsum bisa mendapatkan posisi dan waktu yang akurat dari cold start hanya dengan mendengarkan sinyal antena kurang dari satu menit sangat mengesankan, bahkan tampak lebih baik daripada banyak penerima komersial saat ini. Saat perjalanan mobil di awal 2000-an, saya pernah harus menunggu 15–20 menit di pinggir jalan sebelum penerima GPS mendapatkan posisi awal, dan kalau tidak berhasil ya berangkat saja sambil melihat peta kertas
Setelah 46 tahun, lapisan radionya masih mempertahankan kompatibilitas maju dan mundur secara penuh, sementara metrik utama seperti waktu hingga posisi awal didapat dan user equivalent range error meningkat 10–1000 kali tanpa perubahan protokol yang tidak kompatibel
Total daya transmisi RF untuk melayani seluruh Bumi lebih kecil daripada konsumsi listrik rumah tangga biasa di AS, jauh lebih rendah dibanding 5G, TV, atau radio AM/FM, dan bahkan berada di bawah lantai derau. Semua ini dimungkinkan berkat penggunaan Gold code yang ditumpuk
Sistem pesaing seperti Galileo juga dirancang agar bisa berbagi frekuensi, sesuatu yang jarang terlihat di jaringan seluler. Fase data modulasi dan pembawa dikunci, sehingga hal seperti dekode fase pembawa juga dimungkinkan, dan itu membantu menghasilkan pseudorange serta akurasi yang lebih baik
Secara keseluruhan, para perancangnya tampaknya punya visi yang luar biasa jauh ke depan, atau sangat beruntung, atau mungkin keduanya
Maksudnya di sini adalah membangun penerima mulai dari perangkat keras yang sama sekali tidak tahu apa-apa tentang GPS, yaitu perangkat yang hanya bisa mengambil sampel medan elektromagnetik
Alasan waktu hingga posisi awal pada perangkat lama lambat pada dasarnya berkaitan dengan perkembangan daya pemrosesan. Penerima GPS tradisional harus mengunduh ‘almanak’ semua satelit, dan karena format serta kecepatan transmisi data GPS, itu butuh minimal 12,5 menit bahkan dalam kondisi ideal
Dengan daya pemrosesan modern, penerima—termasuk gypsum—bisa melakukan brute force pada ruang pencarian untuk menemukan satelit yang terlihat, alih-alih menunggu petunjuk yang dikirim dari udara. Teknik ini dijelaskan di akhir bagian 1
Pada 1999, saya melakukan perjalanan mobil dengan menghubungkan Delorme Earthmate Hyperformance GPS receiver versi RS-232 ke Toughbook dan menjalankan kira-kira Delorme Street Atlas USA 6.0
Sistem itu memberikan panduan arah yang cukup berguna selama perjalanan lintas negara. Memang tidak ada panduan jalur, tetapi sebelum setiap belokan ia memberi instruksi belok lengkap dengan nama jalan
Versi itu juga punya pengenalan suara, jadi kalau saya berkata sesuatu seperti “masih jauh?”, sistem akan memberi tahu estimasi waktu tiba ke titik singgah berikutnya dan tujuan akhir, serta lokasi saya saat itu; cukup seru juga
Jika circular error probable terburuk yang umum di bawah selective availability sekitar 30m, itu cukup akurat untuk navigasi jalan kecuali di area yang sangat padat. Bahkan di tempat seperti itu, sekali melihat peta biasanya sudah cukup, dan di jalan terbuka sistem itu bekerja sangat baik
Dulu penerima GPS menjadikan jumlah kanal pelacakan sebagai poin pemasaran; penerima murah hanya punya perangkat keras untuk melacak 6–8 satelit, sedangkan penerima mahal bisa melacak 12
Jadi penerima berbasis software-defined ini sebenarnya mengimplementasikan cukup banyak bagian yang dulu ditangani perangkat keras, dan bisa melacak semua satelit yang terlihat
Pendekatan software-defined punya keunggulan kuat. Misalnya, akuisisi awal satelit menghitung korelasi silang antara sinyal yang diterima dan berbagai Gold code, dan jika ini diproses di domain Fourier, sinyal bisa diakuisisi dengan cukup cepat
Jika menginginkan penerima GPS DIY hardcore yang turun sampai level transistor, https://lea.hamradio.si/~s53mv/navsats/theory.html tampaknya akan sangat menyenangkan untuk dibaca. Ini adalah penerima GPS DIY ala 1990-an, lengkap dengan skema rangkaian gambar tangan, PCB gambar tangan, hingga antena buatan tangan
Selain itu, pada akhir 1990-an, meski tidak ideal di lingkungan perkotaan yang padat, itu juga merupakan area yang bahkan penerima modern pun sering kesulitan, dan koreksi GPS diferensial untuk kendaraan juga memungkinkan. Bisa dipakai di kawasan pesisir metropolitan padat penduduk seperti NYC
Navigasi mobil lama memang kasar dan data petanya secara umum buruk, tetapi karena kegunaan selektifnya, sulit untuk mengatakan bahwa itu “jelas tidak berguna”
Tentu saja, memang cukup buruk. Hanya saja kegunaan selektif hanyalah salah satu faktor, dan dengan daya pemrosesan masa kini serta peta yang lebih baik, kesalahan posisi akibat selective availability pun mungkin akan lebih mudah dikoreksi
Rumusan hukum dalam peraturan yang diperbarui https://www.space.commerce.gov/itar-controls-on-gps-gnss-rec... terlalu rumit sehingga sulit dipahami apakah itu masih berlaku
Bicara soal SDR, ITAR juga menjadi alasan modul radar pasif GNU Radio buatan tim Kraken RF diturunkan
Saya juga suka https://ciechanow.ski/gps/ yang punya materi visual keren dan bagus dibaca berdampingan dengan penjelasan ini
Grafik interaktif itu tidak tertandingi
Dipadukan dengan kemampuan membuat perangkat lunak untuk membantu analisis dan mengimplementasikan solusi akhirnya, ini jadi proyek yang sangat keren. Saya telah mempelajari GPS dan menanganinya secara profesional selama beberapa tahun, tetapi masih belum tahu semuanya. Saya menantikan untuk melihat kodenya
Kalau melihat ke belakang, rasanya ini benar-benar hal yang sangat baik untuk dilakukan. Sekarang saya merasa jauh lebih memahami ranah RF secara konkret dan bisa memakainya seperti alat. Ini mengingatkan saya pada bagian-bagian dari komputer itu sendiri yang saya sukai
Jika rumus untuk menghasilkan kode P dipublikasikan, penerima GPS sipil juga akan bisa melakukan lock dengan teknik yang sama seperti kode C/A
Saya belum membaca semuanya, tetapi saya penasaran. Adakah cara untuk memperoleh urutan chipping kode P dengan brute force atau trik lain demi GPS yang lebih presisi?
Jika tertarik pada kisah pengembangan GPS, “GPS Declassified” karya Richard Easton adalah buku yang disajikan dengan menarik
GPS tetap bekerja dalam mode pesawat, bahkan secara harfiah di dalam pesawat. Ia juga bekerja tanpa layanan seluler atau Wi‑Fi. AS mengendalikan konstelasi satelit GPS, dapat mematikan GPS di wilayah tertentu saat diperlukan, dan memang pernah melakukannya. Karena itu negara-negara lain meluncurkan konstelasi satelit GNSS mereka sendiri
Menarik juga bahwa satelit GPS tidak mengirimkan posisi, melainkan hanya waktu. Mencoba ini dengan data yang diterima ponsel sangat menyenangkan, dan ponsel terhubung langsung ke satelit
Tambahan lagi, saya baru-baru ini mempelajari prinsip dasar navigasi menggunakan bintang, dan menarik melihat simetrinya: mekanismenya benar-benar berbeda, tetapi tetap sangat bergantung pada menjaga waktu yang akurat
Beberapa penerima GPS pertama yang saya pakai adalah perangkat mandiri tanpa koneksi data sama sekali, jadi terasa wajar bahwa GPS tidak memerlukan data
Hanya saja perangkat seperti ponsel biasanya mendapatkan data itu dari sumber lain karena itu jauh lebih cepat daripada menunggu transmisi data GPS
Sejauh yang saya pahami, kemampuan untuk mematikan GPS di wilayah tertentu sesuka hati sudah tidak ada lagi pada satelit GPS yang lebih baru, dan mungkin juga sudah tidak ada pada semua satelit yang saat ini beroperasi
Jika memakai iPhone, setelah mendarat foto-foto itu akan terhubung dengan lokasi saat diambil. Berkat itu, kita bisa menemukan lagi bentuk lahan menarik yang kebetulan terlihat sebelumnya
Bahkan kata kunci pencarian yang digunakan dan monolog batinnya pun dimasukkan. Bukan sekadar mengajarkan cara menangkap ikan, tetapi menunjukkan bagaimana mendapatkan komponen untuk membuat mesin pancing sendiri, jadi ini adalah jenis tutorial yang paling saya sukai
Meski begitu, saya benar-benar berterima kasih karena pendekatan seperti itu diapresiasi