C4 Vision system — розподілена система обміну інформацією для військових від S.T.A.R Vision
У рубриці DOU Проектор всі охочі можуть презентувати свій продукт (як стартап, так і ламповий pet-проект). Якщо вам є про що розповісти — запрошуємо взяти участь. Якщо ні — можливо, серія надихне на створення власного made in Ukraine продукту. Питання і заявки на участь надсилайте на Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. .
Усім привіт! Мене звати Євген Максименко. На сьогодні я СЕО продуктової компанії S.T.A.R. Vision, яка розробляє C4ISTAR-системи (Command Control Communications Computers Intelligence Surveillance Target Acquisition and Reconnaissance). Як видно з назви, системи цього типу призначено для збору розвідувальної інформації, спостереження за районом дій різними сенсорами, визначення координат та характеру цілей для інших зовнішніх систем і споживачів, усебічного аналізу ситуаційних обставин, розповсюдження даних між користувачами певною мережею, видачі завдань, що базуються на отриманих даних, і контролю їх виконання.
У цій статті я хотів би висвітлити таку проблему: здебільшого сучасні програмні комплекси орієнтовано на популярну хмарну архітектуру з певними потужними серверами, які працюють десь у мережі на стабільному зв’язку й надають послуги віддаленим клієнтам, використовуючи централізовану авторизацію та зазвичай HTTP-протокол. А що робити, коли глобальної інфраструктури зв’язку немає, і це унеможливлює доступ усіх користувачів до певного центрального вузла, а також коли характеристики каналів роблять неефективним використання навіть TCP-протоколу, але обмінюватися інформацією однаково треба, наприклад у разі стихійного лиха або війни. Чи є готові платформи або технології для побудови такої системи?
Ідея
Колись далекого 2012 року я виховував молодь у військово-патріотичному дусі й був одним із засновників клубу ARMS-Project. Наш колектив зорганізовував туристичні походи на дику природу з елементами виконання певних військових завдань (розвідка місцевості, пошук вантажу або парашутистів, порятунок умовних поранених тощо). Коли колектив виріс до кількох сотень людей, постала проблема розуміння, де перебуває велика кількість груп, що вони роблять і які в них зараз складнощі. Тоді виникла ідея зробити певний спрощений аналог військової системи ситуаційної обізнаності (C4I), яка тоді набирали обертів у різних провідних арміях світу.
Використання КомБат С2 на військово-патріотичних іграх
Так з’явилася перша альфа-версія, а згодом, 2013 року, друга релізна версія системи розвідки й координації «КомБат», яка тоді ще називалася MAP 21. Систему було побудовано на звичайному клієнт-серверному принципі, де сервер синхронізації даних на PHP 5.6 та MySQL обслуговував набір Android 2.3 + клієнтів, гарантував усім користувачам бачення єдиного стану об’єктів на мапі, надавав тайли різних, заздалегідь кешованих онлайн-мап і дані висот, а також давав змогу обмінюватися текстовими повідомленнями й вкладеннями до них за принципом тодішніх приватних повідомлень на форумах. Завдяки вбудованим у кінцеві пристрої GPS-приймачам це вможливило розв’язати проблему розуміння, де перебувають усі користувачі, бачити їхній стан і потреби, а також обмінюватися інформацією про об’єкти в просторі й текстовими повідомленнями. Але виникла проблема того, що обмін даними відбувався лише в точках з наявною інфраструктурою мобільного зв’язку, якої, як ви розумієте, у лісі немає, тому використання системи було дуже лімітованим і накладало очевидні обмеження на вибір полігону для проведення заходів.
Інтерфейс першої версії MAP21
Потім, 2014 року, Росія напала на Україну й почалася всім відома війна. З’ясувалося, що армію тоді було екіпіровано й навчено діяти подекуди гірше, ніж членів нашого клубу. Тому частина колективу посилила своїм складом різні підрозділи силових структур, а в мене виникла думка: чому б не впровадити в нашій відсталій на той час «маленькій радянській армії» таку саму начебто відсталу (спрощену), але дієву й перевірену на практиці копію системи ситуаційної обізнаності (C4I), посиливши її заходами безпеки та надійнішим шифруванням. Так з’явилася сучасна система «КомБат 3.6», яку досі використовують у різних підрозділах ЗСУ, НГУ й СБУ для координації дій мобільних частин. До системи із часом додалися модулі сполученого спостереження за допомогою охоронних камер і модуль післяпольотного аналізу відео з БПЛА з автоматичним визначенням координат об’єктів на екрані, а також модуль інтеграції з далекомірами для визначення координат цілей, що дало змогу ефективно збирати й обробляти інформацію з лінії розмежування в АТО.
Так 2015 року система перетворилася на повноцінну C4ISTAR. Але проблема централізованості системи й потенційного браку інфраструктури фіксованого зв’язку нікуди не зникла, а навіть посилилася, бо вибирати полігон для проведення заходів тепер можливості не було, а використовувати мобільний зв’язок небезпечно. Під час еволюції продукту ми додали інтеграцію з різними типами радіозв’язку (Harris, Motorola, Micronet, KA-SAT) і навчили клієнтські пристрої обмінюватися між собою без сервера. Але це був радше резервний вид обміну даними, бо він реалізовував суто P2P-підхід і не забезпечував автоматичного збереження цілісної картини мапи між усіма пристроями. Також ми навчили сервери під’єднуватися один до одного й вибудовувати статичні деревинні топології серверів, але носити із собою та швидко налаштовувати LAMP-сервери в польових умовах було не дуже зручно, насамперед через нестачу відповідних кадрів.
Так назріла потреба повністю переглянути архітектуру системи, щоб зробити її незалежною від центрального вузла й наявності глобальної інфраструктури зв’язку. 2018 року було створено компанію S.T.A.R. Vision і започатковано новий проект C4 Vision, який увібрав у себе всі переваги та функції старої системи, але його було спрямовано на модернізацію принципів обміну даними й перехід на сучаснішу тривимірну модель зображення мапи з функцією доповненої реальності.
У світі є багато альтернатив нашому продукту, як-от: Systematic SitaWare, Saab 9Land, Northrop Grumman C2PC, Thales C4ISR, Milsistematice BES, TELDAT JASMINE, AGIS LifeRing та US Army ATAK, але, по-перше, вони коштують набагато більше, по-друге, мають обмеження на розповсюдження до інших країн, по-третє, здебільшого їх створено давно й вони базуються на застарілому технологічному стеку, а головне — кожна країна має покладати питання національної безпеки на власних виробників, а не довіряти їх продуктам інших країн.
Як працює проект
Здебільшого сучасні платформи ставлять питання наявності зв’язку із сервером (а конкретніше, навіть HTTP/TCP-зв’язку) як аксіому, а питання обсягу інформації, що передається, ставлять на другий план. А як бути, якщо ваш засіб зв’язку передає дані лише в симплексному режимі з пінгом 18 секунд і швидкістю від 150 байтів за секунду (вам не почулося, саме секунд та байтів)? У такому разі попакетне підтвердження передачі даних створює неприйнятні для роботи затримки на перемиканні прийому-передачі, а для пропускної смуги каналу навіть TCP-заголовки стають зайвими, не кажучи про HTTP.
Готового широковідомого фреймворку, який був би здатний обмінюватися даними як IP, так і не IP (serial) засобами зв’язку зі швидкістю від 150 байтів за секунду (як-от КХ-радіостанція) та адаптувався б під швидкість каналу в кожному випадку, ми не знайшли, тому вирішили писати свій розподілений месенджер і надати іншим розробникам можливість ним користуватися.
Нова розподілена архітектура та три типи інтерфейсів
Система C4 Vision складається з модульного легковісного Java-бекенду, який ми називаємо C4 Node, та трьох типів інтерфейсів для різних потреб: штабний віджетоподібний багатовіконний вебінтерфейс на Angular 7, персональний навігатор на Android і рішення для ембедед-систем (планшети й убудовані в техніку монітори під Windows/Linux) на основі JavaFX. C4 Node написано на Core Java 7 без використання будь-яких ентерпрайз-фреймворків, і він є складовою трьох реалізацій бекенду під кожен з інтерфейсів. У випадку Web його огорнено у WildFly AS, в Android це звичайний Service, що надає доступ інтерфейсним застосунком по AIDL, а в JavaFX це частина монолітного застосунку. Під модульним бекендом треба розуміти, що він має кілька складників, і його можуть розширити сторонні розробники. Основні частини зараз — це месенджер, який відповідає за розповсюдження даних, і модуль обробки тактичних даних, який відповідає за збереження, фільтрацію доступу й підтримання консистентності даних у всій розподіленій системі.
Новий пакет програмних продуктів
Як платформу візуалізації ми використовуємо модернізовану нами тривимірну ГІС NASA WorldWind і входимо до складу її розробників. Додатково ми розробили дуже гнучку ГІС-агностик-бібліотеку візуалізації тактичної інформації на мапі, основану на роботі з базовими типами геометрій стандарту MIP 4.1, яку можна швидко зінтегрувати з будь-якою ГІС (Google Maps, ArcGis, Leaflet тощо) і яка дає змогу створювати й редагувати жестами ключові точки різних типів геометрій (центри кола або еліпса, радіуси, ширину коридору, додавати та видаляти проміжні точки ліній і полігонів), а також накладати на базовий каркас точок додатковий рендеринг об’єктів, який забезпечують різні сторонні бібліотеки, задля отримання зручного механізму візуалізації й редагування будь-яких геопросторових об’єктів.
Ключова фішка всіх інтерфейсів нашого комплексу — можливість показу мапи як доданої реальності поверх будь-якого джерела зображення (відео або фото), яке може видавати телеметрію. Це дає змогу не лише поліпшити сприйняття обставин, але й автоматично дізнаватися координати видимих об’єктів у просторі та рахувати відстані між ними. Для цього ми використовуємо власний пропрієтарний апаратно прискорений підхід до виведення доданої реальності, що вможливлює виводити потрібну кількість об’єктів у кадр. На цій функційності розробляємо нові модулі сполученого спостереження через наземні охоронні камери й роботи з дронами в реальному часі та в записі, а також кожен користувач персонального навігатора може бачити ситуацію навкруги крізь камеру смартфона.
До складу комплексу входить власний відеосервер, який побудовано на технології WebRTC, що дає змогу збирати й ефективно розповсюджувати відеопотоки синхронно з телеметрією з дронів, наземних камер і мобільних пристроїв, не навантажуючи канал кожного джерела кількома під’єднаннями та мінімізуючи затримку між реальним зображенням і даними, що формують віртуальну модель простору, надаючи максимальну точність прив’язки між цими двома просторами.
Приклади використання системи
Сукупність усіх цих рішень дає змогу користувачеві розв’язувати такі питання:
- Визначення координат і класифікація об’єкта, що спостерігається на зображенні з певного джерела, або створення такого об’єкта вручну за даними з інших типів джерел, використовуючи міжнародну класифікацію НАТО MIP 4.1.
- Обмін геопросторовими об’єктами й текстовими повідомленнями між користувачами за гнучкою деревною топологією, враховуючи фільтрацію даних по вертикалі згідно з правами доступу до контекстів, за якими тегують інформацію.
- Зручна орієнтація в просторі під час виконання завдань, зокрема в разі керування наземними й повітряними дронами.
- Експорт отриманих даних до зовнішніх систем.
- Генерація паперових звітів та аналіз історичних подій за допомогою перегляду стану мапи на будь-який минулий момент часу.
- Підтримка ухвалення рішень за допомогою всебічного аналізу ситуації на зручній тривимірній мапі й багато інших можливостей.
Реалізація
Як можна бачити зі статті, технологічний стек проекту змінювався із часом, і раніше над ним працювали чотири розробники у сфері PHP, MySQL, JS Bootstrap та Android.
Нині наш колектив складається з невеликої кількості (до 10) мотивованих ентузіастів і спеціалістів вузьких сфер, як-от:
- Низькорівнева Core Java-робота із сокетами, потоками даних, Java security, JPA й іншими технологіями, що забезпечують зберігання, шифрування інформації та її обмін через розподілену мережу.
- Core Java-обробка тактичних даних, заданих за стандартом XSD-схем, використовуючи XML/XSD, JAXB, XML EXI, Protobuf, JSON, JSON Schema й інші технології серіалізації та обробки даних. Сюди також входить розробка алгоритмів фільтрації й підтримки консистентності даних.
- Enterprise Java-розробка легкого веббекенду на WildFly для штабного інтерфейсу.
- JavaFX-розробка rich-інтерфейсу для embedded-рішень.
- Android-розробка з використанням JetPack, AIDL і підтримкою API 16+.
- Front-end-розробка на Angular 7 багатовіконного мультивіджетового фреймворку штабного інтерфейсу, який складається з мапи, чату, різних джерел зображення й інших віджетів для всебічного аналізу даних.
- Розробка додаткових можливостей ГІС WorldWind під JS, Java й Android, що передбачає роботу з GDAL, GL2ES і WebGL.
- Розробка відеосервера на основі WebRTC з використанням GStreamer, AVLib та OpenCV та інтеграцією з телеметрією у форматі MavLink, ONVIF, MISB ST та іншою.
- Розробка відео-/фотопрогравача з доданою реальністю й можливістю керування джерелом зображення в реальному часі з розмежуванням прав доступу або відтворенням збереженого відео та фото синхронно з телеметрією.
Технічна реалізація
Чому ми вибрали саме Java як платформу розробки? Тому що це дало нам змогу використовувати єдиний код-бейз алгоритмів обробки й обміну даними на бекенді для всіх трьох типів інтерфейсів.
Чому вибрали саме ГІС WorldWind? Тому що на час старту проекту це була єдина опенсорс ГІС, яка підтримувала потрібні нам типи платформ інтерфейсів і була здатна до нарощування функціонала власними силами без комерційних обмежень.
C4 Vision Personal Assistant
Здебільшого нам не доводилося вибирати, бо ми розробляємо продукт за певними стандартами НАТО, які диктують нам правила, а саме: MIP 4.1, MIL-STD-2525C, STANAG 4677, MISB ST та інші.
Як саме ми розв’язуємо проблему залежності від центрального вузла:
- По-перше, ми використовуємо децентралізовану автентифікацію на основі пар асиметричних ключів (як колись було в більшості клієнт-банків), які кожен користувач генерить сам для себе й може поділитися своїм публічним ключем з найближчими кореспондентами або вбудованим механізмом локатора сусідніх вузлів, або через QR-код, або ввівши дані, отримані будь-яким способом вручну. Це дає змогу перенести відповідальність за доступ до системи загалом із центру авторизації на конкретного користувача, який може ділитися доступними йому даними з іншими підлеглими за власним бажанням, як у реальному, не цифровому обміні інформацією.
- По-друге, дані в системі зберігаються розподілено на кожному з вузлів, але не в повному обсязі, а лише в тому, який дозволив вищий вузол. Це зводить нанівець можливість знищити центральне сховище даних, а також технічно не дає змоги зламати систему й запросити більше даних, ніж фактично надає вам ваш верхній вузол.
- По-третє, хоч структура вузлів і деревинна, але топологію в процесі роботи можна гнучко змінити за бажанням користувачів, тобто один вузол може бути в реальному часі підпорядковано іншому вузлу без складного переналаштування. У такому разі будь-який новий вузол верхнього рівня відновлює повноту картини, отримуючи всі частини даних від нижніх вузлів або доступну йому частину від верхнього вузла.
Як ми розв’язуємо питання зі зв’язком:
- Система працює виключно по UDP або serial-протоколу й замість підтвердження кожного відправленого пакета, як у TCP, використовує механізм запита неотриманих пакетів, якщо такі виявляються, згідно зі стандартом STANAG 4677. Так у разі стабільного каналу інформація рухається лише в одному напрямку, а перезапити виникають набагато рідше, ніж за стандартного TCP-підходу.
- У разі використання симплексних радіоканалів, які здебільшого підтримують мультикаст (один говорить, усі інші слухають), застосовуючи той самий стандарт, ми передаємо дані, адресовані кільком одержувачам, усього один раз, ба більше, у разі перезапита пропущених даних відповіді чують також інші отримувачі. У такий спосіб обсяг інформації, що передається, суттєво скорочується.
- Система напівофлайнова й може проводити синхронізацію вузлів з будь-якою періодичністю, не втрачаючи консистентності даних. Це дає змогу працювати в умовах нестабільного зв’язку або коли його немає певний час. Це досягається спеціальним алгоритмом синхронізації й мерджингу даних між вузлами, схожим на принципи Git з певними правилами автоматичного вирішення мердж-конфліктів.
- Основна інформація — це дані про геопросторові об’єкти, у разі зміни яких їхній минулий стан не важливий. Тому система використовує агрегацію даних і підлаштовується під кожний канал. Тобто якщо на найнижчому рівні між користувачами може бути високошвидкісний широкосмуговий зв’язок і там користувачі бачать одне одного з дискретністю в секунду, то наверх до штабу інформація може надаватися раз за хвилину як зліпок ситуації на поточний момент.
Результати й плани
Ми розробляємо наше рішення як B2B-платформу, яку в майбутньому можуть ліцензувати сторонні розробники для розв’язання конкретних прикладних завдань без потреби сушити голову над базовими речами надійного обміну й зберігання даних в умовах нестабільного зв’язку, а також для сучасної презентації ситуаційних обставин на 3Д-мапах з доданою реальністю.
На сьогодні нова реалізація продукту на стадії proof-of-concept, але вже незабаром ми готуємо бета-реліз MVC. Розробку проводимо за кошти приватних інвесторів, зацікавлених у розбудові сильної сучасної української армії, яка має вести бойові дії за мережецентричним принципом.
Ми плануємо впровадити оновлену систему в тестовому режимі в тих підрозділах ЗСУ, НГУ й СБУ, які вже використовують наші попередні продукти: «КомБат 3.6», «КомБат Термінал» та інші. Але коло наших замовників не обмежено Україною.
Ми відкриті до партнерства із розробниками заліза (засоби зв’язку, далекоміри, БПЛА, наземні дрони) й хочемо розширити можливості побудови комплексного рішення якомога більшою кількістю складників.
Ми вже маємо у своєму портфоліо комплексних рішень наземні й повітряні дрони, що виробляють сусідні департаменти та партнери нашої компанії, як-от UGV Zook, UAV Falcon і Leleka 100 й радіостанції Micronet.
Але останніми роками ми відчуваємо неабияку проблему з професійними кадрами, тим паче в нашому вузькому напрямі. Патріотизм людей знижується та збільшується відтік мізків за кордон або на закордонні проекти, попри те, що ми забезпечуємо європейський рівень оплати праці. Тому, якщо ви хочете приєднатися до нашої команди, тут можна знайти наші вакансії.