validatorVehicleCostmap

Блок проверки допустимости состояния на основе 2D costmap

Описание

validatorOccupancyMap объект подтверждает состояния и дискретизированные движения на основе значения в 2D costmap. Занятое местоположение карты интерпретировано как недопустимое состояние.

Создание

Синтаксис

Описание

validator = validatorVehicleCostmap создает блок проверки допустимости карты стоимости транспортного средства, сопоставленный с пространством состояний SE2 с настройками по умолчанию.

пример

validator = validatorVehicleCostmap(stateSpace) создает блок проверки допустимости в данном определении пространства состояний, выведенном из nav.StateSpace.

validator = validatorVehicleCostmap(stateSpace,xyIndices)устанавливает XYIndices свойство задать, какие переменные в векторе состояния задают xy - координаты.

validator = validatorVehicleCostmap(stateSpace,Name,Value) задает Map или XYIndices свойства с помощью Name,Value парные аргументы.

Свойства

развернуть все

Пространство состояний для проверки состояний в виде подкласса nav.StateSpace. Если объекты пространства состояний включают:

Карта используется в проверке состояний в виде vehicleCostMap объект.

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

Отображение переменной состояния для xy - координирует в векторе состояния в виде двухэлементного вектора, [xIdx yIdx]. Например, если вектор состояния дан как [r p y x y z], xy - координатами является [4 5].

Отображение переменной состояния для theta координирует в векторе состояния в виде положительного целого числа. Например, если вектор состояния дан как [x y theta], координатой theta является 3.

Функции объекта

isStateValidПроверяйте, допустимо ли состояние
isMotionValidПроверяйте, допустим ли путь между состояниями

Примеры

свернуть все

В этом примере показано, как подтвердить пути через evironment.

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

load exampleMaps.mat
map = vehicleCostmap(double(simpleMap));
map.CollisionChecker = inflationCollisionChecker("InflationRadius",1);
plot(map)

Задайте крупный путь через карту.

path = [3 3 pi/2; 8 15 0; 17 8 -pi/2];
hold on
plot(path(:,1),path(:,2),"--o")

Создайте блок проверки допустимости состояния с помощью stateSpaceSE2 определение. Задайте карту и расстояние для интерполяции и проверки сегментов пути.

validator = validatorVehicleCostmap(stateSpaceSE2);
validator.Map = map;
validator.ValidationDistance = 0.1;

Проверяйте, что точки пути являются допустимыми состояниями. Все три точки находятся в свободном пространстве, рассмотрен допустимым - также.

isValid = isStateValid(validator,path)
isValid = 3x1 logical array

   1
   1
   1

Проверяйте движение между каждым последовательным путем состояния. isMotionValid функция интерполирует вдоль пути между состояниями. Если сегмент пути недопустим, постройте последний актуальный вопрос вдоль пути.

startStates = [path(1,:);path(2,:)];
endStates = [path(2,:);path(3,:)];
    for i = 1:2
        [isPathValid, lastValid] = isMotionValid(validator,startStates(i,:),endStates(i,:));
        if ~isPathValid
            plot(lastValid(1),lastValid(2),'or')
        end
    end
hold off

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

Введенный в R2019b