Main Content

방향, 위치, 좌표 규칙

Sensor Fusion and Tracking Toolbox™를 사용하면 플랫폼의 방향, 위치, 자세, 궤적을 추적할 수 있습니다. 플랫폼은 일반적으로 상태를 추적하고자 하는 객체를 의미합니다.

방향

방향은 각변위로 정의됩니다. 방향은 점 회전 또는 프레임 회전으로 설명할 수 있습니다. 점 회전에서, 좌표계는 정적이며 점이 이동합니다. 프레임 회전에서, 점은 정적이며 좌표계가 이동합니다. 회전 축과 회전 각도가 주어졌을 때, 점 회전과 프레임 회전은 동등한 각변위를 정의하지만 방향은 반대입니다.

Sensor Fusion and Tracking Toolbox에서는 프레임 회전이 기본입니다.

Point Rotation and Frame Rotation

프레임 표현에서, 방향은 부모 프레임에서 자식 프레임 쪽으로 향하는 회전으로 정의됩니다. 부모 프레임과 자식 프레임의 선택은 해결하려는 문제에 따라 달라집니다. 예를 들어 플랫폼에서 센서 장착을 조작하는 경우 플랫폼 바디 프레임을 부모 프레임으로 선택하고 센서 장착 프레임을 자식 프레임으로 선택할 수 있습니다. 플랫폼 바디 프레임에서 센서 장착 프레임으로의 회전은 플랫폼을 기준으로 센서의 방향을 정의합니다.

Sensor Fame and Body Frame Illustration

Sensor Fusion and Tracking Toolbox는 주로 NED(북쪽-동쪽-아래쪽) 좌표 프레임을 지원합니다. 많은 기능에서 ENU(동쪽-북쪽-위쪽) 좌표 프레임도 사용할 수 있습니다. 일부 함수와 객체(예: geoTrajectorygpsSensor)에서는 ECEF(지구중심고정) 프레임과 측지 좌표(위도, 경도, 고도로 구성됨)를 사용해야 합니다. ECEF 좌표와 측지 좌표에 대한 자세한 내용은 Coordinate Frames in Geo Trajectory 항목을 참조하십시오.

NED and ENU Frame Illustration

프레임 회전

한 방향을 또 다른 방향에 연관시키려면 프레임을 회전시켜야 합니다. 아래 표에 z-y-x 회전 규칙이 요약되어 있습니다. 다른 규칙(예: z-x-z 회전 규칙)을 사용할 수도 있습니다. 이러한 규칙에 대한 자세한 내용은 quaternion의 회전 시퀀스(RS) 인수를 참조하십시오.

변수오일러 각기호출력 구간(단위: 도)
zψ−180 ≤ ψ < 180
y피치θ−90 ≤ θ ≤ 90
xϕ−180 ≤ ϕ < 180

양의 회전 각도는 축의 양의 방향을 따라, 원점에서 볼 때 한 축을 중심으로 시계 방향으로 회전하는 것에 해당합니다. 오른손 규칙은 이와 동일합니다. 즉, 양의 방향 회전은 엄지손가락이 회전 축의 방향을 가리키고 있을 때 오른손의 손가락들이 말리는 방향을 뜻합니다.

3차원 프레임 회전을 정의하려면, 좌표축을 중심으로 순차적으로 회전시켜야 합니다. Sensor Fusion and Tracking Toolbox는 내재적(즉, 현 위치에서의 프레임) 회전을 사용합니다. 따라서 각 회전 후, 다음 회전 이전에 축이 업데이트됩니다. 예를 들어 z-y-x 규칙을 사용하여 축을 회전시키려면 다음을 수행합니다.

  1. z축을 중심으로 부모 프레임을 회전시켜 일련의 새 좌표축(x',y',z)을 생성합니다. 여기서 x축과 y축은 x'축과 y'축으로 변경되고 z축은 변경되지 않습니다.

    [x'y'z]=Rz(ψ)[xyz]

  2. y'축을 중심으로 위의 단계에서 얻은 일련의 새 좌표축을 회전시켜 또 다른 일련의 새 좌표축(x'',y',z')을 생성합니다.

    [x''y'z']=Ry(θ)[x'y'z]

  3. x''축을 중심으로 위의 단계에서 얻은 일련의 새 좌표축을 회전시켜 원하는 자식 프레임(x'',y'',z'')에 도달합니다.

    [x''y''z'']=Rx(ϕ)[x''y'z']

Three consecutive rotations

이러한 회전 시퀀스는 [1]에 명시된 규칙을 따릅니다. 요, 피치, 롤이 주어졌을 때, 부모 프레임의 벡터를 자식 프레임의 벡터로 변환하는 데 필요한 회전 행렬은 다음과 같이 계산됩니다.

