validatorVehicleCostmap

Валидатор состояний, основанный на 2-D costmap

Описание

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

Создание

Синтаксис

Описание

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

пример

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

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

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

Свойства

расширить все

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

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

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

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

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

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

copyСоздайте глубокую копию объекта валидатора состояний
isStateValidПроверьте, является ли состояние допустимым
isMotionValidПроверьте, действителен ли путь между состояниями

Примеры

свернуть все

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

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

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

Figure contains an axes. The axes contains 2 objects of type image, patch. This object represents Inflated Areas.

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

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

Figure contains an axes. The axes contains 3 objects of type image, patch, line. This object represents Inflated Areas.

Создайте валидатор состояния, используя stateSpaceSE2 определение. Укажите карту и расстояние для интерполяции и проверки сегментов контура.

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

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

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

   1
   1
   1

Проверяйте движение между каждыми последовательными состояниями пути. The 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

Figure contains an axes. The axes contains 4 objects of type image, patch, line. This object represents Inflated Areas.

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

.
Введенный в R2019b