СИСТЕМНЫЙ АНАЛИЗ, УПРАВЛЕНИЕ И ОБРАБОТКА ИНФОРМАЦИИ, СТАТИСТИКА
ВЕСТНИК ТОГУ. 2024. № 3 (74)
УДК 004.352
DOI https://doi.org/10.38161/1996-3440-2024-3-57-64
А. Р. Голомедов, А. В. Зинкевич
РАЗРАБОТКА СИСТЕМЫ ДЛЯ ЗАДАЧИ 3Б-РЕКОНСТРУКЦИИ РЕАЛЬНЫХ ОБЪЕКТОВ НА БАЗЕ 2Б-ЛИДАРА
Зинкевич А. В. - канд. техн. наук, доцент высшей школы кибернетики и цифровых технологий, (ТОГУ), e-mail: [email protected]; Голомедов А. Р. - магистрант высшей школы кибернетики и цифровых технологий, (ТОГУ), e-mail: [email protected]
В статье представлена модернизация системы двумерного лидарного сканирования для получения трехмерного облака точек. Предложенная система состоит из управляемой механической платформы, на которой размещается лидар, приводимой в движение шаговым мотором. Определение текущего положения платформы выполняется с помощью инерциального измерительного блока. Для решения задачи управления всеми узлами системы была использована свободно распространяемая программная платформа Robot Operating System (ROS), в частности, пакеты urg_node для взаимодействия с ли-даром, rosserial для взаимодействия с Arduino UNO, RViz для визуализации. Комплекс программ для управления узлами системы написан на языках программирования С++ и Python. В статье приведены результаты эксперимента по использованию предложенной системы и получено облако точек. Разработанная система создает уровень абстракции между аппаратным и программным обеспечением, что позволяет исследователям сконцентрироваться на решении задачи 3d-реконструкции реальных объектов.
Ключевые слова: реверсивный инжиниринг, Sd-реконструкция, лидар, ROS, облако точек.
Введение
За последние годы 3d-реконструкция реальных объектов, основанная на получении информации от различных сенсоров и последующей обработки облака точек, приобрела популярность среди исследователей в таких областях, как: автоматическая навигация, робототехнические системы, картографирование, строительство и других. В общем виде облако точек - это набор данных, объединяющий геометрические характеристики (координаты каждой точки из облака) и физические характеристики для каждой точки. Информацию для получения облака точек
© Голомедов А. Р., Зинкевич А. В., 2024
Работа выполнена при финансовой поддержке ФГОБУ ВО «ТОГУ» в рамках НИР № 3.23-ТОГУ «Разработка и совершенствование методов комплексной обработки данных при построении моделей «Цифровой двойник»»
ВЕСТНИК ТОГУ. 2024. № 3 (74)
часто получают с помощью методов фотограмметрии или с помощью лидар-ска-нирования [1]. По сравнению с информацией получаемой от лидара, фотокамеры предоставляют более полную информацию о текстуре поверхности объектов. Однако отсутствие точной информации о глубине приводит к несоответствию между результирующими элементами в итоговой Sd-модели.
В большинстве случаев при построении плотного облака точек используют лидар. После получения сканов, представляющих информацию о глубине (дальности), необходимо обеспечить высокоточную сшивку фрагментов сканирования -локальных облаков точек, получаемых при измерении с фиксированными положением и ориентаций измерительной системы [2-3].
Сегодня на рынке существуют различные многомерные лазерные сканеры с различными диапазонами измерения и угловой сканирующей способностью. Среди них наиболее популярными для картографических приложений являются лазерные 2d-сканеры от компаний Hokuyo и SICK. Канадская компания представила систему сканирующей тележки, имеющую лазерные сканеры и камеры [4]. Как правило, колесные сканирующие системы сталкиваются с проблемами на неровной поверхности, такими как склон или лестница, и могут неточно сканировать окружающую среду. Поэтому многие исследовательские работы объединяют несколько лазерных сканеров с дополнительными датчиками точного счисления на ранцевых системах для создания 2d/3d моделей [5]. Типичные внутренние картографические системы можно разделить на три основных класса: ручные, тележки и ранцевые системы.
Используемый в работе лидар Hokuyo URG-04LX-UG01 представляет собой бюджетный 2d-лазерный дальномер, относящийся к категории датчиков непрерывного действия с амплитудной модуляцией. Для получения дополнительной третьей координаты авторами была разработана и протестирована система, включающая механическую платформу контролируемого поворота, а также программное обеспечение для формирования итогового Sd-облака точек.
Постановка задачи
Технические характеристики используемого в работе лидара позволяют измерять расстояние от 20 до 5000 мм с частотой 10 Гц. По умолчанию количество данных, возвращаемых Hokuyo URG-04LX за один полный оборот, составляет 682 отсчета (с 44 по 725). Двумерная проекция этих точек представлена в полярных координат (r, в), поэтому предварительно необходимо преобразовать их в двумерные декартовы координаты (x,y), как показано на рис. 1.
Преобразование необработанных данных, полученных с датчика, в координаты XY можно рассчитать по формулам:
Xt = r • cos(0), Y = r • sin(0),
где Xi, Yi - декартовы координаты точки; в - горизонтальный угол; r - радиальное расстояние, полученное от датчика.
Рис. 1. Преобразование полярных координат в декартовы координаты
Значение текущего угла 9 зависит от номера отсчета п и может быть вычислено с учетом известного углового разрешения лидара по выражению:
в = п • 0,360
В результате лидар, с частотой 10 Гц, формирует и передает две матрицы X и У, содержащих по 682 отсчета значений измеренных расстояний.
Для построения З^проекции помимо осей X и У необходима ось ^ Для получения значения Z необходимо получить информацию о глубине сканирования для каждого угла измерения в требуемом диапазоне. На рис. 2 показаны сферические полярные координаты, используемые для построения З^проек-ции.
х
Рис. 2. Преобразование полярных сферических координат в З^декартовы координаты
Указанный на рис. 2 угол ф может быть получен в результате отклонения лидара по оси Z, что может быть зафиксировано с помощью сенсора, позволяющего определять свое положение в пространстве. Полученные значения 3d-координат можно выразить следующим образом:
Xi = r • cos(0) • sin(^) , Y = r • sin(#) • sin(^) , Z = r • sin(#) • cos(^) (1)
Таким образом, для определения текущего положения лидара потребуется дополнительно закрепить на нем инерциальный измерительный блок (IMU).
Аппаратно-механическая часть системы
Формировать отклонение лидара будет механическая платформа, приводимая в движение шаговым мотором Nema 17. Для управления шаговым мотором
ВЕСТНИК ТОГУ. 2024. № 3 (74)
будет использован драйвер двигателя DRV8825. Управлять драйвером двигателя и получать данные от модуля IMU MPU-6050, связывая элементы системы с компьютером, будет плата Arduino UNO. Итоговая схема взаимодействия устройств системы приведена на рис. 3.
Рис. 3. Схема взаимодействия устройств системы
IMU сенсор - это устройство, которое измеряет скорость, ориентацию и гравитационные силы, используя комбинацию данных акселерометров, гироскопов и магнитометров. В работе планируется использовать необработанные данные акселерометра и гироскопа. Акселерометр является 3-осевым и измеряет ускорение вдоль каждой из осей х, у и г в локальной системе координат 1Ми, а 3-осевой гироскоп измеряет угловые скорости, связанные с каждой осью по отношению к глобальной системе координат. Основные характеристики используемого IMU MPU6050 представлены в табл. 1.
Таблица 1
Характеристики IMU MPU6050_
Характеристика Параметр
Акселерометр диапазон измерений ± 2, ± 4, ± 8, ± 16 g
Гироскоп диапазон измерений ± 250, ± 500, ± 1000, ± 2000 градусов/с
Частота выборки до 1 кГц
Разрядность данных 16 бит
Интерфейс I2C
Габариты 20 х 16 х 3 мм
Напряжение питания 3,5 - 6 В
Разрабатываемая система предусматривает непрерывное вращение лидара с 1МИ сенсором и важно при разработке решить проблему перекручивания проводов. Одним из решений на этапе проектирования является применение коллекторного кольца скольжения SRC-22-08A. Присоединение узлов системы напрямую к кольцу изначально невозможно ввиду конструктивных особенностей устройства, поэтому будет разработано специальное крепления, которое будет выполнять функцию фиксирующей конструкции и механизма вращения.
Источником вращательного движения механизма выступает шаговый мотор, момент вращения с которого передается на коллекторное кольцо. Само вращение механизма будет осуществляться посредством зубчатой передачи. Для обеспечения плавности движения устройства был подобран подходящий размер зубчатого
колеса и количество зубьев. Для этого была использована формула расчета межосевого расстояния:
А = 0,5 • т • + г2),
где А - межосевое расстояние в миллиметрах; т - модуль; 21, 22 - число зубьев шестерни.
С учетом особенностей проектируемого устройства наиболее подходящим вариантом для плавной работы механизма является выбор следующих исходных данных: 21 = 22 = 36; т = 1,25. Таким образом, межосевое расстояние между двумя зубчатыми колесами составит 45 мм. В качестве программного обеспечения для проектирования использовался «Компас 3D». На рис. 4 представлены З^модель платформы и результат печати модели на 3 Спринтере [6].
а) б)
Рис. 4. Подготовленная Sd-модель (а) и результат печати на 3d-принтере (б) механической платформы
Программная часть системы
За основу системы сбора данных с Arduino, IMU и лидара, а также визуализацию полученного облака точек, выбрана операционная система для роботов ROS (Robot Operating System). ROS основан на модульной архитектуре, где программное обеспечение организуется в виде набора узлов. Узлы представляют собой независимые процессы, выполняющие конкретные задачи. Обмен данными между узлами ROS основан на модели публикации и подписки. Эта модель позволяет узлам обмениваться данными через топики. Узлы, выполняющие различные функции в системе, могут публиковать данные на определенные топики, а другие узлы могут подписываться на эти топики для получения и использования этих данных. На рис. 5 представлен процесс взаимодействия узлов системы с ROS.
Узел urg_node является ROS-пакетом, который включает программный драйвер для работы с URG-04LX-UG01. Этот пакет позволяет взаимодействовать с ли-даром, получая данные о расстояниях до объектов и публикуя их в формате, совместимом с ROS. Аналогичным является пакет rosserial, предназначенный для работы с Arduino и необходимый для чтения данных акселерометра и гироскопа с модуля IMU, а также для управления шаговым двигателем.
Рис. 5. Процесс взаимодействия узлов системы с ROS
Данные сенсора IMU, в частности датчика ускорения, надежны только в долгосрочной перспективе, и наиболее подходящим фильтром для минимизации шума является фильтр нижних частот. Гироскоп измеряет угловую скорость и меньше подвержен влиянию внешних сил, однако дрейф всегда будет давать результат, отличный от нуля. Одним из способов повышения точности системы является, например, комплементарный фильтр, который использует данные обоих датчиков, каждый из которых позволяет рассчитать углы наклона относительно поверхности земли [7]. Работу комплементарного фильтра можно записать следующим выражением:
a(t) = (1 - K) • (a(t-1) + gx • dt)+K • acc, где a(t) - искомый угол наклона, учитывающий показания акселерометра; a(t-1) - угол в предыдущий момент времени; gx - скорость вращения вокруг оси X; dt - время, которое прошло с момента предыдущего вычисления угла a; acc -значение угла наклона, полученное при помощи акселерометра; K - коэффициент комплементарного фильтра.
В результате, после получения в ROS данных акселерометра и гироскопа с модуля IMU, данные проходят комплементарный фильтр, преобразуются в формат sensor_msgs/IMU и публикуются в топик /imu/data. Этот топик служит источником данных об ориентации устройства для других узлов системы. Параллельно ROS принимает данные с лидара через узел urg_node. Данные публикуются в топик /scan, предоставляя информацию о расстояниях до объектов в окружении устройства.
Следующим шагом является преобразование данных в облако точек Point-Cloud. Это сделано через узел подписчика, который собирает данные из топиков /imu/data и /scan и вычисляет значения Sd-координат точек согласно (1). Облако точек представляет собой трехмерную модель пространства, собранную на основе данных о расстояниях и ориентации, которые публикуются в топик /cloud. Комплекс программ для управления узлами системы написан на языках программирования С++ (для Arduino) и Python (для ROS).
Последний шаг включает использование инструмента визуализации RViz, который отображает облако точек из топика /cloud.
ВЕСТНИК ТОГУ. 2024. № 3 (74)
Результаты работы
В процессе работы прототип разработанной системы для 3 ^реконструкции окружающих объектов свободно удерживался в руке. Скорость вращения мотора была задана аналогично частоте получения сканов с лидара и составила 10 Гц. На рис. 6 приведены прототип системы и результат сканирования.
а) б)
Рис. 6. Прототип системы З^сканирования (а) и результат сканирования помещения (б)
Следует отметить, что без использования алгоритмов позиционирования и картографирования получить облако точек всего помещения не представляется возможным. При этом для статично расположенной системы точность сканирования остается высокой, что позволяет признать полученный результат удовлетворительным.
Заключение
Разработанная система создает уровень абстракции между аппаратным и программным обеспечением, что позволяет исследователям сконцентриро-ваться на решении задачи 3d-реконструкции реальных объектов. Основная задача заключалась в создании системы, способной интегрировать различные сенсоры и программное обеспечение для получения трёхмерных моделей объектов и местности.
Разрабатываемая система в первую очередь рассматривается авторами как инструмент для З^реконструкции объектов в технологии BIM (Building Information Model), в частности для объектов, которые уже находятся в эксплуатации, но не имеют информационной и статичной З^модели.
На следующем этапе авторы планируют разработку методов выделения и классификации элементов сцены, получаемых в результате З^реконструкции объектов. Предполагается, что реконструкция поверхности неорганизованных облаков точек будет иметь особенности архитектурных форм, что позволит сегментировать и классифицировать находящиеся объекты.
Библиографические ссылки
1. Зинкевич А. В. Разработка системы обмеров помещений для задачи уточнения данных BIM-модели / В.И. Голиков, А.В. Зинкевич // Вестник ТОГУ. - 2023. - № 3 (70). - С. 81-88.
2. Xue, F., Lu, W., Chen, Z., & Webster, C. J. From LiDAR point cloud towards digital
ВЕСТНИК ТОГУ. 2024. № 3 (74)
twin city: Clustering city objects based on Gestalt principles. ISPRS Journal of Photogramme-try and Remote Sensing, 167, 418-431. Doi: 10.1016/j.isprsjprs.2020.07.020.
3. Sharafutdinova, Anzhelika & Bryn, Michael. (2021). The experience in using laser scanning and building information modeling for engineering data management during the life cycle of an industrial object. Vestnik SSUGT (Siberian State University of Geosystems and Technologies). 26. 57-67. 10.33764/2411-1759-2021-26-1-57-67.
4. Park, Joon Kyu & Jung, Kap-Yong. (2018). Construction of Indoor Spatial Information using Indoor Mobile Mapping System. International Journal of Control and Automation. 11. 57-66. 10.14257/ijca.2018.11.9.06.
5. Jafri, S. R. un N. ., Rehman, Y., Faraz, S. M., Amjad, H., Sultan, M., & Rashid, S. J. (2021). Development of Georeferenced 3D Point Cloud in GPS Denied Environments Using Backpack Laser Scanning System. Elektronika Ir Elektrotechnika, 27(6), 25-34. https://doi.org/10.5755/j02.eie.29063.
6. Глухов В. И. К вопросу повышения прочности и точности геометрических характеристик зубчатых колес, изготовленных посредством 3D-печати / В. И. Глухов, Л. Г. Варепо, И. В. Нагорнова, Ф. А. Доронин // Известия Тульского государственного университета. Технические науки. - 2019. - № 6. - С. 322-331.
7. Щагин А. В. Комплементарный фильтр для оценки угла с использованием микроэлектромеханической системы гироскопа и акселерометра / Н. Зо Мьо, А. В. Щагин, Т. Ле Винь, Л. У. Хтин // Инженерный вестник Дона. - 2020. - № 3(63).
Title: Development of a System for 3D Reconstruction of Real Objects Based on 2D Lidar
Authors' affiliation:
Golomedov A. R. - Pacific National University, Khabarovsk, Russian Federation Zinkevich A. V. - Pacific National University, Khabarovsk, Russian Federation
Abstract: In the article, the authors present the modernization of the two-dimensional lidar scanning system for obtaining a three-dimensional point cloud. The proposed system consists of a controlled mechanical platform on which the lidar is placed, driven by a stepper motor. The current position of the platform is determined using an inertial measurement unit. To solve the problem of controlling all system nodes, the freely distributed Robot Operating System (ROS) software platform was used, in particular, the urg_node packages for interacting with the lidar, rosserial for interacting with Arduino UNO, RViz for visualization. The software package to control the system nodes is written in the C++ and Python programming languages. The article presents the results of an experiment on the use of the proposed system and a point cloud has been obtained. The developed system creates a level of abstraction between hardware and software, which allows researchers to concentrate on solving the problem of 3D reconstruction of real objects.
Keywords: reverse engineering, 3d reconstruction, lidar, ROS, point cloud.