Упрощение разработки визуальных приложений SLAM
Одновременная локализация и отображение (SLAM) описывает процесс, с помощью которого устройство, такое как робот, использует данные датчиков для построения картины окружающей среды и одновременно определяет свое положение в этой среде. Существует много разных способов реализации SLAM, как с точки зрения развернутых программных алгоритмов, так и с точки зрения используемых датчиков, которые могут включать камеры, сонар, радар, LiDAR и базовые данные о местоположении, с использованием инерциального измерительного блока (IMU).
Доступность недорогих и небольших камер обусловила популярность систем Monocular Visual SLAM, в которых для определения местоположения и картографирования используется одна стандартная камера. Такие системы визуального SLAM можно найти в широком спектре роботов, включая марсоходы и посадочные аппараты. , полевые роботы в сельском хозяйстве, дроны и, возможно, автономные транспортные средства. Системы Visual SLAM также предлагают преимущества там, где GPS недоступен, например, в помещениях или в больших городах, где препятствия со стороны зданий снижают точность GPS.
В этой статье описывается базовый процесс визуального SLAM, охватывающий модули и алгоритмы, участвующие в распознавании и отслеживании объектов, а также исправлении ошибок. Обсуждаются преимущества передачи вычислений SLAM и функциональности выделенным DSP, а комплект разработчика CEVA-SLAM SDK используется в качестве иллюстрации преимуществ, которые можно получить, следуя этому маршруту разработки.
Прямое и функциональное SLAM
Существует множество различных подходов к реализации визуального SLAM, но все они используют один и тот же общий метод, отслеживая заданные точки через последовательные кадры камеры для триангуляции их трехмерного положения, одновременно используя эту информацию для приблизительного определения положения камеры. Параллельно системы SLAM постоянно используют сложные алгоритмы, чтобы минимизировать разницу между прогнозируемыми и фактическими точками - ошибку перепроецирования.
Системы визуального SLAM можно разделить на прямые или функциональные, в зависимости от того, как они используют информацию из полученного изображения. Системы Direct SLAM сравнивают целые изображения друг с другом, предоставляя обширную информацию об окружающей среде, позволяя создавать более подробную карту, но за счет усилий и скорости обработки. В этой статье основное внимание уделяется основанным на функциях методам SLAM, которые ищут на изображении определенные функции, такие как углы и «капли», и основывают оценку местоположения и окружающей среды только на этих функциях. Хотя методы SLAM, основанные на функциях, отбрасывают значительный объем ценной информации из изображения, компромисс - это упрощенный процесс, который проще в вычислительном отношении реализовать.
Рис. 1. Прямое и функциональное SLAM. (Источник:https://vision.in.tum.de/research/vslam/lsdslam)
Визуальный процесс SLAM
Основными шагами в основанном на признаках SLAM являются извлечение набора разреженных признаков из входных изображений, сопоставление признаков, полученных из разных положений камеры, и решение проблемы SLAM путем минимизации ошибки перепроецирования признаков (разницы между отслеживаемым местоположением точки и где ожидается оценка положения камеры по всем точкам).
Эти шаги выполняются с использованием описанного ниже набора строительных блоков, которые являются общими для всех функционально-ориентированных реализаций SLAM. Визуальный SLAM - это развивающаяся область, вызывающая значительное количество исследований, и для каждого модуля были разработаны и предложены различные алгоритмы, каждый из которых имеет свои плюсы и минусы, в зависимости от конкретной природы реализации SLAM. В приведенном ниже описании упоминается подмножество текущих, наиболее популярных алгоритмов.
Извлечение признаков (рисунок 2) - это процесс, который эффективно представляет полезную информацию в изображении, такую как углы, края, капли и более сложные объекты, такие как дверные проемы и окна, в виде компактного вектора признаков. Популярные алгоритмы извлечения функций включают в себя «Различие гаусса» (DoG) и «Тестирование ускоренного сегмента» (FAST9), метод обнаружения углов, который благодаря своей вычислительной эффективности хорошо подходит для обработки видео в реальном времени.
Рисунок 2:Извлечение функции SLAM. (Источник:https://medium.com/towards-artificial-intelligence/orient-fast-and-rotated-brief-orb-1da5b2840768)
В описании функции область вокруг каждой извлеченной функции преобразуется в компактный дескриптор, который можно сопоставить с другими дескрипторами. Особенности могут быть описаны, например, по их внешнему виду или по интенсивности пикселей в участке вокруг характерной точки. ORB и FREAK - примеры популярных алгоритмов дескрипторов функций.
При сопоставлении функций извлеченные функции (дескрипторы) сопоставляются по нескольким кадрам. Сопоставление элементов двух изображений осуществляется путем сравнения всех элементов первого изображения со всеми элементами второго изображения. Функция расстояния Хэмминга обычно используется при сопоставлении функций, поскольку ее можно эффективно выполнять на аппаратном уровне с помощью функций XoR и count-bits для наборов битов данных, таких как векторы. Расстояние Хэмминга показывает, сколько битов в двух векторах различаются. Это означает, что чем ниже оценка, тем ближе соответствие.
Замыкание цикла является заключительным этапом в процессе SLAM и обеспечивает согласованное решение SLAM, особенно когда операции локализации и отображения выполняются в течение длительного периода времени. Замыкание цикла наблюдает за той же сценой по несмежным кадрам и добавляет ограничение между ними, чтобы уменьшить накопленный дрейф в оценке позы. Как и в случае с другими модулями визуального SLAM, для замыкания цикла было разработано множество алгоритмов, наиболее популярными из которых являются настройка пакетов, фильтрация Калмана и фильтрация частиц.
Алгоритмы VSLAM являются активной областью исследований, и вышеперечисленное является примерами растущего числа методов, появившихся в последние годы. Функциональные методы SLAM предпочтительнее для встроенных решений, поскольку они обеспечивают более высокую скорость обработки и более эффективно используют полосу пропускания памяти. Кроме того, решения на основе функций демонстрируют более высокий уровень надежности в различных условиях, включая быстрое изменение яркости, низкий уровень освещенности, быстрые движения камеры и окклюзию.
Выбор конкретного алгоритма определяется характеристиками конкретного приложения, включая типы карт, типы датчиков, требуемую степень точности и многое другое. Многие системы SLAM включают комбинацию алгоритмов, которые лучше всего подходят для самого широкого диапазона сценариев.
Проблемы с внедрением SLAM
Обработка Visual SLAM требует чрезвычайно больших вычислительных ресурсов, что создает большие нагрузки на традиционные реализации на базе ЦП, что приводит к чрезмерному энергопотреблению и низкой частоте кадров, что, как следствие, снижает точность и время автономной работы. Разработчикам новых приложений SLAM требуются решения, предлагающие более высокий уровень интеграции и более низкое энергопотребление. Они все чаще используют в своих разработках специализированные блоки обработки изображений (VPU). VPU - это тип микропроцессора с архитектурой, разработанной специально для ускорения задач машинного зрения, таких как SLAM, и который может использоваться для разгрузки обработки машинного зрения с центрального процессора приложения. VPU, такие как CEVA CEVA-XM6, рисунок 3, включают в себя такие функции, как низкое энергопотребление, мощные ALU, мощные возможности MAC, доступ к памяти с высокой пропускной способностью и специальные инструкции технического зрения. Устройства также будут поддерживать мощные возможности операций с плавающей запятой, необходимые приложениям для обработки изображений.
Рис. 3. Блок обработки технического зрения CEVA XM6. (Источник:CEVA)
Однако даже с помощью VPU разработчик визуального SLAM все еще должен преодолеть несколько проблем, поскольку создание эффективного кода для различных модулей SLAM - нетривиальная задача, а также может быть сложно связать VPU с основным процессором.
Создание эффективного кода имеет решающее значение для встраиваемых приложений, где необходимо оптимизировать скорость выполнения и энергопотребление. Кодирование визуальных модулей SLAM - сложная задача, потенциально требующая извлечения, хранения и обработки больших объемов данных. Например, при сопоставлении признаков дескрипторы хранятся в памяти в виде 128-битных векторов, и для сопоставления признаков в последовательных кадрах обычно нужно сравнивать 200 объектов с 2000 кандидатами, что приводит к 400 000 операций сопоставления. Операция сопоставления, очевидно, требует большого объема памяти, но также там, где размер выборочных данных невелик, высокие накладные расходы на выборку и форматирование данных могут поставить под угрозу эффективность закодированного алгоритма.
Регулировка пакетов - это еще один алгоритм, который включает сложную линейную алгебру, включающую манипулирование большими матрицами. Существуют различные методы оптимизации кодирования для этих и других модулей VSLAM, но реализация этих методов требует высокого уровня специальных знаний в области кодирования.
Управление памятью - еще одна проблема при обработке изображений. Данные, захваченные из изображения, обычно загружаются в последовательные ячейки памяти, и работа со случайными участками в изображении означает работу с данными, которые не хранятся в последовательных ячейках памяти. Программные процедуры, которые выполняют сопоставление функций, должны извлекать дескрипторы из непоследовательных ячеек памяти, что еще больше увеличивает накладные расходы на настройку.
Инструменты разработки VSLAM
Учитывая, что скорость вывода на рынок критически важна в сегодняшней среде, разработчику не всегда целесообразно тратить время на приобретение навыков и знаний, необходимых для реализации эффективного кода обработки изображений. К счастью, существует ряд инструментов, облегчающих ускорение рентабельных приложений SLAM; Доступны комплекты для разработки приложений, которые обеспечивают комбинацию программных библиотек для конкретного видения, оптимизированного оборудования и инструментов интеграции, что позволяет разработчику легко переложить задачи, связанные с видением, с ЦП на видеопроцессор.
Пакет SDK CEVA SLAM, рис. 4, является ведущим примером такого набора инструментов для разработки приложений.
Рисунок 4. SDK CEVA SLAM. (Источник:CEVA)
CEVA SLAM SDK, основанный на аппаратном обеспечении процессора CEVA XM6 DSP и CEVA NeuPro AI, обеспечивает эффективную интеграцию реализаций SLAM во встроенные системы с низким энергопотреблением. SDK включает ряд строительных блоков, включая библиотеки обработки изображений, обеспечивающие эффективный код для обнаружения и сопоставления функций, а также настройки пакетов. Он также обеспечивает поддержку линейной алгебры, решения линейных уравнений, быстрого решения разреженных уравнений и манипуляций с матрицами.
Аппаратное обеспечение CEVA XM6 оптимизировано для обработки изображений с инновационными функциями, такими как инструкция параллельной загрузки, которая решает проблему непоследовательного доступа к памяти, а также уникальная специализированная инструкция для выполнения вычисления расстояния Хэмминга. SDK также включает подробный интерфейс ЦП, позволяющий разработчику легко интегрировать функции обработки изображений с ЦП основного приложения.
В качестве иллюстрации производительности SDK как инструмента разработки, эталонная реализация полного модуля отслеживания SLAM, работающего со скоростью 60 кадров в секунду, показала потребляемую мощность всего 86 мВт.
Заключение
Системы Visual SLAM набирают популярность в широком спектре приложений, таких как полевые сельскохозяйственные роботы и дроны. Существует ряд альтернативных методов реализации визуального SLAM, но с увеличением числа внедрений во встроенных приложениях эффективность кодирования и низкое энергопотребление становятся критическими факторами.
Несмотря на то, что разработчики часто используют VPU для разгрузки ресурсоемких задач обработки изображений с главного процессора, остаются серьезные проблемы для создания эффективного кода, а также для управления интерфейсом между VPU и CPU.
Со временем выхода на рынок ключевой движущей силы разработчики могут ускорить разработку продукта, воспользовавшись возможностями, встроенными в специальные инструменты разработки SLAM, такие как CEVA SLAM SDK.
Встроенный
- Роль экструзии в приложениях для 3D-печати
- Приложения искусственного интеллекта в глобальной цепочке поставок
- Все применения фталоцианиновых пигментов
- Все применения основных красителей
- Все применения синего пигмента
- Развитие современных пластмасс
- Как выбрать контроллер
- Применение промышленных вибраторов
- Индустрия 4.0:разработка уникальной кибербезопасности
- Влияние визуального менеджмента на отрасль