Мобільний додаток для походів Карпатами

Мене звати Роман Гелемб’юк , я програміст з Івано-Франківська.

В цій статті хочу розповісти, як одна моя пристрасть – походи в гори, поєдналася з іншою – програмуванням. Так зародилася ідея проєкту “В Похід Карпатами”, над реалізацією якої у вільний час працював впродовж року. Займався розробкою інструментів для походів в Карпати – веб портал з інформацією та мобільний додаток для Android.

Хоббі

Я дуже люблю гори, а ще більше – мандрувати горами. Напевно, це пов’язано з тим, що я народився в серці Карпат – селі Яблуниця. З одного вікна нашої хати було видно Говерлу з Петросом, а з іншого – гору Хом’як. Ці яскраві спогади дитинства манять мене в гори. Хоч давно вже змінив місце проживання, але 4-5 разів на рік вдається здійснити похід гірськими стежками. Я не бував у інших горах, крім Карпат, і не планую. Адже самих Карпат я обійшов, можливо, 10%. Це нагода побачити неймовірні полонини, гірські вершини, різноманітні типи лісу, озера та річки. Кожний похід – це нові враження, нові знахідки, нові відкриття, море позитиву і задоволення. Піша мандрівка розкриває таємниці Карпатських гір, заряджає новими силами.

Зазвичай я ходжу в походи з одним-двома приятелями, інколи сам. Наші походи не можна назвати спортивними, проте ми більше рухаємося, ніж сидимо на стоянках, і вдається долати серйозні відстані.

Ідея

Досвід перших походів навчив мене серйозно планувати використання води в поході. Її можна нести з собою, але це важко! Один літр води – ніби дуже мало, а важить аж один додатковий кілограм. Тому перед походом доводилося вивчати маршрут, щоб дізнатися, чи є на шляху джерела, де можна поповнити запас води, щоб не нести її з собою. Від вивчення карт не завжди одержував корисну інформацію. Джерело могло бути позначене на паперовій карті, але воно вже пересохло, або пересихає в певні місяці літа.

Так з’явилася ідея збирати інформацію про місця знаходження джерел, зберігати її та обмінюватися в спільноті любителів походів. Планувалося накопичити якнайбільше відомостей про кожне джерело, опис та коментарі від тих, хто ним користувався. Тоді можна швидко знайти найближче джерело і на основі цього краще спланувати свій маршрут.

З цією метою задумав зробити веб сайт для зберігання та обробки такої інформації і мобільний додаток для користування даними в поході.

Ідея з джерелами трансформувалася в задум створити інтерактивну карту об’єктів, корисних при походах Карпатами: розміщення колиб та інших будівель в горах, цікаві об’єкти, зручні місця для привалів та інше. Далі виникла потреба в підтримці маршрутів для походів.

Реалізація проєкту. Створення веб порталу

Я назвав свій проєкт “В Похід Карпатами” і запустив веб сайт https://vpohid.com.ua . На даний момент – це онлайн база даних актуальної інформації для піших походів Карпатами.

Каталог об’єктів та місць: джерела, колиби, місця привалів, озера та водоспади, цікаві природні та історичні місця, вершини, полонини, рятувальні служби. Для всіх об’єктів є можливість коментувати та додавати фотографії користувачами.

Інформація про населені пункти. Я додав цей каталог з двох причин. По-перше, щоб мати довідник про найближчі села в горах під час походу, особливо необхідна транспортна інформація. По-друге, щоб сприяти розвитку в цих селах та містах свого туристичного потенціалу. Дати можливість туристу побачити, відвідати дивовижні, цікаві, захоплюючі місця в Карпатському регіоні.

Каталог маршрутів. Інформація про маршрути для походів є в багатьох місцях, але вона дещо хаотична. Я вирішив впорядкувати це все в одному каталозі, інтегрувати з каталогом місць та інформацією про населені пункти. Турист зможе отримати максимум корисної інформації з одного джерела.

Технічна реалізація Веб порталу “В Похід Карпатами”

Цей сайт виконаний на простому перевіреному стеку — LAMP. Backend розробка з PHP – це моя основна спеціалізація . Тому з вибором технології довго не думав.

Мобільний додаток. Перший досвід мобільної розробки

Я вже 18 років професійно займаюся програмуванням, але раніше мені ніколи не доводилося мати справу з розробкою під Android і взагалі для мобільних пристроїв.

Бажання розібратися з нюансами цієї сфери заставило викроїти час для втілення свого задуму. Перш за все я одразу стикнувся з проблемою ресурсів робочого ноутбука. Для Backend розробки мені його завжди вистачало. А тут Android Studio ледве завантажилося, а коли запустив емулятор, то змушений був тиснути Reset, щоб перезапустити ноутбук. Довелося робити апгрейд ноутбука, ставити SSD і збільшувати оперативку, щоб лише почати робити перші кроки.

Мої зусилля увінчалися успіхом, і влітку минулого року випустив першу версію мобільного додатку для Android «В Похід Карпатами».

Для цього проєкту я обрав мову програмування Kotlin. В мене є деякий досвід з Java, Kotlin мені видався комфортнішим для розробки.

Ось перелік функцій, які вдалося реалізувати на даний час:

– Автономна робота без підключення до інтернету. Перед походом потрібно підключитися на деякий час, щоб отримати актуальні дані.

– Базовий GPS навігатор. Підтримка топографічних карт оффлайн.

– Робота з маршрутами походів, слідування обраному маршруту. Каталог маршрутів.

