### 0.0.1 다중 센서 하드웨어 토폴로지 구성 및 파라미터 매핑

### 0.0.1 다중 센서 하드웨어 토폴로지 구성 및 파라미터 매핑

다중 GPS(Dual GNSS) 융합의 수학적 이점을 취하기 위해서는, 먼저 두 대의 물리적 하드웨어가 비행 제어기(FC)와 완벽하게 전기적/논리적으로 통신할 수 있는 인프라(Topology)를 구축해야 한다. PX4-Autopilot은 다양한 제조사의 하드웨어와 통신 규격을 호환하기 위해 매우 유연한 포트 매핑 파라미터(Port Mapping Parameter) 아키텍처를 제공한다.

본 절에서는 듀얼 GPS 환경을 구축하기 위한 물리적 통신망(Serial vs CAN)의 구성 방식과, 이 하드웨어 포트들을 소프트웨어 드라이버로 연결해 주는 핵심 파라미터 링킹(Linking) 메커니즘을 살펴본다.

0.1 Serial 토폴로지 vs CAN 버스(Bus) 토폴로지

듀얼 GPS를 픽스호크 보드에 연결하는 방식은 통신 프로토콜에 따라 크게 두 가지 토폴로지로 나뉜다.

  • Serial (UART) 1:1 토폴로지:
    가장 전통적인 방식이다. 픽스호크의 GPS 1 포트(TELEM 1, 혹은 전용 GPS 포트)와 GPS 2 포트(TELEM 2 등)에 두 대의 GPS 모듈을 각각 직결(Point-to-Point)한다. 연결이 직관적이고 설정이 단순하지만, FC 주변에 굵고 긴 케이블 뭉치가 형성되어 전자기 간섭(EMI)에 취약해지는 단점이 있다.
  • DroneCAN (UAVCAN) 데이지 체인(Daisy Chain) 토폴로지:
    현대 산업용 기체에서 권장하는 방식이다. CAN 버스는 1:N 통신을 지원하므로, FC의 CAN 1 포트 하나에서 출발한 케이블이 GPS 1을 거쳐 GPS 2로 직렬로 이어지는 데이지 체인 방식이나 허브(Hub) 방식의 구성이 가능하다. 배선이 극도로 단순해지고 노이즈 내성이 비약적으로 상승하며, 나침반이나 기압계 데이터까지 케이블 4가닥(CAN H, CAN L, 5V, GND)에 모두 태워 보낼 수 있는 장점이 있다.

0.2 드라이버 바인딩: GPS_X_CONFIG 파라미터의 역할

하드웨어를 꽂았다고 해서 PX4가 즉시 센서를 인식하는 것은 아니다. 운영체제 부팅 시, 특정 텔레메트리 포트(예: /dev/ttyS0)에 GPS 드라이버 스레드를 띄울 것인지, 아니면 MAVLink 텔레메트리 드라이버를 띄울 것인지를 결정하는 이정표가 필요한데, 이것이 바로 GPS_1_CONFIGGPS_2_CONFIG 파라미터다.

  • 파라미터의 구조: 이 파라미터들은 INT32 형식의 값을 가지며, 드롭다운 형태의 Enum 리스트(예: 0: Disabled, 101: TELEM 1, 102: TELEM 2, 201: GPS 1 등)로 포트 식별자를 정의한다.
  • 부팅 스크립트(RC Script) 개입: PX4가 부팅될 때(rc.sensors 스크립트 실행 단계), 시스템은 GPS_1_CONFIG 값을 읽어 들인다. 만약 값이 101 (TELEM 1)이라면, 부팅 스크립트는 백그라운드에서 gps start -d /dev/ttyS0 (TELEM 1의 리눅스 장치명) 커맨드를 실행하여 첫 번째 GPS 드라이버를 띄운다.
  • Secondary 인스턴스 할당: 곧이어 GPS_2_CONFIG 도 검사한다. 값이 102 (TELEM 2)라면 gps start -d /dev/ttyS1 커맨드가 이어서 실행된다. 앞 절에서 다루었듯이, 두 번째로 실행된 이 드라이버는 uORB 네트워크에서 자동으로 sensor_gps 토픽의 인스턴스 1번(Secondary) 슬롯을 부여받게 된다.

0.3 DroneCAN 동적 노드 할당 (Dynamic Node Allocation)

반면, CAN 버스 기반의 듀얼 GPS를 사용할 경우 GPS_x_CONFIG 파라미터를 명시적인 ’포트 번호’로 지정할 필요가 없다. CAN 프로토콜(UAVCAN/DroneCAN) 특성상 네트워크 기반 모델을 따르기 때문이다.

  • 사용자는 UAVCAN_ENABLE 파라미터를 활성화(2 또는 3)하기만 하면 된다.
  • 부팅 시 CAN 데몬 스레드가 버스 상에 방송(Broadcast)을 때리고, 연결된 두 대의 CAN GPS는 동적 노드 ID 할당(Dynamic Node ID Allocation) 프로토콜에 따라 각자 고유한 ID(예: Node 11, Node 12)를 발급받는다.
  • 이후 CAN 드라이버 모듈이 두 노드로부터 쏟아지는 좌표 데이터를 파싱하여, 각각 uORB의 sensor_gps 0번과 1번 인스턴스로 조용히 밀어 넣는다. 물리적인 컴포트(COM Port) 지정이 사라지고 네트워킹의 추상화 계층이 모든 복잡성을 삼켜버리는 진보된 토폴로지다.

결과적으로 듀얼 GPS 환경 구축은 ’어떤 물리적 파이프(UART vs CAN)를 깔 것인가’에 대한 하드웨어적 결단과, 이 파이프에 드라이버 소프트웨어를 바인딩(Binding)하는 파라미터 매핑(Parameter Mapping) 지식이 결합할 때 비로소 완성된다.