Мене звати Роман Гелемб’юк, я програміст з Івано-Франківська.
В цій статті хочу розповісти, як одна моя пристрасть — походи в гори, поєдналася з іншою — програмуванням. Так зародилася ідея проєкту «В Похід Карпатами», над реалізацією якої у вільний час працював впродовж року. Займався розробкою інструментів для походів в Карпати — веб портал з інформацією та мобільний додаток для Android.
Хоббі
Я дуже люблю гори, а ще більше — мандрувати горами. Напевно, це пов’язано з тим, що я народився в серці Карпат — селі Яблуниця. З одного вікна нашої хати було видно Говерлу з Петросом, а з іншого — гору Хом’як. Ці яскраві спогади дитинства манять мене в гори. Хоч давно вже змінив місце проживання, але 4-5 разів на рік вдається здійснити похід гірськими стежками. Я не бував у інших горах, крім Карпат, і не планую. Адже самих Карпат я обійшов, можливо, 10%. Це нагода побачити неймовірні полонини, гірські вершини, різноманітні типи лісу, озера та річки. Кожний похід — це нові враження, нові знахідки, нові відкриття, море позитиву і задоволення. Піша мандрівка розкриває таємниці Карпатських гір, заряджає новими силами.
Зазвичай я ходжу в походи з одним-двома приятелями, інколи сам. Наші походи не можна назвати спортивними, проте ми більше рухаємося, ніж сидимо на стоянках, і вдається долати серйозні відстані.
Ідея
Досвід перших походів навчив мене серйозно планувати використання води в поході. Її можна нести з собою, але це важко! Один літр води — ніби дуже мало, а важить аж один додатковий кілограм. Тому перед походом доводилося вивчати маршрут, щоб дізнатися, чи є на шляху джерела, де можна поповнити запас води, щоб не нести її з собою. Від вивчення карт не завжди одержував корисну інформацію. Джерело могло бути позначене на паперовій карті, але воно вже пересохло, або пересихає в певні місяці літа.
Так з’явилася ідея збирати інформацію про місця знаходження джерел, зберігати її та обмінюватися в спільноті любителів походів. Планувалося накопичити якнайбільше відомостей про кожне джерело, опис та коментарі від тих, хто ним користувався. Тоді можна швидко знайти найближче джерело і на основі цього краще спланувати свій маршрут.
З цією метою задумав зробити веб сайт для зберігання та обробки такої інформації і мобільний додаток для користування даними в поході.
Ідея з джерелами трансформувалася в задум створити інтерактивну карту об’єктів, корисних при походах Карпатами: розміщення колиб та інших будівель в горах, цікаві об’єкти, зручні місця для привалів та інше. Далі виникла потреба в підтримці маршрутів для походів.
Реалізація проєкту. Створення веб порталу
Я назвав свій проєкт «В Похід Карпатами» і запустив вебсайт. На даний момент — це онлайн база даних актуальної інформації для піших походів Карпатами.
Каталог об’єктів та місць: джерела, колиби, місця привалів, озера та водоспади, цікаві природні та історичні місця, вершини, полонини, рятувальні служби. Для всіх об’єктів є можливість коментувати та додавати фотографії користувачами.
Інформація про населені пункти. Я додав цей каталог з двох причин. По-перше, щоб мати довідник про найближчі села в горах під час походу, особливо необхідна транспортна інформація. По-друге, щоб сприяти розвитку в цих селах та містах свого туристичного потенціалу. Дати можливість туристу побачити, відвідати дивовижні, цікаві, захоплюючі місця в Карпатському регіоні.
Каталог маршрутів. Інформація про маршрути для походів є в багатьох місцях, але вона дещо хаотична. Я вирішив впорядкувати це все в одному каталозі, інтегрувати з каталогом місць та інформацією про населені пункти. Турист зможе отримати максимум корисної інформації з одного джерела.
Технічна реалізація вебпорталу «В Похід Карпатами»
Цей сайт виконаний на простому перевіреному стеку — LAMP. Backend розробка з PHP — це моя основна спеціалізація. Тому з вибором технології довго не думав.
Мобільний додаток. Перший досвід мобільної розробки
Я вже 18 років професійно займаюся програмуванням, але раніше мені ніколи не доводилося мати справу з розробкою під Android і взагалі для мобільних пристроїв.
Бажання розібратися з нюансами цієї сфери заставило викроїти час для втілення свого задуму. Перш за все я одразу стикнувся з проблемою ресурсів робочого ноутбука. Для Backend розробки мені його завжди вистачало. А тут Android Studio ледве завантажилося, а коли запустив емулятор, то змушений був тиснути Reset, щоб перезапустити ноутбук. Довелося робити апгрейд ноутбука, ставити SSD і збільшувати оперативку, щоб лише почати робити перші кроки.
Мої зусилля увінчалися успіхом, і влітку минулого року випустив першу версію мобільного додатку для Android «В Похід Карпатами».
Для цього проєкту я обрав мову програмування Kotlin. В мене є деякий досвід з Java, Kotlin мені видався комфортнішим для розробки.
Ось перелік функцій, які вдалося реалізувати на даний час:
- Автономна робота без підключення до інтернету. Перед походом потрібно підключитися на деякий час, щоб отримати актуальні дані.
- Базовий GPS навігатор. Підтримка топографічних карт оффлайн.
- Робота з маршрутами походів, слідування обраному маршруту. Каталог маршрутів.
- Локальна копія бази даних з інформацією про місця, об’єкти та населені пункти.
- Швидкий пошук місць: наприклад, найближчого джерела чи колиби (будівлі).
- Функція «Що то за гора?». Визначення назви вершини, яку ви бачите в реальному часі.
- Доповнення бази даних самими користувачами. Додавання нових об’єктів, коментарів, фотографій.
Щоб реалізувати все це, довелося чимало гуглити запитання, тексти помилок. В більшості випадків виручав StackOverflow.
В цьому відео я демонструю роботу з маршрутом.
Найскладніша функція «Що то за гора?»
Найбільше часу я потратив на реалізацію інструменту «Що то за гора?». Використовуючи цю функцію, ви можете бачити зображення з камери свого телефону з підписами гірських вершин, які є в полі вашого зору в даний момент.
Визначення місця вершини на екрані монітора виконується математично, без аналізу зображення. Беру координати телефону, його положення в просторі, визначаю які вершини мали б бути в полі зору камери і обчислюю, де на екрані має бути кожна гора.
Досягти ідеальної роботи так і не вдалося.
Перша проблема: сенсори мобільних телефонів не є абсолютно точними. Для цієї функції потрібна інформація про 3Д орієнтацію пристрою. На практиці інформація з сенсорів постійно «смикається». Зафіксувавши телефон нерухомо, отримуємо невеликі зміщення значень сенсорів. Тому зображення підписів постійно рухаються.
Друга проблема з сенсорами в тому, що обчислені вектори не точно співпадають з реальним направленням камери. Може бути відхилення на градус і як результат — маркер з підписом виходить зміщеним. Я вирішив це з допомогою коректора внизу екрана, який можна рухати, щоб сумістити зображення камери з маркерами. Можливо, в майбутньому знайду спосіб вирішити цю проблему без коректора.
Ще одна проблема — визначити чи реально гору видно, чи вона перекривається іншими вершинами або схилами. При обчисленнях я вважаю кожну гору правильним конусом. Але, звичайно, це не так. В результаті часто отримуємо відображення маркера з підписом для вершин, яких насправді не видно. Напевно, єдиний вірний спосіб вирішення цієї проблеми — зберігання 3Д карти всіх гір і проводити обчислення на такій карті. На даному етапі це виглядає занадто складно.
В цьому відео я демонструю як працює цей інструмент.
Проблема дизайну інтерфейсу
Мій основний професійний профіль — Backend розробка. Свого часу я був Web Full Stack, але, чесно кажучи, створити гарний графічний дизайн мені ніколи не вдавалося. На жаль, не володію такими здібностями. Тому і цей проєкт має недоліки в дизайні GUI. Як веб сайт, так і мобільний додаток.
В майбутньому надіюся залучити когось для виконання цієї роботи в моєму проєкті.
Майбутні плани розвитку проєкту
Ідей подальшого розвитку є багато. Стараюся шукати вільний час для їх реалізації:
- Співпраця з рятувальними службами. Я намагаюся знайти правильні контакти та обговорити можливу співпрацю з рятувальниками та офіційними службами в горах. Відносно легко інтегрувати реєстрацію похідних груп через мобільний додаток, їх трекінг(за наявністю згоди) та створити дашборд для рятувальників, щоб бачити де і які групи є в поході, їх маршрути, плани, сигнали про завершення походів чи СОС сигнали. Все це можна зробити найближчим часом, потрібна лише згода відповідних чиновників.
- Інструменти спілкування через портал «В Похід Карпатами» та мобільний додаток. Тусовка любителів Карпат мусить мати спосіб тіснішого спілкування на єдиній платформі. Як програмісти мають DOU 🙂
- Онлайн трекінг маршруту, щоб показати де я зараз знаходжуся. Наприклад, відправити посилання мамі, вона зможе відкрити сторінку і бачити мій шлях і де я зараз. Буде працювати лише при наявності епізодичного інтернет підключення. Також можна реалізувати звичайний трекінг маршруту і його експорт у стандартні формати. Про це часто запитують користувачі.
- Побудова карти інтернет покриття Карпат. Телефони, на яких встановлено додаток, будуть відправляти регулярний сигнал через інтернет (анонімно). Якщо зв’язок вдався, координати запишуться в спеціальній базі. Через деякий час на основі зібраних даних буде створено карту покриття інтернетом (різних мобільних операторів). Ці дані також будуть зберігатися в телефонах та можуть бути використані в оффлайн режимі, щоб знайти де є найближче інтернет покриття до вашого місцезнаходження.
- Є ще ідея зробити щось розважальне, типу квести пошуку «карпатських духів». Якусь просту реалізацію клона Pokemon Go. Щоб за сезон побувати в якомога більшій кількості місць і зловити найбільше «чугайстрів».
Відгуки користувачів
Я отримую зворотний зв’язок від користувачів мобільного додатку. Найбільше мене радують відгуки, де люди дякують за функцію пошуку джерел, з допомогою якої вони змогли краще спланувати свій маршрут, а заодно відчули дивовижний смак пішого походу Карпатськими горами.
Контакти та посилання
Я зацікавлений у відгуках та пропозиціях відносно цього проєкту. Особливо чекаю вражень від користування в походах активними туристами.
Вся інформація для зв’язку є на сайті. Новини проєкту публікуються у блозі та дублюються на FB-сторінці. Емейл: vpohid.com.ua@gmail.com.