Chapter 12. GPS 및 글로벌 포지셔닝 시스템 연동
- # 1. GNSS(Global Navigation Satellite System)의 기초 수학 및 무인기 측위 환경
- ## 0.1 다중 위성 시스템(Multi-GNSS) 및 신호 추적 심층 분석
- ### 0.0.1 GPS, GLONASS, Galileo, BeiDou 시스템의 궤도 역학과 신호 스펙트럼
- ### 0.0.1 반송파 위상(Carrier Phase) 및 코드 위상(Code Phase) 기반 의사거리(Pseudorange) 측정 원리
- ### 0.0.1 다중 주파수(L1/L2/L5) 조합을 통한 전리층 지연(Ionospheric Delay) 수학적 상쇄 기법
- ## 0.1 비행 제어를 위한 지구 좌표계 및 고도 변환 알고리즘
- ### 0.0.1 WGS84 기준 타원체(Ellipsoid) 모델의 기하학적 정의 및 이심률(Eccentricity) 연산
- ### 0.0.1 ECEF(Earth-Centered, Earth-Fixed)에서 LLA(Latitude, Longitude, Altitude) 좌표 변환 수식 (x, y, z \rightarrow \phi, \lambda, h)
- ### 0.0.1 LLA에서 무인기 로컬 제어 기준계인 NED(North-East-Down) 평면 좌표계로의 방향 여현 행렬(DCM) 도출
- ### 0.0.1 정표고(AMSL) 추정을 위한 지오이드(Geoid) 간격(Undulation) 모델과 EGM96 룩업 테이블(Look-up Table) 적용 한계
- ## 0.1 측위 오차 모델 및 품질 지표(Quality Metrics)의 통계적 접근
- ### 0.0.1 사용자 등가 거리 오차(UERE: User Equivalent Range Error) 예산 분석 및 위성 시계 오차 보정
- ### 0.0.1 공분산 행렬(Covariance Matrix) 기반 기하학적 정밀도 저하율(DOP: Dilution of Precision) 산출 알고리즘 (HDOP, VDOP, PDOP)
- ### 0.0.1 수신기 자율 무결성 모니터링(RAIM: Receiver Autonomous Integrity Monitoring) 기법과 PX4 내 적용 메커니즘
- ## 0.1 PX4 호환 GPS 하드웨어 회로망 및 노이즈(EMI) 대책
- ### 0.0.1 Serial(UART) 기반 범용 GPS 모듈의 물리적 인터페이스 한계
- ### 0.0.1 Pixhawk 규격 UART 포트(TELEM/GPS)의 핀맵(TX, RX, VCC, GND) 및 직렬 통신 결선 표준
- ### 0.0.1 3.3V TTL 로직과 5V 전원 레벨 매칭 설계 및 과전류 보호(Over-current Protection) 회로
- ### 0.0.1 CAN 버스(UAVCAN/DroneCAN) 기반 지능형 GPS(Smart GPS) 노드 아키텍처
- ### 0.0.1 DroneCAN 마이크로컨트롤러(MCU) 내장형 GPS의 토폴로지(Topology) 및 종단 저항(120\Omega) 물리 계층 구성
- ### 0.0.1 DroneCAN 노드 ID 동적 할당(Dynamic Node ID Allocation) 프로토콜 및 데이터 프레임 캡슐화
- ### 0.0.1 복합 센서 통합 보드(GPS + Compass + Baro + Safety) 회로 설계 분석
- ### 0.0.1 I2C 버스를 통한 외부 자기장 센서(IST8310, BMM150 등) 데이지 체인(Daisy Chain) 연결 및 Pull-up 저항 설계
- ### 0.0.1 하드웨어 안전 스위치(Safety Switch) 및 RGB LED 상태 표시기의 PWM/GPIO 제어 회로망
- ### 0.0.1 전자기 간섭(EMI) 방지 및 하드웨어 배치(Placement) 가이드라인
- ### 0.0.1 동력계(ESC/Motor) 및 텔레메트리(RF) 노이즈 스펙트럼이 GPS 수신 대역(1.5GHz)에 미치는 간섭 분석
- ### 0.0.1 마스트(Mast) 높이 산정의 역학적 기준 및 카본 파이버(Carbon Fiber) 대비 알루미늄/구리 테이프의 차폐(Shielding) 효과
- ### 0.0.1 GPS 통신 파싱(Parsing) 엔진 및 최적화 기법
- ### 0.0.1 NMEA 0183 ASCII 프로토콜 구조와 병목(Bottleneck) 분석
- ### 0.0.1 주요 문장 구조:
$GPGGA, $GPRMC, $GPVTG 페이로드 문자열 분리 및 형변환(Casting) 비용
- ### 0.0.1 체크섬(Checksum) 무결성 검증을 위한 XOR 연산 로직 구현체
- ### 0.0.1 ASCII 파싱의 오버헤드(Overhead) 및 높은 갱신 주기(10Hz 이상)에서의 직렬 포트 대역폭(Bandwidth) 병목 현상
- ### 0.0.1 U-Blox UBX 바이너리 프로토콜 구조 및 효율성
- ### 0.0.1 UBX 프레임 헤더(
0xB5 0x62), 클래스(Class), ID, 페이로드 길이 및 16비트 Fletcher 체크섬 아키텍처
- ### 0.0.1 필수 측위 메시지 해독:
UBX-NAV-PVT (위치/속도/시간 통합) 및 UBX-NAV-DOP (정밀도 지표) 구조체 매핑
- ### 0.0.1 모듈 런타임 설정 메시지(
UBX-CFG-PRT, UBX-CFG-RATE)의 구성 및 송수신(ACK/NACK) 메커니즘
- ### 0.0.1 통신 속도(Baudrate) 자동 감지 알고리즘 및 초기화 상태 머신
- ### 0.0.1 Auto-baud 탐색(Search) 스텝 트리(9600 \rightarrow 115200) 및 포트 재설정(
tcsetattr) 폴링(Polling) 로직
- ### 0.0.1 매직 패킷(Magic Packet) 전송을 통한 벤더 식별 및 NMEA에서 UBX/바이너리 모드로의 전환 유도
- ### 0.0.1
src/drivers/gps 디렉토리 소스 코드 아키텍처 및 스케줄링
- ### 0.0.1 드라이버 모듈 진입점(Entry Point) 및 객체 생명주기
- ### 0.0.1
gps_main.cpp의 모듈 초기화(start), 중지(stop), 상태 확인(status) 커맨드 라인 인터페이스(CLI) 라우팅
- ### 0.0.1 객체 지향 추상화:
GPSProvider 추상 베이스 클래스(virtual 함수) 및 공통 데이터 인터페이스 설계
- ### 0.0.1 벤더별 프로토콜 파서(Parser) 구현 클래스 및 다형성(Polymorphism)
- ### 0.0.1
UbxGps 클래스 소스 분석: 상태 머신(State Machine) 기반 1바이트씩(parse_char()) 비동기 처리하는 메모리 최적화 기법
- ### 0.0.1
AshtechGps, EmlidReach, Trimble 등 고정밀 수신기 파서 클래스의 특화 기능 분석
- ### 0.0.1 GPS 데이터 수집 스케줄링 및 I/O 블로킹(Blocking) 처리
- ### 0.0.1 NuttX 운영체제의 Work Queue 시스템을 활용한 GPS 스레드(Thread) 독립 실행 구조
- ### 0.0.1
poll() 시스템 콜 기반 비동기 직렬 포트 읽기 및 읽기 버퍼(Read Buffer) 오버플로우 방지 기법
- ### 0.0.1 타임스탬프(Timestamp) 동기화 및 PPS(Pulse Per Second) 정밀 보정
- ### 0.0.1 HRT(High-Resolution Timer) 시스템 클럭과 GPS 시간(UTC/ITOW) 간의 오프셋 동기화 알고리즘
- ### 0.0.1 하드웨어 인터럽트(Interrupt) 기반 PPS 캡처 타이머 처리 로직 및 전송 지연 시간(Transport Latency) 보상 수학적 모델
- ### 0.0.1 uORB 파이프라인 및 Estimator(EKF2) 인입(Injection) 메커니즘
- ### 0.0.1 원시 데이터 uORB 퍼블리싱(Publishing) 과정
- ### 0.0.1
sensor_gps.msg uORB 토픽의 구조체(Struct) 메모리 레이아웃 및 각 필드(epv, eph, vel_ned)의 의미
- ### 0.0.1 다중 인스턴스(Multi-instance) 퍼블리싱:
ORB_ID(sensor_gps)의 인스턴스 0번(Primary)과 1번(Secondary) 할당 로직
- ### 0.0.1 EKF2 모듈로의 센서 데이터 융합 파이프라인
- ### 0.0.1
EKF2 모듈 내부 sensor_gps 구독(Subscription) 주기 및 폴링 스레드 동작 원리
- ### 0.0.1 관성 센서(IMU) 데이터와의 동기화를 위한 지연 버퍼(Delay Buffer) 및 관측 시간 롤백(Time Machine Rollback) 알고리즘
- ### 0.0.1 GPS 속도(Velocity) 데이터 중심의 초기 정렬(Initial Alignment) 및 자이로 바이어스(Gyro Bias) 수렴 과정
- ### 0.0.1 GCS 관제 통신을 위한 MAVLink 캡슐화 로직
- ### 0.0.1
mavlink_messages.cpp의 스트림 클래스에서 uORB sensor_gps 데이터를 GPS_RAW_INT 패킷으로 변환하는 직렬화(Serialization) 과정
- ### 0.0.1 대역폭 절약을 위한 MAVLink 메시지 스트리밍 레이트(Streaming Rate) 동적 조절 로직
- ### 0.0.1 다중 GPS(Dual GNSS) 융합 및 리던던시(Redundancy) 제어 로직
- ### 0.0.1 다중 센서 하드웨어 토폴로지 구성 및 파라미터 매핑
- ### 0.0.1 물리적 안테나 이격 거리 산정 및 다중 경로(Multipath) 상호 간섭 최소화 배치
- ### 0.0.1
GPS_1_CONFIG 및 GPS_2_CONFIG 파라미터를 통한 Serial/CAN 포트 동적 할당 소스 코드 트레이싱
- ### 0.0.1 GPS 데이터 블렌딩(Blending) 아키텍처 및 수학적 모델
- ### 0.0.1
ekf2_gps_blending.cpp 분석: 속도(Velocity) 및 위치 오차 분산(Variance) 역수에 비례하는 가중치(W_1, W_2) 연산 알고리즘
- ### 0.0.1 LPF(Low Pass Filter)를 활용한 가중치 급변 방지 평활화(Smoothing) 기법 및 블렌딩 비활성화 임계 조건
- ### 0.0.1 장애 조치(Failover) 및 수신기 무중단 스위칭(Seamless Switching) 로직
- ### 0.0.1 주(Primary) 수신기 장애 판단 상태 머신: 타임아웃(Timeout), 위성 수 급감, EKF Innovation 임계치 초과 판별식
- ### 0.0.1 수신기 전환(Switching) 시 오프셋 차이로 발생하는 위치 튐(Position Jump) 현상을 보상하는 상태 변수(State Variable) 리셋 동기화 로직
- ### 0.0.1 PX4-Autopilot 및 Ardupilot의 GPS 소프트웨어 철학 비교
- ### 0.0.1 드라이버 모듈화 및 스레드 병렬 처리 모델 비교
- ### 0.0.1 PX4의 독립 프로세스 모듈 및 uORB IPC 방식 vs Ardupilot의
AP_GPS 백엔드 라이브러리 스레드 직접 폴링 방식
- ### 0.0.1 실시간 운영체제(NuttX 커널 vs ChibiOS) 차이에 따른 컨텍스트 스위칭(Context Switching) 및 I/O 지연 시간 비교
- ### 0.0.1 다중 센서 융합(Fusion) 알고리즘 처리 체계 비교
- ### 0.0.1 PX4 EKF2의 전처리(Pre-processing) 블렌딩 모듈 분리 구조 vs Ardupilot EKF3의 다중 코어 레인(Multi-core Lane) 동시 평가 및 선별(Selection) 구조 차이
- ### 0.0.1 파라미터 추상화 및 사용자 인터페이스 철학 비교
- ### 0.0.1 PX4의 기능 중심 동적 직렬 라우팅(Dynamic Serial Routing) 방식 vs Ardupilot의 포트 중심
SERIALx_PROTOCOL 정적 매핑 방식
- ### 0.0.1 파라미터(Parameter) 최적화 및 QGroundControl 기반 캘리브레이션 실무
- ### 0.0.1 환경별 핵심 시스템 파라미터 튜닝 가이드
- ### 0.0.1
SENS_GPS_MASK (SBAS, Galileo 등 특정 위성 시스템 활성화/비활성화 비트마스크 설정)
- ### 0.0.1
GPS_UBX_DYNMODEL 파라미터를 통한 비행체 동역학 모델(Portable, Airborne 1G, 4G 등)별 U-Blox 내부 칼만 필터 게인(Gain) 조정 원리
- ### 0.0.1 다중 센서 융합을 위한 공간적 오프셋(Spatial Offset) 정밀 캘리브레이션
- ### 0.0.1 기체 무게중심(CG) 기준 GPS 안테나 위상 중심(Phase Center)까지의 3차원 레버암(Lever Arm) 측정 및
EKF2_GPS_POS_X, Y, Z 입력
- ### 0.0.1 레버암 미보정 시 고속 회전 기동(Yawing/Rolling) 중 EKF2에서 발생하는 구심 가속도(Centripetal Acceleration) 오인 및 위치 발산 원리
- ### 0.0.1 QGroundControl UI를 활용한 실시간 무결성 모니터링
- ### 0.0.1 MAVLink Inspector를 활용한 위성 방위각/고도각 스카이플롯(Skyplot) 도식화 및 다중 경로 징후 파악
- ### 0.0.1 스푸핑(Spoofing) 및 재밍(Jamming) 지표(
jamming_indicator) 모니터링 및 QGC 알림 시스템 연동
- ### 0.0.1 센서 거부(Sensor Rejection), Failsafe 및 트러블슈팅 로직
- ### 0.0.1 다중 경로(Multipath) 오차 및 GPS Glitch(위치 튐) 감지 아키텍처
- ### 0.0.1 도심 협곡(Urban Canyon) 및 구조물 근접 비행 시 반사파(Multipath) 신호가 코드 위상 추적 루프(DLL)에 미치는 왜곡 모델링
- ### 0.0.1 EKF2 내부의 Innovation Test(관측치와 EKF 예측치 간의 잔차 검증) 실패 판별 소스 코드 및 임계값(
EKF2_GPS_V_GATE, P_GATE) 분석
- ### 0.0.1 EKF2 센서 융합 중단(Rejection) 및 폴백(Fallback) 메커니즘
- ### 0.0.1
GPS Rejection 상태 플래그 활성화 조건 트리 및 유효하지 않은 데이터(Invalid Data) 필터링 지속 시간 산출
- ### 0.0.1 GPS 신호 소실(Loss) 시 기압계(Baro) 및 관성 센서(IMU)만을 이용한 데드 레코닝(Dead Reckoning) 유지의 수학적 한계 및 드리프트(Drift) 누적 곡선
- ### 0.0.1 비행 데이터 심층 분석(Flight Review/PlotJuggler)을 통한 사후 트러블슈팅
- ### 0.0.1 ULog 파일의
estimator_status 토픽 플래그(gps_check_fail_flags) 해독 및 vehicle_gps_position 비교 차트 작성 실무
- ### 0.0.1 GPS 수신 불량으로 인한 플라이어웨이(Flyaway) 사고 발생 시 제어 루프 이탈 패턴 분석 및 하드웨어/소프트웨어 재현 방지 대책 수립