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

Относительное положение оценивается от датчика одометрии и обеспечивается как переменная, 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

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

свернуть все

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

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

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

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

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

свернуть все

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

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

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

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

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

Введенный в R2017a