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

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

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

Хоббі

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

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

Ідея

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

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

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

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

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

Я назвав свій проєкт «В Похід Карпатами» і запустив вебсайт. На даний момент — це онлайн база даних актуальної інформації для піших походів Карпатами.

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

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

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

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

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

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

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

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

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

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

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

  1. Автономна робота без підключення до інтернету. Перед походом потрібно підключитися на деякий час, щоб отримати актуальні дані.
  2. Базовий GPS навігатор. Підтримка топографічних карт оффлайн.
  3. Робота з маршрутами походів, слідування обраному маршруту. Каталог маршрутів.
  4. Локальна копія бази даних з інформацією про місця, об’єкти та населені пункти.
  5. Швидкий пошук місць: наприклад, найближчого джерела чи колиби (будівлі).
  6. Функція «Що то за гора?». Визначення назви вершини, яку ви бачите в реальному часі.
  7. Доповнення бази даних самими користувачами. Додавання нових об’єктів, коментарів, фотографій.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Співпраця з рятувальними службами. Я намагаюся знайти правильні контакти та обговорити можливу співпрацю з рятувальниками та офіційними службами в горах. Відносно легко інтегрувати реєстрацію похідних груп через мобільний додаток, їх трекінг(за наявністю згоди) та створити дашборд для рятувальників, щоб бачити де і які групи є в поході, їх маршрути, плани, сигнали про завершення походів чи СОС сигнали. Все це можна зробити найближчим часом, потрібна лише згода відповідних чиновників.
  2. Інструменти спілкування через портал «В Похід Карпатами» та мобільний додаток. Тусовка любителів Карпат мусить мати спосіб тіснішого спілкування на єдиній платформі. Як програмісти мають DOU 🙂
  3. Онлайн трекінг маршруту, щоб показати де я зараз знаходжуся. Наприклад, відправити посилання мамі, вона зможе відкрити сторінку і бачити мій шлях і де я зараз. Буде працювати лише при наявності епізодичного інтернет підключення. Також можна реалізувати звичайний трекінг маршруту і його експорт у стандартні формати. Про це часто запитують користувачі.
  4. Побудова карти інтернет покриття Карпат. Телефони, на яких встановлено додаток, будуть відправляти регулярний сигнал через інтернет (анонімно). Якщо зв’язок вдався, координати запишуться в спеціальній базі. Через деякий час на основі зібраних даних буде створено карту покриття інтернетом (різних мобільних операторів). Ці дані також будуть зберігатися в телефонах та можуть бути використані в оффлайн режимі, щоб знайти де є найближче інтернет покриття до вашого місцезнаходження.
  5. Є ще ідея зробити щось розважальне, типу квести пошуку «карпатських духів». Якусь просту реалізацію клона Pokemon Go. Щоб за сезон побувати в якомога більшій кількості місць і зловити найбільше «чугайстрів».

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

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

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

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *