### 0.0.1 DroneCAN(UAVCAN) 프로토콜을 이용한 장거리/노이즈 강건성 노드(Node) 설계

### 0.0.1 DroneCAN(UAVCAN) 프로토콜을 이용한 장거리/노이즈 강건성 노드(Node) 설계

앞서 언급한 I2C와 Serial(UART) 방식은 모두 짧은 거리(30cm 이내)에서 통신하기 위해 설계된 싱글 엔디드(Single-Ended, 하나의 신호선과 GND) 물리 계층을 가진다. 기체가 커져서 다리 길이가 1m 에 달하는 대형 방제/물류 드론의 경우, 짐벌이나 바닥 끝에 달린 거리 센서의 신호 선형은 이미 통신선이 아니라 거대한 전자파 수신 안테나로 전락한다. 이를 타개하기 위한 궁극적인 엔지니어링 솔루션이 바로 DroneCAN(과거 UAVCAN) 프로토콜의 적용이다.

차동 신호(Differential Signaling) 물리 계층의 마법

CAN(Controller Area Network) 버스는 기존의 UART나 I2C와 달리 CAN_H(High)와 CAN_L(Low) 두 가닥의 선이 쌍(Twisted Pair)을 이루어 꼬여서 배선된다. 메인 보드에서 1 을 보낼 때 CAN_H3.5V 로 올리고 CAN_L1.5V 로 내린다.
만약 1m 짜리 선을 타고 가다가 고압 ESC 부근에서 +50V 급의 엄청난 전자파 스파이크 노이즈가 선을 때리더라도, 물리적으로 꼬여있는 두 선은 똑같이 +50V 씩 데미지를 받게 된다. 수신부의 CAN 트랜시버(Transceiver) 모듈은 두 선의 전위차(Difference) 만 연산(CAN_H - CAN_L)하기 때문에, 노이즈로 덧씌워진 공통 전압(Common Mode Noise)은 완벽히 소거되고 본래의 깨끗한 신호 전압만 복원된다.

거리 센서의 독립 체제화 (DroneCAN 노드 설계)

따라서 산업용 지형 맵핑(Terrain Following) 드론은 하단 라이다 모듈 자체에 작고 값싼 마이크로 컨트롤러(예: STM32G4)와 CAN 트랜시버 칩을 덧붙여 일종의 ’독립된 지능형 통신 노드(Node)’로 개조한다.

  1. 라이다 센서 바로 코앞에서 I2C/UART로 읽어들여 에러 없는 거리 데이터 숫자로 번역(Parsing)한다.
  2. 이 숫자를 DroneCAN 규격의 메시지 포맷(예: uavcan.equipment.ahrs.RawIMU 구조에 대응되는 센서 메시지 uavcan.equipment.range_sensor.Measurement) 구조체로 패킹(Packing)한다.
  3. 오류가 절대 파고들 수 없는 차동 CAN 버스 통신을 통해 선 길이 10미터 앞의 메인 Flight Controller로 초고속(1Mbps)으로 쏘아 보낸다.

PX4 메인 프로세서 측에서는 src/modules/uavcan 모듈 데몬(Daemon)이 이 CAN 버스를 모니터링하다가 측정 메시지가 도착하면 이를 즉각 distance_sensor uORB 토픽으로 뿌려준다. 가장 완벽한 EMI 방어 차계막이자 상업용 대형 무인기의 교과서적인 센서 버스 설계다.