exponenta event banner

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.

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

свернуть все

Показания сканирования Lidar, указанные как lidarScan объект.

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

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

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

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

свернуть все

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

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

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2017a