Статья:

ПОЛУЧЕНИЕ ТРЕХМЕРНОГО ПРЕДСТАВЛЕНИЯ ОКРУЖАЮЩЕЙ СРЕДЫ С ПОМОЩЬЮ 2D-ЛИДАРОВ В МОБИЛЬНОЙ РОБОТОТЕХНИКЕ

Журнал: Научный журнал «Студенческий форум» выпуск №21(372)

Рубрика: Технические науки

Выходные данные
Тарасов Д.Д. ПОЛУЧЕНИЕ ТРЕХМЕРНОГО ПРЕДСТАВЛЕНИЯ ОКРУЖАЮЩЕЙ СРЕДЫ С ПОМОЩЬЮ 2D-ЛИДАРОВ В МОБИЛЬНОЙ РОБОТОТЕХНИКЕ // Студенческий форум: электрон. научн. журн. 2026. № 21(372). URL: https://nauchforum.ru/journal/stud/372/187821 (дата обращения: 05.07.2026).
Журнал опубликован
Мне нравится
на печатьскачать .pdfподелиться

ПОЛУЧЕНИЕ ТРЕХМЕРНОГО ПРЕДСТАВЛЕНИЯ ОКРУЖАЮЩЕЙ СРЕДЫ С ПОМОЩЬЮ 2D-ЛИДАРОВ В МОБИЛЬНОЙ РОБОТОТЕХНИКЕ

Тарасов Даниил Денисович
магистрант, Московский государственный технический университет им. Н.Э. Баумана (национальный исследовательский институт), РФ, г. Москва

 

OBTAINING A THREE-DIMENSIONAL REPRESENTATION OF THE ENVIRONMENT USING 2D LIDARS IN MOBILE ROBOTICS

 

Tarasov Daniil Denisovich

Master's Student, Bauman Moscow State Technical University (National Research University), Russia, Moscow

 

Аннотация. В работе рассмотрена задача получения трёхмерного облака точек из данных двумерного лидара, установленного на вращающемся звене многозвенного мобильного робота. Предложен подход, позволяющий использовать недорогой 2D лидар для формирования полноценной трёхмерной картины окружающего пространства за счёт механического вращения сенсора в вертикальной плоскости.

Abstract. This paper addresses the problem of generating a three-dimensional point cloud from a two-dimensional lidar mounted on a rotating link of a multi-link mobile robot. An approach is proposed that enables the use of an inexpensive 2D lidar to produce a complete three-dimensional representation of the surrounding environment through mechanical rotation of the sensor in the vertical plane.

 

Ключевые слова: лидар, облако точек, многозвенный робот, преобразование координат, Python, PCD.

Keywords: lidar, point cloud, multi-link robot, coordinate transformation, Python, PCD.

 

Введение

Современные робототехнические системы требуют точной информации об окружающем пространстве для решения задач навигации, локализации и построения карт. Одним из ключевых сенсоров, обеспечивающих получение данных о геометрии окружающей среды, является лидар (LiDAR — Light Detection and Ranging).

Двумерные лидары широко распространены благодаря относительно низкой стоимости и простоте интеграции. Однако они предоставляют информацию лишь в одной плоскости сканирования, что существенно ограничивает возможности восприятия трёхмерного пространства. Одним из решений данной проблемы является использование механизма вращения лидара в вертикальной плоскости, что позволяет получить полноценное трёхмерное облако точек при использовании относительно недорогого двумерного сенсора в сочетании с уникальным движением мобильного многозвенного робота (ММЗР).

Конструкция этого робота (см. рис. 1) представляет собой две несущие опоры, соединенные кинематической цепью, которая включает в себя три вращательные и одну поступательную степень свободы. Кинематические пары имеют некоторые ограничения по углу поворота и линейному перемещению.

На опорах робота расположены системы генерации вакуума для обеспечения фиксации на опорной поверхности. Так как схваты робота вакуумные, то от опорной поверхности требуется гладкость, ровность и твердость.

 

Рисунок 1. Кинематическая схема ММЗР

 

Уникальная конструкции ММЗР позволяет использовать 2D дальномеры для создания трехмерной картины. Если сканатор закрепить на конструкции центрального звена (см. рис. 2), лидар будет вращаться вокруг стопы, меняя плоскость сканирования. Такой подход позволяет обойтись без дорогих 3D‑лидаров.

 

Рисунок 2. Крепление 2D лидара на корпусе ММЗР

 

Актуальность работы обусловлена необходимостью разработки программного обеспечения для обработки данных подобных систем и преобразования измерений лидара в формат, пригодный для дальнейшего анализа и визуализации.

Цель работы — разработка алгоритмов на языке программирования Python для получения трёхмерного облака точек из данных двумерного вращающегося лидара.

Для достижения поставленной цели необходимо решить следующие задачи:

1) Реализовать алгоритм преобразования данных лидара (дальность, азимутальный и вертикальный углы) в декартовы координаты точек с учётом положения и ориентации робота в пространстве.

