Main Content

stateSpaceSE2

SE(2) 상태공간

R2019b 이후

설명

stateSpaceSE2 객체는 [x, y, θ]로 표현되는 상태 벡터로 구성된 SE(2) 상태공간의 파라미터와 상태를 저장합니다. x와 y는 카테시안 좌표이고 θ는 방향 각도입니다. 객체는 유클리드 거리를 사용하여 거리를 계산하고 선형 보간을 사용하여 상태의 평행 이동과 회전을 계산합니다.

생성

설명

예제

space = stateSpaceSE2는 x, y, θ에 대한 디폴트 상태 범위를 사용하여 SE(2) state space 객체를 생성합니다.

space = stateSpaceSE2(bounds)는 x, y, θ에 대한 bounds를 지정합니다. 범위를 벗어난 상태 값은 범위에 맞춰 잘립니다. 입력 bounds를 사용하여 StateBounds 속성의 값을 설정할 수 있습니다.

속성

모두 확장

상태공간의 이름으로, string형으로 지정됩니다.

읽기 전용 속성입니다.

상태공간의 차원으로, 양의 정수로 지정됩니다.

상태 변수의 범위로, 3×2 실수 값 행렬로 지정됩니다.

  • 첫 번째 행은 x 상태의 하한과 상한을 미터 단위로 지정합니다.

  • 두 번째 행은 y 상태의 하한과 상한을 미터 단위로 지정합니다.

  • 세 번째 행은 θ 상태의 하한과 상한을 라디안 단위로 지정합니다.

데이터형: double

x와 y의 거리 계산에 적용되는 가중치로, 음이 아닌 실수형 스칼라로 지정됩니다.

객체에서 거리는 다음과 같이 계산됩니다.

d=(wxy(dx2+dy2))+wθdθ2

wxy는 x 좌표와 y 좌표에 적용되는 가중치이고, wθ는 θ 좌표에 적용되는 가중치입니다. dx, dy, dθ는 각각 x, y, θ 방향의 거리입니다.

데이터형: double

θ 거리 계산에 적용되는 가중치로, 음이 아닌 실수형 스칼라로 정의됩니다.

객체에서 거리는 다음과 같이 계산됩니다.

d=(wxy(dx2+dy2))+wθdθ2

wxy는 x 좌표와 y 좌표에 적용되는 가중치이고, wθ는 θ 좌표에 적용되는 가중치입니다. dx, dy, dθ는 각각 x, y, θ 방향의 거리입니다.

데이터형: double

객체 함수

copyCreate deep copy of state space object
distanceDistance between two states
enforceStateBoundsReduce state to state bounds
interpolate상태 사이의 보간
sampleGaussianSample state using Gaussian distribution
sampleUniformSample state using uniform distribution

예제

모두 축소

SE(2) 상태공간을 생성합니다.

ss = stateSpaceSE2;

생성된 상태공간을 사용하여 occupancyMap 기반 상태 유효성 검사기를 생성합니다.

sv = validatorOccupancyMap(ss);

예제 맵에서 점유 맵을 만들고 맵 해상도를 10셀/미터로 설정합니다.

load exampleMaps
map = occupancyMap(simpleMap,10);
sv.Map = map;

유효성 검사기의 유효성 검사 거리를 설정합니다.

sv.ValidationDistance = 0.01;

상태공간 경계가 맵 제한과 동일하도록 업데이트합니다.

ss.StateBounds = [map.XWorldLimits;map.YWorldLimits; [-pi pi]];

경로 플래너를 생성하고 최대 연결 거리를 늘립니다.

planner = plannerRRT(ss,sv);
planner.MaxConnectionDistance = 0.3;

출발 상태와 목표 상태를 설정합니다.

start = [0.5,0.5,0];
goal = [2.5,0.2,0];

디폴트 설정으로 경로를 계획합니다.

rng(100,'twister'); % for repeatable result
[pthObj,solnInfo] = planner.plan(start,goal);

결과를 시각화합니다.

map.show; hold on;
plot(solnInfo.TreeData(:,1),solnInfo.TreeData(:,2),'.-'); % tree expansion
plot(pthObj.States(:,1), pthObj.States(:,2),'r-','LineWidth',2) % draw path

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.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2019b에 개발됨