transformScan

Преобразуйте лазерную скан на основе относительного положения

Описание

пример

transScan = transformScan(scan,relPose) преобразует лазерный скан, заданное в scan при помощи заданного относительного положения relPose.

пример

[transRanges,transAngles] = transformScan(ranges,angles,relPose) преобразует лазерный скан, заданное в ranges и angles при помощи заданного относительного положения relPose.

Примеры

свернуть все

Создайте 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)]);

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

Загрузите пару сканов лидара как пару lidarScan объекты. Это два скана одной и той же сцены с изменением относительного положения.

load tb3_scanPair.mat
plot(s1)
hold on
plot(s2)
hold off

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

Относительное положение оценивается с датчика одометрии и предоставляется как переменная, initGuess, как [x y theta].

disp(initGuess)
   -0.7000    0.1500   -0.3254

Используйте сопоставление сканов, чтобы найти относительное положение между двумя лазерными сканами и указать начальное предположение для положения.

pose = matchScans(s2,s1,"InitialPose",initGuess);
disp(pose)
   -0.7213    0.1160   -0.2854

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

s2Transformed = transformScan(s2,pose);
plot(s1)
hold on
plot(s2Transformed)
hold off

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

Входные параметры

свернуть все

Чтения сканов лидара, заданные как lidarScan объект.

Область значений значений от данных скана, заданный как вектор в метрах. Эти значения области значений являются расстояниями от датчика при заданных angles. Вектор должен быть такой же длины, как и соответствующий angles вектор.

Значения углов из данных скана, заданные как вектор в радианах. Эти значения угла являются конкретными углами заданных ranges. Вектор должен быть такой же длины, как и соответствующий ranges вектор.

Относительное положение скана, заданное как [x y theta], где [x y] - перемещение в метрах и theta - вращение в радианах.

Выходные аргументы

свернуть все

Преобразованные чтения сканов лидара, заданные как lidarScan объект.

Диапазонные значения преобразованного скана, возвращенные как вектор в метрах. Эти значения области значений являются расстояниями от датчика при заданных transAngles. Вектор имеет ту же длину, что и соответствующий transAngles вектор.

Угловые значения преобразованного скана, возвращенные как вектор в радианах. Эти значения угла являются конкретными углами заданных transRanges. Вектор имеет ту же длину, что и соответствующий ranges вектор.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2017a