Main Content

validatorVehicleCostmap

2차원 비용맵 기반의 상태 유효성 검사기

R2019b 이후

설명

validatorOccupancyMap 객체는 2차원 비용맵의 값을 기준으로 상태와 이산화된 모션의 유효성을 검사합니다. 점유된 맵 위치는 유효하지 않은 상태로 해석됩니다.

생성

구문

설명

validator = validatorVehicleCostmap은 디폴트 설정으로 SE2 상태공간에 연결된 이동체 비용맵을 만듭니다.

예제

validator = validatorVehicleCostmap(stateSpace)nav.StateSpace에서 파생되어 주어진 상태공간 정의로 유효성 검사기를 만듭니다.

validator = validatorVehicleCostmap(stateSpace,Name,Value)Name,Value 쌍 인수를 사용하여 Map 속성 또는 XYIndices 속성을 지정합니다.

속성

모두 확장

상태 유효성 검사를 위한 상태공간으로, nav.StateSpace의 서브클래스로 지정됩니다. 제공되는 state space 객체에는 다음이 포함됩니다.

상태 유효성 검사에 사용되는 맵으로, vehicleCostmap (Automated Driving Toolbox) 객체로 지정됩니다.

상태 간 샘플링 간격과 상태 유효성 검사 간격으로, 양의 숫자형 스칼라로 지정됩니다.

상태 벡터의 xy 좌표에 대한 상태 변수 매핑으로, 요소를 2개 가진 벡터 [xIdx yIdx]로 지정됩니다. 예를 들어 상태 벡터가 [r p y x y z]로 주어지면 xy 좌표는 [4 5]입니다.

상태 벡터의 theta 좌표에 대한 상태 변수 매핑으로, 양의 정수로 지정됩니다. 예를 들어 상태 벡터가 [x y theta]로 주어지면 theta 좌표는 3입니다.

객체 함수

copyCreate deep copy of state validator object
isStateValidCheck if state is valid
isMotionValidCheck if path between states is valid

예제

모두 축소

이 예제에서는 환경을 통과하는 경로의 유효성을 검사하는 방법을 보여줍니다.

예제 맵을 불러옵니다. 단순한 맵을 사용하여 이동체 비용맵을 생성합니다. 확장 반경을 1미터로 지정합니다.

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

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 2 objects of type image, patch. This object represents Inflated Areas.

해당 맵을 통과하는 거친(coarse) 경로를 지정합니다.

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

Figure contains an axes object. The axes object with xlabel X, ylabel Y 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

각 순차적 경로 상태 간의 모션을 확인합니다. 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 object. The axes object with xlabel X, ylabel Y contains 4 objects of type image, patch, line. One or more of the lines displays its values using only markers This object represents Inflated Areas.

확장 기능

버전 내역

R2019b에 개발됨