R(ψ,θ,ϕ)=Rx(ϕ)Ry(θ)Rz(ψ)=[cosψcosθsinψcosθsinθcosψsinθsinϕsinψcosϕsinψsinθsinϕ+cosψcosϕcosθsinϕcosψsinθcosϕ+sinψsinϕsinψsinθcosϕcosψsinϕcosθcosϕ]

프레임 기반 처리를 지원하는 기능의 경우, Sensor Fusion and Tracking Toolbox는 좌표를 N×3 행렬로 제공합니다. 여기서 N은 단위가 시간인 샘플의 개수이고 3개의 열은 x축, y축, z축에 대응됩니다. 다음 계산은 부모 프레임을 자식 프레임 쪽으로 회전시킵니다.

achild=(R(ψ,θ,ϕ)×(aparent)T)T

여기서 aparent는 부모 좌표 프레임에 표현된 좌표로 구성된 N×3 행렬을 나타내고, 결과로 생성된 achild는 자식 프레임에 표현된 좌표로 구성된 N×3 행렬입니다.

Sensor Fusion and Tracking Toolbox에서는 quaternion 데이터형을 사용하여 효과적으로 방향을 계산할 수 있습니다. 쿼터니언을 사용하여 회전 행렬을 만들려면 rotmat 함수를 사용하십시오.

바디 프레임의 중력 벡터 표현

NED 프레임에서 중력 벡터는 다음과 같이 표현될 수 있습니다.

gNED = [0 0 9.8]; % m/s^2

부모 NED 프레임에서 20도(요), 5도(피치), 10도(롤)의 연속 회전을 통해 얻은 바디 프레임을 고려합니다.

yaw = 20; % degree
pitch = 5; % degree
roll = 10; % degree

바디 프레임의 중력 벡터 표현식을 구하기 위해 먼저 3개의 연속된 오일러 각에 대응하는 quaternion을 구합니다.

q = quaternion([yaw pitch roll],"eulerd","zyx","frame");

그런 다음 rotateframe 객체 함수를 사용하여 바디 프레임에서의 중력 벡터 좌표를 다음과 같이 구할 수 있습니다.

gBody = rotateframe(q,gNED)
gBody = 1×3

   -0.8541    1.6953    9.6144

또는 회전 행렬을 사용하여 좌표를 구할 수 있습니다. 먼저 quaternionrotmat 객체 함수를 사용하여, NED 프레임에서 바디 프레임으로 좌표를 변환하는 상응하는 회전 행렬을 구합니다.

R = rotmat(q,"frame");

그런 다음 바디 프레임의 중력 벡터 좌표를 다음과 같이 구합니다.

gBody2 = (R*gNED')'
gBody2 = 1×3

   -0.8541    1.6953    9.6144

위치

위치는 부모 프레임 원점에서 자식 프레임 원점까지의 평행 이동 거리로 정의됩니다. 예를 들어 로컬 NED 좌표계를 부모 프레임으로 사용합니다. NED 좌표계는 다음과 같습니다.

  • 원점은 임의로 지구 곡면의 한 점에 고정됩니다. 이렇게 하면 NED 좌표계가 로컬이 됩니다.

  • x축은 타원체 북쪽을 가리킵니다.

  • y축은 타원체 동쪽을 가리킵니다.

  • z축은 타원체 법선(측지의 위도 ρ)을 따라 아래쪽을 가리킵니다.

NED Frame Illustration

방위각과 고도

벡터가 R3으로 주어진 경우:

  • 방위각은 x축으로부터 벡터의 xy 평면으로의 직교 투영까지의 각도로 정의됩니다. 각도는 x축에서 y축으로 향할 때 양수입니다. 방위각은 범위 [−180, 180] 내의 값(단위: 도)으로 주어집니다.

  • 고도는 xy 평면으로의 직교 투영에서 원래 벡터까지의 각도로 정의됩니다. 각도는 xy 평면에서 z축으로 향할 때 양수입니다. 고도는 범위 [-90, 90] 내의 값(단위: 도)으로 주어집니다.

Azimuth and Elevation Illustration

자세와 궤적

3차원 공간에서 객체를 완전히 지정하기 위해 위치와 방향을 결합할 수 있습니다. 자세는 위치와 방향의 결합으로 정의됩니다. 궤적은 시간 경과에 따라 자세가 어떻게 변화하는지를 정의합니다. Sensor Fusion and Tracking Toolbox에서 ground-truth 궤적을 생성하려면 kinematicTrajectory 또는 waypointTrajectory를 사용합니다. 지구 중심 궤적을 생성하려면 geoTrajectory를 사용합니다. 여러 플랫폼의 모션을 시뮬레이션하려면 trackingScenario를 사용합니다.

참고 항목

| |

참고 문헌

[1] IEEE. Standard for Distributed Interactive Simulation – Application Protocols. IEEE P1278.1/D16, Rev 18, May 2012.