Saya hanya berpikir keras, dan saya belum bermain dengan API akselerometer android, jadi bersabarlah.
Pertama-tama, secara tradisional, untuk mendapatkan navigasi dari akselerometer, Anda memerlukan akselerometer 6 sumbu. Anda membutuhkan percepatan di X, Y, dan Z, tetapi juga rotasi Xr, Yr, dan Zr. Tanpa data rotasi, Anda tidak memiliki cukup data untuk membuat vektor kecuali Anda menganggap perangkat tidak pernah mengubah sikapnya, yang akan sangat membatasi. Tidak ada yang membaca TOS.
Oh, tahukah Anda bahwa INS mengikuti rotasi bumi, bukan? Jadi ada itu juga. Satu jam kemudian dan Anda secara misterius mendaki di lereng 15 ° ke luar angkasa. Itu dengan asumsi Anda memiliki INS yang mampu mempertahankan lokasi selama itu, yang belum dapat dilakukan telepon.
Cara yang lebih baik untuk menggunakan akselerometer - bahkan dengan akselerometer 3 sumbu - untuk navigasi adalah dengan menghubungkan ke GPS untuk mengkalibrasi INS jika memungkinkan. Jika GPS gagal, INS memuji dengan baik. GPS tiba-tiba dapat menembak Anda sejauh 3 blok karena Anda terlalu dekat dengan pohon. INS tidak bagus, tapi setidaknya ia tahu Anda tidak terkena meteor.
Yang dapat Anda lakukan adalah mencatat data akselerometer ponsel, dan banyak lagi. Seperti layaknya berminggu-minggu. Bandingkan dengan data GPS yang bagus (maksud saya sangat bagus) dan gunakan datamining untuk menetapkan korelasi tren antara data akselerometer dan data GPS yang diketahui. (Kiat pro: Anda akan ingin memeriksa almanak GPS untuk hari-hari dengan geometri yang baik dan banyak satelit. Kadang-kadang Anda mungkin hanya memiliki 4 satelit dan itu tidak cukup) Apa yang mungkin dapat Anda lakukan adalah menemukannya ketika seseorang berjalan dengan ponsel di saku, data akselerometer mencatat pola yang sangat spesifik. Berdasarkan datamining, Anda membuat profil untuk perangkat itu, dengan pengguna itu, dan kecepatan seperti apa yang diwakili oleh pola itu ketika memiliki data GPS untuk menyertainya. Anda harus dapat mendeteksi belokan, menaiki tangga, duduk (kalibrasi ke waktu kecepatan 0! ) dan berbagai tugas lainnya. Bagaimana ponsel dipegang perlu diperlakukan sebagai input data yang terpisah sepenuhnya. Saya mencium jaringan saraf yang digunakan untuk melakukan penambangan data. Dengan kata lain, sesuatu yang buta tentang arti masukan itu. Algoritme hanya akan mencari tren dalam pola, dan tidak terlalu memperhatikan pengukuran INS yang sebenarnya. Yang akan diketahui hanyalahhistorically, when this pattern occurs, the device is traveling and 2.72 m/s X, 0.17m/s Y, 0.01m/s Z, so the device must be doing that now.
Dan itu akan menggerakkan bidak ke depan. Sangat penting bahwa itu benar-benar buta, karena hanya meletakkan telepon di saku Anda mungkin berorientasi pada salah satu dari 4 orientasi yang berbeda, dan 8 jika Anda mengganti kantong. Dan ada banyak cara untuk memegang ponsel Anda juga. Kami membicarakan banyak data di sini.
Anda jelas masih memiliki banyak penyimpangan, tetapi saya pikir Anda akan lebih beruntung dengan cara ini karena perangkat akan tahu kapan Anda berhenti berjalan, dan penyimpangan posisi tidak akan berlangsung lama. Ia tahu bahwa Anda berdiri diam berdasarkan data historis. Sistem INS tradisional tidak memiliki fitur ini. Penyimpangan tersebut mengabadikan semua pengukuran dan senyawa di masa depan secara eksponensial. Akurasi yang tidak tepat, atau memiliki navigasi sekunder untuk diperiksa secara berkala, sangat penting dengan INS tradisional.
Setiap perangkat, dan setiap orang harus memiliki profilnya sendiri. Itu banyak data dan banyak perhitungan. Setiap orang berjalan dengan kecepatan yang berbeda, dengan langkah yang berbeda, dan meletakkan ponsel mereka di kantong yang berbeda, dll. Tentunya untuk menerapkan ini di dunia nyata akan membutuhkan pengolah angka untuk ditangani di sisi server.
Jika Anda memang menggunakan GPS untuk baseline awal, bagian dari masalahnya adalah GPS cenderung memiliki migrasi sendiri dari waktu ke waktu, tetapi kesalahan tersebut tidak terus-menerus. Tempatkan penerima di satu lokasi dan catat datanya. Jika tidak ada koreksi WAAS, Anda dapat dengan mudah mendapatkan perbaikan lokasi yang melayang ke arah acak 100 kaki di sekitar Anda. Dengan WAAS, mungkin turun hingga 6 kaki. Anda mungkin sebenarnya lebih beruntung dengan sistem RTK sub-meter di ransel untuk setidaknya menurunkan algoritma ANN.
Anda masih akan memiliki penyimpangan sudut dengan INS menggunakan metode saya. Ini adalah sebuah masalah. Tapi, jika Anda melangkah lebih jauh untuk membangun JST untuk menuangkan data GPS dan INS selama berminggu-minggu di antara n pengguna, dan benar-benar berhasil hingga titik ini, Anda jelas tidak keberatan dengan data besar sejauh ini. Terus ikuti jalur itu dan gunakan lebih banyak data untuk membantu menyelesaikan penyimpangan sudut: Manusia adalah makhluk kebiasaan. Kami cukup banyak melakukan hal yang sama seperti berjalan di trotoar, melewati pintu, naik tangga, dan tidak melakukan hal-hal gila seperti berjalan melintasi jalan raya, menembus dinding, atau keluar dari balkon.
Jadi katakanlah Anda mengambil halaman dari Big Brother dan mulai menyimpan data ke mana orang pergi. Anda dapat mulai memetakan di mana orang diharapkan untuk berjalan kaki. Ini adalah taruhan yang cukup pasti bahwa jika pengguna mulai menaiki tangga, dia berada di dasar tangga yang sama dengan yang dinaiki orang sebelumnya. Setelah 1000 iterasi dan beberapa penyesuaian kuadrat terkecil, database Anda cukup mengetahui di mana tangga tersebut berada dengan sangat akurat. Sekarang Anda dapat mengoreksi penyimpangan sudut dan lokasi saat orang tersebut mulai berjalan. Ketika dia menabrak tangga itu, atau berbelok ke lorong itu, atau berjalan di trotoar, setiap penyimpangan bisa diperbaiki. Database Anda akan berisi sektor-sektor yang dibobotkan oleh kemungkinan seseorang berjalan ke sana, atau pengguna ini pernah berjalan ke sana di masa lalu. Database spasial dioptimalkan untuk penggunaan inidivide and conquer
untuk hanya mengalokasikan sektor yang berarti. Ini akan menjadi semacam proyek MIT di mana robot yang dilengkapi laser dimulai dengan gambar hitam, dan melukis labirin dalam memori dengan mengambil setiap belokan, menerangi di mana semua dinding berada.
Area dengan lalu lintas tinggi akan mendapatkan bobot lebih tinggi, dan area di mana belum pernah ada yang mendapatkan bobot 0. Area lalu lintas yang lebih tinggi memiliki resolusi yang lebih tinggi. Anda pada dasarnya akan mendapatkan peta di mana pun orang pernah berada dan menggunakannya sebagai model prediksi.
Saya tidak akan terkejut jika Anda dapat menentukan kursi apa yang diambil seseorang di teater menggunakan metode ini. Mengingat cukup banyak pengguna yang pergi ke teater, dan resolusi yang cukup, Anda akan memiliki pemetaan data setiap baris teater, dan seberapa lebar setiap baris. Semakin banyak orang mengunjungi suatu lokasi, semakin tinggi keakuratan yang dapat Anda gunakan untuk memprediksi lokasi orang tersebut.
Juga, saya sangat menyarankan Anda mendapatkan langganan (gratis) ke majalah GPS World jika Anda tertarik dengan penelitian terkini tentang hal-hal semacam ini. Setiap bulan saya kutu buku dengan itu.