2) Записать данные в файл формата PCD

3) Верифицировать корректность написанных алгоритмов

Преобразование данных в координаты точки в абсолютной системе

Данные лидара представлены в текстовом файле следующим образом: первая строка содержит информацию о текущем положении робота в абсолютной системе координат (АСК), вторая строка — количество измерений лидара, а последующие строки представляют собой измерения в формате: <расстояние до точки> <угол поворота лидара> <угол поворота привода>.

 После считывания данных лидара чтобы получить координаты точки А в абсолютной системе координат (АСК) (см. рис. 3), сначала нужно перевести измерения лидара (расстояние d и угол α) в координаты точки относительно O2 (системы лидара) [3]:

Для переноса этих координат в систему отсчета, связанную с осью вращения кинематической пары многозвенного робота, запишем формулу для матрицы перехода  и координат точки , имея для этого необходимые параметры линейного смещения L, h и поворота вокруг оси y угла  :

Таким образом, координаты точки  в системе относительно вращательного звена О1:

Пусть положение робота в пространстве известно, то есть имеются координаты положения вращательного звена относительно АСК O0: xr, yr, zr, ψ, θ, ϕ (вокруг z, вокруг y и вокруг x соответственно). Запишем матрицы поворота:

Таким образом, запишем полную матрицу поворота  и перехода  из системы O1 в O2:

Координаты токи А в АСК:

 

Рисунок 3. Схема для подсчета точки в абсолютной системе координат

 

Для работы с матрицами используется библиотека NumPy. Умножение матриц выполняется с помощью оператора @[1]. Однородные координаты представлены в виде вектора-столбца размером 4×1.

Формирование файла облака точек

Для сохранения полученного облака точек разработана функция, которая записывает координаты точек в файл формата PCD (Point Cloud Data). Данный формат является стандартным для хранения облаков точек и поддерживается большинством программных средств визуализации и обработки трёхмерных данных, включая библиотеку PCL (Point Cloud Library) и программу CloudCompare.

Файл формата PCD состоит из заголовка и блока данных [2]. Заголовок содержит метаинформацию о структуре данных:

VERSION — версия формата (0.7);

FIELDS — перечень полей данных (x, y, z);

SIZE — размер каждого поля в байтах (4 байта для вещественного числа);

TYPE — тип данных (F — floating point);

COUNT — количество элементов в каждом поле (1);

WIDTH — количество точек в облаке;

HEIGHT — высота организованного облака (1 для неорганизованного);

VIEWPOINT — точка наблюдения;

POINTS — общее количество точек;

DATA — формат хранения данных (ascii или binary).

Функция формирует заголовок с использованием f-строки, подставляя актуальное количество точек. Затем в цикле записываются координаты каждой точки с точностью до трёх знаков после запятой.

Верификация корректности написанных алгоритмов

Для того, чтобы проверить правильность написанных математических формул и алгоритмов, их применили к реальным данным лидара. Окружающей средой 2D дальномера во время сканирования была аудитория, в которой было расположено множество различных объектов.

 

Рисунок 4. Результат работы алгоритма получения трехмерного облака точек (произвольный вид)

 

Рисунок 5. Результат работы алгоритма получения трехмерного облака точек (вид сверху)

 

Рисунок 6. Результат работы алгоритма получения трехмерного облака точек (вид сбоку)

 

На визуализированных данных успешно идентифицируются реальные объекты (доска и лабораторные стенды, рис. 4, 5), что свидетельствует о корректности предложенного алгоритмического обеспечения. Вид сбоку (см. Рис. 6) показывает, что плоскости сканирования касаются поверхности воображаемого цилиндра.

Заключение

В ходе выполнения работы была достигнута поставленная цель — разработаны алгоритмы на языке программирования Python для получения трёхмерного облака точек из данных двумерного вращающегося лидара. Корректность работы алгоритмов была верифицирована за счет идентификации на трехмерном изображении объектов, находившихся вокруг лидара во время сканирования.

Разработанное программное обеспечение может быть использовано для обработки данных лидарных систем с вращающимся механизмом сканирования, а также в качестве основы для построения более сложных систем картографирования и навигации мобильных роботов.

Направлениями дальнейшего развития работы могут являться:

  • реализация фильтрации шумов в облаке точек;
  • построение карты занятости (occupancy grid) на основе полученных данных;
  • интеграция с системами планирования траектории движения робота.

 

Список литературы:
1. NumPy Documentation [Электронный ресурс]. — Режим доступа: https://numpy.org/doc/stable/ (дата обращения: 31.05.2026).
2. Point Cloud Library (PCL) [Электронный ресурс] : PCD File Format. — Режим доступа: https://pointclouds.org/documentation/tutorials/pcd_file_format.html (дата обращения: 31.05.2026).
3. Носков, В. П. Математические модели движения и системы технического зрения мобильных робототехнических комплексов / В. П. Носков. – Москва : МГТУ им. Н. Э. Баумана, 2005. – 123 с. – Текст : непосредственный.