lidarScan

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

Описание

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

Создание

Описание

пример

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

scan = lidarScan(cart) создает lidarScan объект, использующий входные Декартовы координаты как матрица n -by-2. The 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)

Figure contains an axes. The axes with title LiDAR Scan contains an object of type line.

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

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

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

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

Поверните лазерный скан на 20 степени.

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

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

.

См. также

Введенный в R2019b