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

-0.7000 0.1500 -0.3254

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

pose = matchScans(s2,s1,"InitialPose",initGuess);

pose = 1×3

-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