Main Content

validatorOccupancyMap

2차원 그리드 맵 기반의 상태 유효성 검사기

설명

validatorOccupancyMap 객체는 2차원 점유 맵의 값을 기준으로 상태와 이산화된 모션의 유효성을 검사합니다. 맵에서 상태 위치가 점유되었거나 알 수 없는 경우 validatorOccupancyMap 객체는 상태가 유효하지 않은 것으로 간주합니다. 비어 있는 공간만 유효한 상태로 간주됩니다.

생성

구문

설명

validator = validatorOccupancyMap은 디폴트 설정으로 SE2 상태공간에 연결된 2차원 점유 맵 유효성 검사기를 만듭니다.

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

예제

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

속성

모두 확장

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

상태 유효성 검사에 사용되는 맵으로, binaryOccupancyMap 객체 또는 occupancyMap 객체로 지정됩니다.

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

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

객체 함수

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

예제

모두 축소

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

예제 맵을 불러옵니다. 단순한 맵을 사용하여 이진 점유 맵을 생성합니다.

load exampleMaps.mat
map = occupancyMap(simpleMap);
show(map)

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains an object of type image.

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

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

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 2 objects of type image, line.

stateSpaceSE2 정의를 사용하여 상태 유효성 검사기를 생성합니다. 맵을 지정하고 경로 세그먼트를 보간하고 유효성을 검사하기 위한 거리를 지정합니다.

validator = validatorOccupancyMap(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 title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 3 objects of type image, line. One or more of the lines displays its values using only markers

확장 기능

버전 내역

R2019b에 개발됨