Автор: Антон Бондаренко

Коли йдеться про планування маршруту логістичного НРК у зоні бойових дій, уява одразу малює щось апокаліптичне: місячний пейзаж, вивернутий асфальт, траншеї через кожні сто метрів.
Реальність, як завжди, прозаїчніша. Більшість завдань логістики НРК розгортаються на тих самих полях, лісосмугах і ґрунтових дорогах, що й у мирний час. Так, додаються вирви, згоріла техніка на узбіччях та інші неприємні сюрпризи. Але загалом — це та сама сільська місцевість, якою люди їздили і ходили задовго до всього цього.
З цього випливає неочевидний, але практично важливий висновок: інструменти маршрутизації, створені для мирного часу, цілком придатні і тут — з поправками на специфіку завдання.
Звісно, маршрут завжди можна прокласти вручну. Іноді так і доведеться. Але коли потрібно швидко оцінити кілька варіантів, порахувати відстані або автоматизувати побудову маршрутів для кількох точок — спеціалізовані інструменти заощаджують серйозну кількість часу.
Ось три open-source інструменти маршрутизації, які варто знати:
OSRM (Open Source Routing Machine) — швидкий і лаконічний. Будує маршрути на основі даних OpenStreetMap, працює блискавично навіть на великих картах. Гарний для швидкого прототипування: підняв локальний сервер, отримав маршрут по API — і далі. З обмежень: кастомізувати профілі руху (тобто пояснити системі, що ваш робот — не автомобіль і не пішохід) тут складніше, ніж хотілося б.
Valhalla — гнучкіший інструмент від Mapbox, теж на базі OpenStreetMap. Підтримує налаштовувані профілі транспортних засобів і вміє працювати з "avoid polygons" — зонами, куди маршрут заходити не повинен. Це особливо цікаво стосовно нашого завдання: заборонені зони можна задавати динамічно, не перезбираючи граф доріг заново.
GraphHopper — написаний на Java, добре масштабується, має розвинений API і підтримку кастомних моделей маршрутизації. Дозволяє досить тонко налаштовувати ваги для різних типів доріг і поверхонь — що актуально, якщо ваш НРК поводиться інакше на ґрунтовці й на асфальті.
Що нам реально потрібно від такого інструменту (формулюємо вимоги):
Ґрунтові та польові дороги. Потрібно переконатися, що рушій не ігнорує дороги низької категорії.
Профіль НРК — не людина і не автомобіль, а окрема категорія. Він може проїхати там, де не проїде легковик, але не скрізь, де пройде піхотинець. Це означає, що профіль руху треба налаштовувати під конкретну платформу.
Заборонені зони. Можливість динамічно вказати: "сюди не їхати" — без необхідності переписувати граф доріг цілком. Це ключова вимога для реальних сценаріїв.
Додаткові можливості. Оцінка часу в дорозі, альтернативні маршрути, інтеграція з іншим ПЗ через API — все це з категорії "приємно мати", але іноді виявляється вирішальним при виборі інструменту.
Підсумок
Я навмисно не називаю тут "переможця" серед цих трьох інструментів. Оптимальний вибір залежить від конкретної платформи, інфраструктури, в яку це інтегрується, і доступних ресурсів на налаштування.
Рекомендую провести власне дослідження — благо, всі три інструменти відкриті. А ШІ тут чудовий співрозмовник: ставте йому запитання про конкретні сценарії, просіть порівняти, просіть пояснити архітектуру. Це працює.
І останнє: не існує інструменту, який покриє всі маршрути на війні. Іноді треба просто взяти карту і прокласти маршрут руками. Але знати інструменти — значить розуміти, коли вони допомагають, а коли краще не витрачати час.