lidarScan

Создайте объект для хранения 2D скана лидара

Описание

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

Создание

Описание

пример

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 Toolbox) объект сообщения ROS.

Свойства

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

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

Задайте данные о лидаре как векторы из областей значений и углов. Эти значения включают показания за пределами области значений датчиков.

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')

Создайте lidarScan объект. Укажите диапазоны и углы как векторы.

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

Переведите лазерный скан [x y] смещение (0.5,0.2).

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

Вращайте лазерный скан 20 градусами.

rotateScan = transformScan(refScan,[0,0,deg2rad(20)]);

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

Смотрите также

Введенный в R2019b