Kami telah membangun jalur pendakian di sepanjang jalan setapak, melalui gerbang dan dengan kemampuan untuk mengambil jalan pintas melalui halaman sejak April 2017. Baru-baru ini, kami telah menambahkan navigator lengkap untuk pejalan kaki ke 2GIS - dengan mode belokan demi belokan dan akting suara dari titik-titik penting di rute.
Di bawah potongan adalah cerita tentang bagaimana kami ingin menyelesaikan masalah ini dengan cepat, mengandalkan keahlian dalam navigasi untuk mobil, dan sebagai hasilnya, kami menemukan skenario baru, memperjuangkan ukuran pangkalan dan belajar memberikan instruksi yang benar .
Skenario baru
Kami berencana untuk menangani masalah ini "dalam beberapa minggu" dengan sedikit mengubah logika manuver mobil. Untuk pengujian pertama, kami membuat perakitan dengan akting suara dari manuver kaki, "melilitkan" pada algoritme navigasi mobil. Hasilnya luar biasa.
Saya merencanakan rute dari rumah dan meletakkan ponsel saya di saku. Berfokus hanya pada panduan suara. Ketika saya menyadari bahwa saya mulai mengembara tanpa tujuan, dan perintah suara hanya membawa saya menjauh dari titik akhir, saya memutuskan untuk membangun kembali rute. Ketika masalah diulangi untuk yang kedelapan kalinya, menjadi jelas bahwa kami memiliki banyak pekerjaan di depan.
Instruksi suara didasarkan pada skenario penggunaannya. Template skenario standar adalah bagaimana tepatnya pejalan kaki mendekati sebuah persimpangan, seberapa cepat dia bergerak dan kemana dia akan pergi nanti. Instruksi otomotif tidak berfungsi, karena kondisi reproduksinya terlalu berbeda dengan pejalan kaki. Ini basi - kecepatan pejalan kaki beberapa kali lebih sedikit, dan ini memengaruhi momen akting suara dari manuver.
Pada saat yang sama, penting untuk mempertimbangkan nuansa: penyeberangan pejalan kaki, lampu lalu lintas, gerbang, tangga, penyeberangan darat dan bawah tanah, karena informasi tentang benda-benda ini membantu pejalan kaki menemukan arahnya lebih cepat.
Kami telah mengumpulkan dan mendeskripsikan skenario praktis baru dan merumuskan aturan baru sehingga saat mendekati jalan bawah tanah kami mengatakan “Turun ke jalan bawah tanah”, dan bukan hanya “Menyeberang jalan”.
Algoritme lama
Kualitas rute secara langsung bergantung pada kelengkapan data yang digunakan untuk membangun rute: pengetahuan dasar tentang grafik jalan, lokasi edge, dan atribut tambahannya.
Kelengkapan data dicapai dalam dua tahap: pertama, kami mengumpulkan informasi, dan kemudian kami menyempurnakannya menggunakan algoritme prakalkulasi.
Berdasarkan informasi dasar tersebut, algoritma dapat memperkaya pengetahuan tentang grafik dengan atribut tambahan, misalnya instruksi mobil.
Jadi untuk rute mobil kami menghasilkan terlebih dahulu semua opsi yang memungkinkan untuk mengemudi melalui persimpangan, dan untuk setiap opsi kami menghitung instruksi yang diperlukan dan menambahkan atribut padanya. Pendekatan ini memiliki sejumlah keuntungan: Dapat
diverifikasi
Bahkan pada tahap praperhitungan, Anda dapat menerapkan berbagai algoritme untuk memeriksa kasus umum. Dihitung dengan benar, instruksi terverifikasi tidak akan lagi berubah. Ini memungkinkan untuk memeriksa kebenaran instruksi yang diterima sebelum kami mengirimkan data dan algoritme kepada pengguna.
Memperbarui data
Data dalam aplikasi 2GIS diperbarui secara terpisah dari aplikasi itu sendiri. Dan kami merilisnya lebih sering daripada perubahan dalam algoritme perpustakaan kami untuk ponsel - ini memungkinkan untuk memperbaiki atau menambahkan instruksi tanpa menunggu rilis aplikasi.
Efisiensi algoritma pra-generasi
Algoritme untuk mengeluarkan instruksi di sepanjang rute sebenarnya bermuara pada membandingkan instruksi yang sudah ada di database untuk semua tepi yang membentuk rute dan menerbitkannya kepada pengguna. Dengan menggunakan algoritme, ini jauh lebih mudah dan lebih cepat daripada menganalisis kemungkinan situasi dalam runtime dan menghasilkan instruksi darinya.
Tetapi ada dua kelemahan besar - pendekatan ini memaksa Anda untuk mengalokasikan sumber daya tambahan untuk menyimpan informasi baru dan menciptakan ketergantungan pada pembaruan paket data. Jika data tidak diperbarui atau tidak ada, maka pengguna tidak mendapatkan akses ke fitur tersebut meskipun ia memiliki algoritme.
Algoritme baru
Bahkan pada tahap pembuatan prototipe pertama, kami melihat bahwa karena instruksi pejalan kaki, ukuran pangkalan lokal yang digunakan untuk mencari rute semakin bertambah. Rata-rata, paket perutean telah tumbuh sebesar 20% - ini adalah jumlah yang tidak dapat diterima, karena akan menyebabkan peningkatan ukuran basis data luring pada ponsel pemirsa kami.
Dibandingkan dengan persimpangan mobil, penyeberangan pejalan kaki memungkinkan lebih banyak pilihan untuk jalur tersebut. Persimpangan standar memiliki 56 opsi untuk berjalan, tergantung pada posisi titik awal (8 sisi persimpangan) dan titik akhir (7 sisi). Dan di setiap versi - hingga tiga manuver pejalan kaki.
Dan persimpangan pejalan kaki itu sendiri, karena berbagai macam jalur pejalan kaki dan persimpangannya dalam grafik, berkali-kali lipat lebih banyak daripada persimpangan mobil. Memperhatikan fakta bahwa kami melihat pertumbuhan hanya pada tahap awal mengerjakan instruksi dan masih banyak kasus yang belum terselesaikan, kecenderungannya menakutkan.
Karena itu, kami meninggalkan gagasan prakalkulasi instruksi pejalan kaki dan memindahkan logika pembuatannya ke runtime. Jika ada Internet, maka instruksi dihitung di server kami, dan jika tidak ada Internet atau respons server tidak memenuhi batas waktu, maka di aplikasi seluler. Faktanya, kami menulis ulang algoritme dari awal.
Kami menjadi kurang bergantung pada versi data. Dan dalam kombinasi dengan fakta bahwa sebagian besar skrip dibuat melalui server online kami, menjadi mungkin untuk dengan cepat menyempurnakan algoritme untuk semua pengguna sekaligus.
Instruksi baru
Saya ulangi bahwa trotoar pejalan kaki melalui persimpangan jauh lebih bervariasi dibandingkan dengan mobil.
Setiap persimpangan adalah kesempatan untuk mengubah rute
Pada tahap elaborasi instruksi, kami menghadapi masalah presentasi mereka yang kompak, tidak ambigu dan tepat waktu. Tanda bintang untuk tugas itu ditambahkan oleh fakta bahwa telepon dapat berada di saku, dan pengguna tidak melihat garis panduan dan panah. Anda hanya bisa fokus pada panduan suara. Selain itu, pejalan kaki, tidak seperti mobil, dapat dengan mudah berputar di hampir semua sudut di area yang sangat sempit. Dan penting untuk menjelaskan kepada seseorang seakurat mungkin bagaimana dan di mana tepatnya untuk menyeberang jalan, berbelok atau turun.
Awalnya saya berkeliling dan menuliskan kesalahan. Kadang-kadang saya melewati persimpangan beberapa lusin kali untuk memahami apa saja pilihannya. Kemudian mereka membuat emulator, di mana mereka meluncurkan pejalan kaki virtual, dan mendengarkan apa yang disuarakan kepadanya dan pada saat apa.
Kami memeriksa voice acting jalur hutan, jalan halaman, penyeberangan melalui persimpangan lebar, penyeberangan pejalan kaki yang tidak diatur dan diatur dengan lampu lalu lintas.
Pengalaman praktis yang dikumpulkan dianalisis, didiskusikan, dibagi menjadi beberapa kelompok perbaikan, disatukan oleh solusi bersama. Untuk masing-masing, skenario algoritmik diciptakan.
Pada tahap ini, disadari bahwa instruksi satu komponen, seperti instruksi mobil, tidak cukup - dalam rute berjalan kaki, dua instruksi terpisah sangat dekat sehingga karena GPS yang tidak akurat mereka mungkin terdengar ketinggalan zaman dan membingungkan seseorang.
Kami membuat instruksi suara komposit untuk mengorientasikan diri kami sebelum transisi, ke arah mana harus bergerak setelahnya.
Dari sudut pandang pengguna, instruksi seperti itu tidak berbeda dengan instruksi mobil biasa. Jadi, ungkapan "Belok kiri, lalu belok kanan setelah 100 meter" untuk mobil adalah dua instruksi satu komponen
“Belok kiri” + “setelah 100 meter, belok kanan”. Dan bagi pejalan kaki, ungkapan untuk menyeberang jalan “Belok kiri di penyeberangan lalu belok kanan” sepenuhnya merupakan satu instruksi.
Faktanya, instruksi tersebut adalah kumpulan instruksi belokan dasar, tetapi dalam bentuk instruksi lisan tunggal. Pendekatan ini memungkinkan untuk secara signifikan meningkatkan konten informasi dan kenyamanan pemeliharaan latar belakang. Apalagi saat melintasi persimpangan non-sepele.
Di tempat penyeberangan terdekat, belok kiri,
dan segera setelah penyeberangan, belok kanan
Apa lagi
Penentuan posisi geografis "Penyetelan"
Rute pejalan kaki sering kali menyertakan jalur yang relatif dangkal - tepi grafik. Dan dalam kondisi perkotaan, ketika sinyal tidak stabil dan / atau dilindungi oleh benda-benda bertingkat tinggi, kesalahan posisi dapat mengganggu perhitungan instruksi dan panduan yang benar di sepanjang rute. Agar tidak secara tidak sengaja membuang titik saat ini ke sisi lain jalan, kami telah sedikit "menyetel" algoritme - kami mempertimbangkan nuansa kesalahan dan menyesuaikan algoritme untuk menggambar ke rute hingga 30 meter.
Vibro
Panduan suara adalah solusi saat telepon di saku Anda. Namun untuk menghindari situasi di mana suara tidak akan terdengar di kota yang bising, kami menambahkan getaran, yang dipicu bersama dengan suara yang bertindak sebelum melakukan manuver yang diinginkan. Pola getar itu sendiri dibuat berbeda dari pola biasanya saat berkomunikasi di messenger.
Apa yang terjadi
Hasilnya, versi publik pertama dari navigator untuk pejalan kaki memakan waktu sekitar enam bulan. Sekarang tersedia dalam versi 2GIS untuk iOS dan Android.
Kami telah melakukan pekerjaan dengan baik, tetapi kami sendiri sangat menyadari bahwa kami melewatkan opsi-opsi rumit. Kirimkan melalui aplikasi seluler kasus-kasus yang kami tunjukkan dan disuarakan secara tidak benar - masing-masing akan dipertimbangkan dan diperhitungkan dalam algoritme.