exponenta event banner

lidarScan

Создайте объект для хранения 2-го просмотра лидара

Описание

A lidarScan объект содержит данные для одного 2-D лидарного сканирования (обнаружение света и ранжирование). Лидарная развертка - это лазерная развертка для 2-D плоскости с расстояниями (Ranges) измеряется от датчика до препятствий в окружающей среде под определенными углами (Angles). Использовать этот объект лазерного сканирования в качестве входных данных для других алгоритмов робототехники, таких как matchScans, controllerVFH(Панель инструментов навигации), или monteCarloLocalization(Панель инструментов навигации).

Создание

Описание

scan = lidarScan(ranges,angles) создает lidarScan объект из ranges и angles, которые представляют данные, собранные с лидарного датчика. ranges и angles входы являются векторами одинаковой длины и устанавливаются непосредственно в Ranges и Angles свойства.

scan = lidarScan(cart) создает lidarScan с использованием входных декартовых координат в качестве матрицы n-by-2. Cartesian устанавливается непосредственно из этого входного значения.

scan = lidarScan(scanMsg) создает lidarScan объект из LaserScan(Панель инструментов ROS) Объект сообщения ROS.

Свойства

развернуть все

Показания диапазона из лидара, заданного как вектор. Этот вектор имеет ту же длину, что и Anglesи векторные элементы измеряются в метрах.

Типы данных: single | double

Угол отсчетов дальности от лидара, определяемый как вектор. Этот вектор имеет ту же длину, что и Rangesи векторные элементы измеряются в радианах. Углы измеряют против часовой стрелки вокруг положительной оси z.

Типы данных: single | double

Декартовы координаты лидарных показаний, возвращенные в виде [x y] матрица. В координатной рамке лидара положительный x - вперед, а положительный y - влево.

Типы данных: single | double

Число показаний лидара, возвращаемое как скаляр. Этот скаляр также равен длине Ranges и Angles векторы или количество строк в Cartesian.

Типы данных: double

Функции объекта

plotОтображение показаний лазера или лидара
removeInvalidDataУдалить недопустимые данные диапазона и угла

Примеры

свернуть все

Укажите данные лидара как векторы диапазонов и углов. Эти значения включают показания вне диапазона датчиков.

x = linspace(-2,2);
ranges = abs((1.5).*x.^2 + 5);
ranges(45:55) = 3.5;
angles = linspace(-pi/2,pi/2,numel(ranges));

Создайте сканирование лидара, указав диапазоны и углы. Постройте график всех точек сканирования лидара.

scan = lidarScan(ranges,angles);
plot(scan)

Удаление недопустимых точек на основе указанного минимального и максимального диапазона.

minRange = 0.1;
maxRange = 7;
scan2 = removeInvalidData(scan,'RangeLimits',[minRange maxRange]);
hold on
plot(scan2)
legend('All Points','Valid Points')

Figure contains an axes. The axes with title LiDAR Scan contains 2 objects of type line. These objects represent All Points, Valid Points.

Создание эталонного лидарного сканирования с помощью lidarScan. Укажите диапазоны и углы в качестве векторов.

refRanges = 5*ones(1,300);
refAngles = linspace(-pi/2,pi/2,300); 
refScan = lidarScan(refRanges,refAngles);

Использование transformScan (Robotics System Toolbox), создание второго лидарного сканирования на x,y смещение (0.5,0.2).

currScan = transformScan(refScan,[0.5 0.2 0]);

Сопоставьте эталонное сканирование и второе сканирование, чтобы оценить разницу между ними.

pose = matchScans(currScan,refScan);

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

currScan2 = transformScan(currScan,pose);
subplot(2,1,1);
hold on
plot(currScan)
plot(refScan)
title('Original Scans')
hold off
subplot(2,1,2);
hold on
plot(currScan2)
plot(refScan)
title('Aligned Scans')
xlim([0 5])
hold off

Figure contains 2 axes. Axes 1 with title Original Scans contains 2 objects of type line. Axes 2 with title Aligned Scans contains 2 objects of type line.

Расширенные возможности

.

См. также

Представлен в R2020b