### 0.0.1 LLA에서 무인기 로컬 제어 기준계인 NED(North-East-Down) 평면 좌표계로의 방향 여현 행렬(DCM) 도출
글로벌 LLA(Latitude, Longitude, Altitude) 좌표계는 지구상의 절대적인 위치를 지정하는 데 유리하지만, 무인기(UAV)의 자세 및 위치를 제어하는 뉴턴 역학 기반의 운동 방정식에 직접 대입하기에는 수식 전개가 지나치게 복잡해진다. 따라서 PX4-Autopilot의 EKF2(Extended Kalman Filter) 및 위치 제어기(Position Controller)는 기체의 위치를 기준점(Reference Point, 보통 이륙 지점)에서부터 떨어져 있는 북쪽(North), 동쪽(East), 아래쪽(Down) 방향의 미터(m) 단위 거리 편이량으로 변환하여 사용하는 NED 로컬 평면 좌표계 체계를 채택하고 있다.
글로벌 시스템에서 로컬 시스템으로의 정밀한 매핑은 두 좌표계 사이의 회전 관계를 정의하는 **방향 여현 행렬(DCM: Direction Cosine Matrix)**의 수학적 유도를 통해 완성된다.
0.1 NED 타원체 접평면(Tangent Plane)의 수식적 정의
NED 좌표계는 지구 타원체 표면 상의 특정 기준점 P_{ref}(\phi_{ref}, \lambda_{ref}, h_{ref})에 접하는 2차원 평면에 하방(Down)을 의미하는 수직축을 결합한 3차원 직교 좌표계이다.
- N(North) 축: 진북(True North)을 향하는 접선 방향
- E(East) 축: 진동(True East)을 향하는 접선 방향
- D(Down) 축: 타원체의 수직 방향(중력 방향과 유사하나 타원체 법선 방향에 정확히 일치)으로, 지표면 아래를 향함.
이 평면 좌표계는 NED 기준점에서 매우 가까운 거리(일반적인 가시권 드론 비행 반경인 수 km 이내)에서는 지구 곡률 오차를 무시할 수 있을 만큼 평평하다고 가정하는 ‘Local Tangent Plane’ 근사(Approximation)를 사용한다.
0.2 ECEF에서 NED로의 DCM(Direction Cosine Matrix) 생성 알고리즘
LLA에서 특정 변위만큼 이동한 위치를 NED 벡터로 변환하는 일반적인 알고리즘은 타원체 표면에서의 미분 방정식과 회전 변환으로 이루어진다. PX4 코드 베이스 내부에서는 이 변환을 직관적인 행렬곱으로 처리하기 위해 ECEF 좌표를 브릿지(Bridge)로 활용한다.
기준점 LLA (\phi_{ref}, \lambda_{ref}, h_{ref})를 ECEF 좌표 (x_{ref}, y_{ref}, z_{ref})로 변환한 후, 이 기준점에서 ECEF 좌표계와 NED 좌표계 사이의 회전 관계를 나타내는 DCM R_{e}^{n} (ECEF to NED)를 도출한다. 이 회전 행렬은 기준점의 위도와 경도에 대한 두 번의 기본 회전(Z축으로 \lambda_{ref} 만큼 회전 후, Y축으로 -\phi_{ref} - 90^\circ 만큼 회전)을 통해 유도된다.
R_{e}^{n} = \begin{bmatrix} -\sin\phi_{ref}\cos\lambda_{ref} & -\sin\phi_{ref}\sin\lambda_{ref} & \cos\phi_{ref} \\ -\sin\lambda_{ref} & \cos\lambda_{ref} & 0 \\ -\cos\phi_{ref}\cos\lambda_{ref} & -\cos\phi_{ref}\sin\lambda_{ref} & -\sin\phi_{ref} \end{bmatrix}
0.3 무인기의 평면 투영(Projection) 연산
회전 행렬이 완성되면, 현재 위치의 LLA (\phi, \lambda, h)를 ECEF (x, y, z)로 변환한 뒤, 기준점과의 위치 벡터 차이에 DCM을 곱하여 최종 로컬 NED 좌표 \mathbf{P}_{NED}를 도출한다.
\mathbf{P}_{NED} = \begin{bmatrix} N \\ E \\ D \end{bmatrix} = R_{e}^{n} \times \begin{bmatrix} x - x_{ref} \\ y - y_{ref} \\ z - z_{ref} \end{bmatrix}
그러나 PX4의 src/lib/geo 소스 코드는 상기 행렬 연산 대신, 연산 속도의 최적화를 위해 방위각(Azimuth)과 거리를 이용하는 구면 삼각법 근사 방식(Equirectangular approximation이나 Azimuthal equidistant projection 함수)인 map_projection_project 루틴을 주로 활용하여 위경도 차이(\Delta \phi, \Delta \lambda)를 미터 단위의 (N, E) 변위로 직접 치환해버린다.
이러한 글로벌-로컬 분리 아키텍처는 PX4의 위치 제어기(Position Controller)가 마치 지구 곡률이 없는 평평한 운동장 위에서 로봇을 제어하는 것처럼 선형 PID 제어루프(Linear PID Control Loop)를 단순하게 적용할 수 있도록 보장하는 핵심 수학적 층위이다.