– Локальна копія бази даних з інформацією про місця, об’єкти та населені пункти.

– Швидкий пошук місць: наприклад, найближчого джерела чи колиби (будівлі).

– Функція “Що то за гора?”. Визначення назви вершини, яку ви бачите в реальному часі.

– Доповнення бази даних самими користувачами. Додавання нових об’єктів, коментарів, фотографій.

Щоб реалізувати все це, довелося чимало гуглити запитання, тексти помилок. В більшості випадків виручав SatckOverflow.

В цьому відео я демонструю роботу з маршрутом.

Найскладніша функція – “Що то за гора?”

Найбільше часу я потратив на реалізацію інструменту “Що то за гора?”. Використовуючи цю функцію, ви можете бачити зображення з камери свого телефону з підписами гірських вершин, які є в полі вашого зору в даний момент.

Визначення місця вершини на екрані монітора виконується математично, без аналізу зображення. Беру координати телефону, його положення в просторі, визначаю які вершини мали б бути в полі зору камери і обчислюю, де на екрані має бути кожна гора.

Досягти ідеальної роботи так і не вдалося.

Перша проблема: сенсори мобільних телефонів не є абсолютно точними. Для цієї функції потрібна інформація про 3Д орієнтацію пристрою. На практиці інформація з сенсорів постійно “смикається”. Зафіксувавши телефон нерухомо, отримуємо невеликі зміщення значень сенсорів. Тому зображення підписів постійно рухаються.

Друга проблема з сенсорами в тому, що обчислені вектори не точно співпадають з реальним направленням камери. Може бути відхилення на градус і як результат – маркер з підписом виходить зміщеним. Я вирішив це з допомогою коректора внизу екрана, який можна рухати, щоб сумістити зображення камери з маркерами. Можливо, в майбутньому знайду спосіб вирішити цю проблему без коректора.

Ще одна проблема – визначити чи реально гору видно, чи вона перекривається іншими вершинами або схилами. При обчисленнях я вважаю кожну гору правильним конусом. Але, звичайно, це не так. В результаті часто отримуємо відображення маркера з підписом для вершин, яких насправді не видно. Напевно, єдиний вірний спосіб вирішення цієї проблеми – зберігання 3Д карти всіх гір і проводити обчислення на такій карті. На даному етапі це виглядає занадто складно.

В цьому відео я демонструю як працює цей інструмент.

Проблема дизайну інтерфейсу

Мій основний професійний профіль — Backend розробка. Свого часу я був Web Full Stack, але, чесно кажучи, створити гарний графічний дизайн мені ніколи не вдавалося. На жаль, не володію такими здібностями. Тому і цей проєкт має недоліки в дизайні GUI. Як веб сайт, так і мобільний додаток.

В майбутньому надіюся залучити когось для виконання цієї роботи в моєму проєкті.

Майбутні плани розвитку проєкту

Ідей подальшого розвитку є багато. Стараюся шукати вільний час для їх реалізації:

– Співпраця з рятувальними службами. Я намагаюся знайти правильні контакти та обговорити можливу співпрацю з рятувальниками та офіційними службами в горах.

Відносно легко інтегрувати реєстрацію похідних груп через мобільний додаток, їх трекінг(за наявністю згоди) та створити дашборд для рятувальників, щоб бачити де і які групи є в поході, їх маршрути, плани, сигнали про завершення походів чи СОС сигнали.

Все це можна зробити найближчим часом, потрібна лише згода відповідних чиновників.

– Інструменти спілкування через портал “В Похід Карпатами” та мобільний додаток. Тусовка любителів Карпат мусить мати спосіб тіснішого спілкування на єдиній платформі. Як програмісти мають DOU 🙂 .

– Онлайн трекінг маршруту, щоб показати де я зараз знаходжуся. Наприклад, відправити посилання мамі, вона зможе відкрити сторінку і бачити мій шлях і де я зараз. Буде працювати лише при наявності епізодичного інтернет підключення.

Також можна реалізувати звичайний трекінг маршруту і його експорт у стандартні формати. Про це часто запитують користувачі.

– Побудова карти інтернет покриття Карпат. Телефони, на яких встановлено додаток, будуть відправляти регулярний сигнал через інтернет (анонімно). Якщо зв’язок вдався, координати запишуться в спеціальній базі. Через деякий час на основі зібраних даних буде створено карту покриття інтернетом (різних мобільних операторів). Ці дані також будуть зберігатися в телефонах та можуть бути використані в оффлайн режимі, щоб знайти де є найближче інтернет покриття до вашого місцезнаходження.

– Є ще ідея зробити щось розважальне, типу квести пошуку “карпатських духів”. Якусь просту реалізацію клона Pokemon Go. Щоб за сезон побувати в якомога більшій кількості місць і зловити найбільше “чугайстрів”.

Відгуки користувачів

Я отримую зворотний зв’язок від користувачів мобільного додатку. Найбільше мене радують відгуки, де люди дякують за функцію пошуку джерел, з допомогою якої вони змогли краще спланувати свій маршрут, а заодно відчули дивовижний смак пішого походу Карпатськими горами.

Контакти та посилання

Я зацікавлений у відгуках та пропозиціях відносно цього проєкту. Особливо чекаю вражень від користування в походах активними туристами.

Вся інформація для зв’язку є на сайті https://vpohid.com.ua . Новини проєкту публікуються у блозі https://vpohid.com.ua/blog/ та дублюються на фейсбук сторінці https://fb.com/vpohid.com.ua . Емейл: vpohid.com.ua@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *