В настоящее время всё большее применение находят автономные
робототехнические системы, используемые для выполнения различных
задач на местности. При разработке такого типа устройств значительное внимание уделяется задаче локализации (определения положения
робота в пространстве). Популярным методом решения данной задачи
является SLAM (simultaneous localization and mapping) [19] — одновременная локализация и построение карты. Обычно SLAM-системы
состоят из двух компонентов: фронтенда и бэкенда. Первый включает
в себя распознавание ориентиров на кадрах (детекция) и их сопоставление на разных снимках (ассоциация), после чего второй компонент
обрабатывает полученные данные для построения карты местности и
локализации на ней робототехнического устройства.
Качество работы алгоритмов детекции и ассоциации фронтенда во
многом определяет конечный результат работы всего SLAM алгоритма
и, в связи с этим, часто возникает потребность в их отладке. На данный
момент основным методом для выявления ошибок в рассматриваемых
системах является визуализация ориентиров и ассоциаций в реальном
времени.
Существуют SLAM-фреймворки, которые предоставляют такую возможность, но, как правило, визуализация в них является неотделимой
от остальной реализации частью [3, 16], что создаёт трудности при отладке отдельных компонентов фронтенда. С целью решения данной
проблемы в Лаборатории мобильной робототехники [15] ведётся разработка приложения SOLVE, интерфейс которого изображён на рисунке 1,
предназначенного для визуализации ориентиров в SLAM-алгоритмах.
Основным компонентом инструмента является сцена, отвечающая за
отображение кадров с нанесёнными на них ориентирами. В качестве
технологического стека используется язык программирования Kotlin,
фреймворк TornadoFX и библиотека JavaFX. Поскольку наборы данных, использующиеся в рассматриваемой области, могут состоять из
сотен или даже тысяч кадров, каждый из которых может содержать
4несколько слоёв с ориентирами, к производительности компонента сцены предъявляются повышенные требования.
В ходе выполнения работы были выполнены следующие задачи:
1. Выполнен обзор разрабатываемого приложения и используемых
в нем технологий.
2. Выполнен обзор решений для рендеринга в рамках JavaFXприложения.
3. Разработана система для отрисовки кадров, ориентиров и ассоциаций с применением выбранного решения.
4. Разработана система для управления сценой в рамках новой реализации.
5. Выполнен обзор методов измерения производительности сцены,
проведено сравнение реализаций.
6. Проведена апробация приложения с оптимизированной сценой.
Ссылка на репозиторий GitHub с исходным кодом разрабатываемого
инструмента: github.com/prime-slam/SOLVE.
Ссылка на аккаунт, с которого велась разработка: github.com/mists.