show

Стройте графики сканов и положения роботов

Описание

пример

show(slamObj) строит графики всех сканов, добавленных к input lidarSLAM объект, наложенный на лидар положения в его базовых графиках положения.

show(slamObj,Name,Value) задает опции используя Name,Value аргументы в виде пар. Для примера, "Poses","off" отключает отображение базового графика положения в slamObj.

axes = show(___) возвращает указатель на оси, с которым лидаром данные SLAM построены с использованием любого из предыдущих синтаксисов.

Примеры

свернуть все

Использование lidarSLAM объект для итерационного добавления и сравнения сканов лидара и построения оптимизированного графика положения траектории робота. Чтобы получить карту заполнения из связанных положений и сканов, используйте buildMap функция.

Загрузка данных и настройка алгоритма SLAM

Загрузка массива ячеек lidarScan объекты. Сканы лидара были собраны в парковочном гараже на роботе Husky ® от ClearPath Robotics ®. Обычно сканы лидара выполняются с высокой частотой, и каждое сканирование не требуется для SLAM. Поэтому понижайте выборку сканов путем выбора только каждого 40-ого скана.

load garage_fl1_southend.mat scans
scans = scans(1:40:end);

Чтобы настроить алгоритм SLAM, задайте область значений лидара, разрешение карты, порог замыкания цикла и радиус поиска. Настройте эти параметры для вашего конкретного робота и окружения. Создайте lidarSLAM объект с этими параметрами.

maxRange = 19.2; % meters
resolution = 10; % cells per meter

slamObj = lidarSLAM(resolution,maxRange);
slamObj.LoopClosureThreshold = 360;
slamObj.LoopClosureSearchRadius = 8;

Итерационно добавляйте сканы

Использование for цикл, добавьте сканы к объекту SLAM. Объект использует сопоставление сканов, чтобы сравнить каждый добавленный скан к ранее добавленным таковым. Чтобы улучшить карту, объект оптимизирует график положения каждый раз, когда он обнаруживает закрытие цикла. Каждые 10 сканирований отображают сохраненные положения и сканы.

for i = 1:numel(scans)

    addScan(slamObj,scans{i});
    
    if rem(i,10) == 0
        show(slamObj);
    end
end

Figure contains an axes. The axes contains 121 objects of type line.

Просмотр карты заполнения

После добавления всех сканов к объекту SLAM создайте occupancyMap сопоставить путем вызова buildMap с сканами и положениями. Используйте то же разрешение карты и максимальную область значений, которые вы использовали с объектом SLAM.

[scansSLAM,poses] = scansAndPoses(slamObj);
occMap = buildMap(scansSLAM,poses,resolution,maxRange);
figure
show(occMap)
title('Occupancy Map of Garage')

Figure contains an axes. The axes with title Occupancy Map of Garage contains an object of type image.

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

свернуть все

Лидарный объект SLAM, заданная как lidarSLAM объект. Объект содержит параметры алгоритма SLAM, данные датчика и базовый график положения, используемый для построения карты.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: "Poses","off"

Оси, используемые для построения графика положения, заданные как разделенная разделенными запятой парами, состоящая из "Parent" и либо an Axes или UIAxes объект. Посмотрите axes или uiaxes.

Отобразите лидарные положения, заданные как разделенная разделенными запятой парами, состоящая из "Poses" и "on" или "off".

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

свернуть все

Ось, используемая для построения графика карты, возвращается как Axes или UIAxes объект. Посмотрите axes или uiaxes.

Введенный в R2019b