본문 바로가기
기술보고서

대형 언어 모델 탑재 기반 무인기 자율 임무 및 경로 계획 통합 시스템과 양자화 최적화 분석

by 파서스에어로스페이스 2026. 8. 15.

서론: 물리적 AI와 무인기 제어 패러다임의 진화

현대의 무인 항공기(UAV) 및 드론 기술은 단순한 원격 조종 기기를 넘어 정찰, 인프라 점검, 물류 배송 등 다각화된 산업 분야에서 필수적인 자율 비행 로봇으로 자리 잡고 있다. 전통적인 무인기 제어 시스템은 사전에 정의된 알고리즘과 결정론적인 상태 기계(State Machine)에 의존하여 비행 경로를 계획하고 장애물을 회피해 왔다1. 그러나 이러한 방식은 환경의 동적 변화나 예상치 못한 상황에 직면했을 때 유연하게 대처하기 어렵다는 한계를 내포한다. 최근 이러한 한계를 극복하기 위해 대형 언어 모델(Large Language Model, LLM)과 비전-언어 모델(Vision-Language Model, VLM)을 드론의 제어 시스템에 통합하려는 '물리적 AI(Physical AI)' 패러다임이 대두되고 있다2.

 

드론에 LLM을 통합하면 운영자는 복잡한 프로그래밍 언어나 지상 통제국(Ground Control Station)의 인터페이스 대신, 자연어 명령을 통해 직관적으로 드론과 상호작용(Human-UAV Interaction)할 수 있다4. 모델은 입력된 자연어를 분석하여 임무를 이해하고, 카메라를 비롯한 센서 데이터를 시각적 토큰으로 변환해 상황을 인식하며, 최종적으로 실행 가능한 이동 경로와 동작 명령을 생성하는 자율 에이전트(Autonomous Agent) 역할을 수행한다5. 특히 Qwen2-VL이나 SmolVLM과 같은 최신 멀티모달 모델은 시각적 입력과 텍스트를 동시에 처리하여 실시간으로 목표물을 식별하고 경로를 동적으로 수정하는 강력한 추론 능력을 입증하였다5.

 

하지만 고성능 LLM을 실제 드론에 장착하여 운용하는 과정에는 거대한 기술적 장벽이 존재한다. 클라우드 기반의 API를 활용하는 방식은 데이터 처리 능력 면에서 우수하나, 네트워크 지연(Latency)과 통신 단절(Dead zone)에 취약하여 실시간 응답성이 생명인 비행 제어 환경에서는 치명적인 안전 위험을 초래할 수 있다8. 따라서 오프라인 상태에서도 모델이 독립적으로 작동할 수 있도록 드론에 내장된 엣지(Edge) 컴퓨터에서 LLM을 로컬로 추론(Inference)하는 기체 탑재형(On-board) 접근법이 요구된다2.

 

문제는 수십억 개의 파라미터(Parameter)를 가진 LLM이 요구하는 막대한 메모리와 연산량이다. 드론은 이륙 중량과 배터리 전력의 엄격한 제약을 받으므로 고성능 데스크톱 GPU를 탑재하는 것은 불가능하다10. 성능이 제한된 소형 임베디드 기기에서 LLM을 실시간으로 구동하기 위해서는 연산 속도 확보가 절대적이다. 이로 인해 모델의 크기를 대폭 줄이면서도 추론 성능의 저하를 최소화하는 '양자화(Quantization)' 기술과, 하드웨어 자원을 극도로 효율화하는 미들웨어 설계가 연구의 핵심 화두로 부상했다12. 본 보고서는 드론에 LLM을 장착하여 자율 임무 계획, 경로 최적화, 상황 인식을 구현하고자 할 때 직면하는 하드웨어 제약, 양자화 기법의 종류와 선택 기준, 미들웨어 아키텍처, 그리고 실제 장착 및 구현을 위한 단계별 실무 가이드를 심층적으로 분석한다.

 

임베디드 엣지 하드웨어 사양 및 구조적 한계 분석

자율 비행 드론에 탑재할 수 있는 컴퓨팅 하드웨어는 엄격한 크기, 무게, 전력(SWaP) 요구사항을 충족해야 한다. 이러한 제약 속에서 AI 연산 가속을 지원하는 최적의 솔루션으로 NVIDIA Jetson Orin 시리즈가 업계의 표준으로 자리 잡았다14. 특히 Jetson Orin Nano와 Orin NX 라인업은 엣지 환경에 특화된 전력 대비 성능을 제공한다.

 

통합 메모리 아키텍처와 대역폭의 중요성

일반적인 워크스테이션 환경에서 LLM 추론은 CPU의 시스템 RAM과 GPU의 비디오 RAM(VRAM)이 분리된 구조를 갖는다. 이러한 구조에서는 모델의 가중치나 데이터를 VRAM으로 전송하는 과정에서 PCIe 버스의 대역폭 병목 현상이 발생한다16. 반면, Jetson Orin 시리즈는 CPU, GPU(Ampere 아키텍처), NPU가 단일 LPDDR5 물리적 메모리를 공유하는 통합 메모리 아키텍처(Unified Memory Architecture)를 채택하고 있다16. 이는 모델 가중치를 스토리지에서 시스템 메모리로 불러오기만 하면 GPU가 복사 오버헤드 없이 직접 데이터에 접근(Zero-copy)할 수 있게 하여, VRAM 용량 부족으로 인해 구동조차 불가능했던 수 GB 크기의 모델을 엣지 기기에서 실행할 수 있는 원동력이 된다16.

 

언어 모델의 텍스트 생성(Decoding) 속도는 연산 능력(FLOPs)보다는 메모리 대역폭(Memory Bandwidth)에 의해 결정된다16. 토큰을 하나 생성할 때마다 모델의 전체 가중치 파라미터를 메모리에서 프로세서로 이동시켜야 하기 때문이다. 최근 발표된 Jetson Orin Nano Super 모드의 경우 메모리 대역폭이 102 GB/s로 상향 조정되었고, 연산 성능은 67 TOPS 수준으로 향상되었다14.

 

이론적 토큰 생성 속도는 메모리 대역폭을 모델의 압축된 메모리 크기로 나눈 값에 근사한다. 예를 들어, 가중치 크기가 4GB인 양자화된 8B 모델(Llama 3.1 8B 등)을 Orin Nano Super에서 구동할 경우 이론적으로 초당 약 25토큰 생성이 가능하나, 실제로는 ROS 2 통신, 영상 캡처 파이프라인, 객체 인식(YOLO 등) 네트워크와 대역폭을 공유해야 하므로 실제 추론 속도는 초당 10~15토큰 내외로 관측된다16. 이 수준의 생성 속도는 복잡한 자율 임무 계획과 경로 생성 에이전트를 실시간으로 작동시키기에 충분한 기반이 된다.

 

통합 메모리 환경의 메모리 병목 현상 (OOM)

8GB 또는 16GB의 메모리를 가진 Jetson 디바이스에서 LLM을 구동할 때 가장 빈번하게 발생하는 오류는 메모리 고갈(Out of Memory, OOM)이다. 통합 메모리의 맹점은 전체 시스템이 하나의 메모리 풀을 놓고 경쟁한다는 데 있다21. 8GB 환경에서 운영체제와 백그라운드 프로세스가 기본적으로 1.5~2GB를 점유하고, 드론 비행 제어를 위한 ROS 2 미들웨어 노드와 카메라 스트리밍 프로세스가 약 1GB를 추가로 차지한다면, LLM 모델 가중치와 런타임 활성화(Activation)를 위해 남겨진 여유 공간은 4~5GB에 불과하다23.

 

특히 LLM 추론 시 입력된 문맥과 이전 출력의 상태를 저장하는 KV 캐시(Key-Value Cache)는 입력 프롬프트 길이가 길어짐에 따라 선형적으로 증가한다16. 상황 인식을 위해 다수의 이미지 토큰을 입력받거나 복잡한 시스템 지시문을 포함할 경우, KV 캐시만으로도 수 GB의 메모리를 소모하여 시스템 다운이나 극심한 스래싱(Thrashing)을 유발할 수 있다23. 따라서 모델 가중치의 크기를 극단적으로 줄이면서도 성능을 방어할 수 있는 고도의 양자화 기술 도입은 필수 불가결하다.

 

전자기 간섭(EMI)과 센서 교란의 물리적 한계

실제 비행 기체에 Jetson 임베디드 보드를 통합할 때 시스템 안정성을 위협하는 또 다른 요인은 전자기 간섭(EMI)이다. 고주파수로 작동하는 CPU, GPU, 그리고 USB 3.0 포트의 데이터 통신은 임의의 구형파(Square wave)를 생성하며, 이 신호의 고조파(Harmonics)는 1.2GHz에서 1.5GHz 대역에 광범위한 RF 노이즈를 방출한다24. 이 노이즈 대역은 드론 자율 주행의 핵심인 GPS L1 대역(1.575GHz)과 정확히 겹친다25.

 

현장 테스트 사례들을 종합하면, 임베디드 보드에 전원이 인가되는 즉시 GPS 모듈이 모든 위성 신호를 상실하고 위치 추정이 불가능해지는 현상이 빈번하게 발생한다24. 이를 방지하기 위해서는 전기적, 물리적 차폐 조치가 선행되어야 한다. 먼저, 비행 제어기(Pixhawk 등)와 Jetson 보드의 전원을 물리적으로 분리하고, 전원 인가 라인에 페라이트 비드(Ferrite bead)나 커패시터를 활용한 저역 통과 필터(Low-pass filter)를 장착하여 전원 노이즈 전이를 차단해야 한다24. 아울러 Jetson 보드 전체와 데이터 통신선(UART 및 USB 케이블)을 구리 테이프나 전문 EMI 흡수 필름으로 감싸 접지(Grounding) 처리하고, 가급적 GPS 안테나와 임베디드 보드 간의 이격 거리를 최대화하는 설계가 요구된다27.

 

엣지 LLM 최적화 전략: 양자화(Quantization) 방법과 기술적 절충점

대형 언어 모델의 가중치는 일반적으로 16비트 부동소수점(FP16 또는 BF16)으로 표현된다. 양자화(Quantization)는 이를 8비트, 4비트, 심지어 2비트 이하의 낮은 정밀도 형식으로 압축하여 메모리 풋프린트와 연산 대역폭 요구량을 줄이는 기법이다12. 드론 엣지 환경에 가장 널리 사용되는 추론 프레임워크인 llama.cpp는 GGUF 포맷을 통해 다양한 수준의 양자화 기법을 지원한다29. 하지만 압축률이 높아질수록 모델의 지능적 능력과 응답의 정확성이 훼손되므로 모델 아키텍처와 양자화 방법론 간의 면밀한 조율이 필요하다.

 

양자화 방식론의 분류 및 특성

 

양자화 기법 그룹 주요 포맷 기술적 특성 및 장단점
레거시 선형 양자화 Q8_0, Q4_0, Q4_1 가중치를 일정한 블록(예: 256개)으로 묶고 동일한 스케일과 제로 포인트를 적용하는 가장 원시적인 방식. Q8_0은 원본 모델(FP16)과 거의 차이가 없는 무손실 품질을 보장하지만 압축률이 현저히 낮아 엣지 디바이스 적용에 부적합하다. 반면 Q4_0은 매우 빠르고 가벼우나, 가중치 분포의 특성을 반영하지 못해 품질 저하가 심각하다12.
K-양자화 (K-Quants) Q6_K, Q5_K_M, Q4_K_M 레거시 양자화를 개선하여, 256개 블록을 다시 8개의 서브 블록으로 세분화하고 2단계 스케일링을 수행함으로써 이상치(Outlier)를 효과적으로 보존한다. 꼬리표로 붙는 _M (Mixed) 기법은 중요도가 높은 어텐션(Attention) 레이어나 피드포워드(FFN) 텐서를 5비트 이상으로 유지하고 덜 중요한 텐서만 4비트로 낮추는 혼합 정밀도를 적용한다12.
중요도 기반 I-양자화 (I-Quants) IQ4_NL, IQ4_XS, IQ3_M 모델 가중치의 비선형성을 고려하고, 사전 계산된 중요도 매트릭스(imatrix)와 룩업 테이블(Codebook)을 활용해 정보 손실을 극한으로 억제한다. 파라미터별로 할당되는 비트 수를 최적화하여 압축률 대비 품질이 매우 우수하다. 특히 8B 이하의 소형 모델이나 MoE(Mixture of Experts) 모델에서 강력한 성능을 발휘하나, 복잡한 재구성 알고리즘으로 인해 K-양자화에 비해 연산 오버헤드가 다소 증가할 수 있다12.

 

 

수많은 양자화 포맷 중 드론 임무 환경에서 가장 추천되는 스위트 스팟(Sweet Spot)은 Q4_K_M과 IQ4_XS이다30. Q4_K_M은 원본 FP16 모델 대비 메모리 요구량을 약 70% 감소시키면서도, 단순한 지식 인출이나 논리적 규칙 적용 능력에서 성능 저하를 오차 범위 내로 방어한다30. 최신 기법인 IQ4_XS는 이보다도 모델 크기를 미세하게 더 줄여주므로 극단적인 VRAM 제약 환경에서 유용하다30.

 

양자화 한계점: 형식 준수(Format Compliance)의 붕괴

드론 시스템에서 LLM은 단순한 채팅 봇이 아니라 제어 신호를 생성하는 모듈이다. 생성된 텍스트는 드론 제어 프레임워크(ROS 2 등)가 파싱할 수 있도록 엄격한 JSON 구조나 MAVLink 호환 명령 규격을 준수해야 한다. 하지만 4비트 구조에서 3비트(Q3_K_M) 구간으로 양자화 깊이가 깊어질 때, 일반적인 언어 이해력 저하보다 앞서 '형식 준수 능력(Format Compliance)'의 급격한 붕괴가 선행된다는 점에 각별히 주의해야 한다34.

 

특정 지시어에 맞춰 JSON 형태로 목표 좌표와 임무 동작을 출력하도록 프롬프트를 구성하더라도, 3비트 이하로 과도하게 압축된 모델은 지시를 망각하고 산문 형태의 텍스트나 깨진 포맷을 반환하여 전체 시스템의 에러를 유발한다34. 파라미터가 8B 이하인 모델의 경우 이러한 열화 현상이 더욱 두드러지므로, 실시간 에이전트 시스템에서는 어떠한 경우에도 4비트 이하로의 양자화를 피해야 하며, 여건이 허락한다면 Q5_K_M 수준을 적용하는 것이 안전성 확보에 유리하다12.

 

지연 극복을 위한 투기적 해독(Speculative Decoding) 및 KV 캐시 최적화

LLM의 생성 지연을 돌파하기 위한 추가적인 최적화 기법으로 '투기적 해독(Speculative Decoding)'과 'KV 캐시 양자화'가 도입되고 있다. 투기적 해독은 모델을 단일 계층으로 실행하는 대신, 매우 작고 빠른 '초안 모델(Draft Model)'이 여러 개의 후보 토큰을 순차적으로 생성하고, 크기가 큰 '검증 모델(Target Model)'이 이를 병렬로 평가하여 수용 여부를 결정하는 시스템이다35. 이 방식은 엣지 하드웨어의 주된 병목인 I/O 접근 빈도를 획기적으로 줄임으로써 모델의 정확도 손실 없이 토큰 생성 속도를 1.5배에서 최대 3배 이상 향상시킬 수 있다35.

 

또한, 문맥 정보가 쌓이는 KV 캐시 버퍼 자체를 양자화하는 기법 역시 필수적이다. llama.cpp 프레임워크에서는 최신 토큰들을 고정밀도(FP16)로 보존하면서 오래된 과거 문맥의 캐시를 8비트(q8_0) 혹은 4비트(q4_0)로 압축하는 비대칭 정밀도 분배(Precision Tail) 기능이 지원된다38. 이 기법을 적용하면 Qwen이나 Gemma 같은 모델에서 긴 상황 인식 프롬프트를 입력할 때 발생하는 1~2GB 수준의 KV 캐시 점유량을 절반 가까이 줄일 수 있어 OOM을 원천적으로 차단할 수 있다38.

 

미들웨어 아키텍처: ROS 2와 PX4를 통한 언어-제어 체계 통합

대형 언어 모델이 임무 환경을 인식하고 목적지 좌표나 이동 명령을 텍스트로 산출하더라도, 이를 실제 모터의 회전 속도로 변환하는 물리적 제어 시스템과의 매개체가 요구된다. 드론 운영 환경에서는 비행 제어 스택인 PX4 Autopilot과 로봇 운영체제인 ROS 2 간의 결합 아키텍처가 이 역할을 수행한다5.

 

통신 프로토콜의 패러다임 변화: MAVROS에서 uXRCE-DDS로

전통적인 ROS 1 시스템에서는 MAVLink 프로토콜을 중간에서 가로채 ROS 토픽으로 변환하는 MAVROS 노드가 브리지 역할을 담당했다41. 하지만 MAVROS는 별도의 번역 계층을 거치며 오버헤드와 통신 지연(Latency)을 유발하며, 네트워크 설정이 복잡하다는 태생적 한계를 지녔다42.

 

최근 PX4 v1.14 릴리스와 ROS 2 Humble 버전 환경에서는 이를 대체하는 uXRCE-DDS (micro-ROS) 미들웨어 통합 아키텍처가 채택되고 있다40. uXRCE-DDS 구조는 컴패니언 컴퓨터(Jetson 보드)에 설치된 Agent 모듈이 비행 제어기의 마이크로컨트롤러 환경에서 작동하는 Client와 직접 데이터를 교환한다40. PX4 내부 시스템인 uORB 메시지 형식과 ROS 2 토픽 구조가 DDS 데이터 공간 내에서 1:1로 매핑되므로 중간 변환 과정이 생략되어 통신 지연이 획기적으로 개선된다40. 따라서 복잡한 장애물을 회피하거나 목표를 실시간으로 추적하는 빠른 피드백 제어에 압도적으로 유리하다.

 

PX4 오프보드(Offboard) 모드를 통한 궤적 제어

LLM 에이전트가 드론의 경로를 지휘하기 위해서는 PX4의 오프보드(Offboard) 모드를 활성화해야 한다. 오프보드 모드는 조종기(RC) 입력이나 자체 생성된 웨이포인트 대신, ROS 2 기반의 외부 컴패니언 컴퓨터에서 전송하는 셋포인트(Setpoint)에 따라 기체가 움직이도록 권한을 이양하는 모드다44.

안전 확보 메커니즘에 따라 PX4는 컴패니언 컴퓨터로부터 최소 2Hz 이상의 속도로 제어 명령이 끊임없이 도착해야만 오프보드 모드 진입을 허가하며, 통신이 중단되면 즉각적으로 안전 프로토콜(Fail-safe)을 발동하여 호버링하거나 귀환(RTH)한다44. 오프보드 제어를 위해서는 OffboardControlMode 메시지와 실제 궤적 정보인 TrajectorySetpoint 메시지를 쌍으로 전송해야 한다44.

OffboardControlMode 메시지는 위치, 속도, 가속도, 자세 제어 중 어떤 내부 PID 루프를 사용할지 결정하는 플래그 구조를 띠고 있다45. 제어에는 우선순위가 존재하는데, 예를 들어 위치 제어(position: true)와 속도 제어(velocity: false)가 설정된 상태에서는 TrajectorySetpoint의 위치 필드([x, y, z]) 값만을 추종한다46. 반면 LLM이 순수하게 속도만을 조절하여 충돌을 회피하고자 할 때는, 위치 플래그를 비활성화(false)하고 TrajectorySetpoint의 position 필드에 특수한 값인 NaN(Not a Number)을 삽입하여 속도 제어기(Velocity Controller)가 직접 동작하도록 해야 오류를 방지할 수 있다48.

 

요구 제어 유형 OffboardControlMode 설정 TrajectorySetpoint 설정 요구사항 적용 시나리오
위치 제어 (Position) position: true position 값 할당, velocity와 acceleration은 NaN이 아니면 피드포워드(Feedforward) 텀으로 작동 지정된 목표 좌표나 웨이포인트(Waypoint)로의 안정적인 이동46
속도 제어 (Velocity) position: false, velocity: true position 필드는 반드시 NaN으로 설정. velocity에 원하는 3축 속도 할당 동적 장애물 회피, 특정 방향으로의 순항 이동46

 

모델 컨텍스트 프로토콜 (MCP)을 통한 하드웨어 종속성 탈피

과거 LLM 제어 시스템은 모델의 언어 출력을 특정 제조사(PX4, Ardupilot 등)의 API로 해석하는 파서(Parser)를 하드코딩해야 했으나, 이를 해결하기 위한 기술로 모델 컨텍스트 프로토콜(MCP, Model Context Protocol)이 도입되고 있다2.

 

MCP는 AI 모델이 외부 시스템(데이터베이스, 도구, 제어 API)에 접근할 수 있도록 돕는 개방형 표준 아키텍처다. MCP 서버를 ROS 2와 MAVLink 미들웨어 상단에 배치하면, 서버는 드론의 이륙, 이동, 센서 읽기 기능 등을 표준화된 인터페이스(Tools)로 포장하여 LLM에 제공한다2. LLM은 사용자 지시를 받은 후, 스스로 판단하여 적합한 MCP 도구를 호출(Function Calling)하게 된다. 이러한 MCP 아키텍처는 모델 불가지성(Model-agnostic) 및 드론 불가지성(Drone-agnostic)을 확보하게 해주어, 어떠한 LLM(Llama, Qwen 등)이나 드론 기체를 연결하더라도 일관된 임무 수행이 가능하도록 보장한다2.

 

안전 가드레일(Safety Guardrail)과 환각 제어 메커니즘

LLM은 본질적으로 언어 확률 모델이므로 물리 법칙을 이해하지 못하며, 때로는 이동 불가능한 좌표나 비행 구역 이탈(지오펜스 초과) 명령을 내리는 환각(Hallucination) 오류를 범할 수 있다9. 때문에 LLM이 출력한 명령을 곧바로 비행 제어기에 전송하는 것은 시스템 붕괴를 초래한다9.

 

이러한 위협을 차단하기 위해 ROS 2 미들웨어 계층에는 엄격한 물리적 한계치를 강제하는 검증 모듈(Validation Layer/Safety Guardrail)이 필수적으로 포함되어야 한다9. LLM이 궤적을 제안하면, 검증 모듈은 동역학 모델(Kinematic constraints) 및 지오펜스를 기반으로 안전성을 1차 판별한다. 조건에 부합하지 않거나 파싱이 불가능한 포맷이 수신된 경우, 모듈은 LLM의 명령을 차단하고 기체를 호버링(Hovering) 상태로 전환하는 안전 폴백(Fallback) 조치를 취해야 한다9. 아울러 시스템 프롬프트(System Prompt)를 구성할 때 모델의 내장된 추론 기록을 무시하고 최신의 유효한 상태만 인식하게 하거나 샘플링 온도를 극단적으로 낮추는(Temperature: 0.2 이하) 프롬프트 엔지니어링을 병행하여 궤적 생성의 변동성을 억제해야 한다5.

 

실제 기체 장착 및 구현을 위한 튜토리얼 (Step-by-Step 가이드)

지금까지 논의한 개념을 바탕으로 NVIDIA Jetson Orin Nano, PX4 기반 비행 제어기, ROS 2 Humble 및 llama.cpp를 연동하여 자율 에이전트 드론을 구축하는 전체 과정의 가이드를 제시한다.

 

 

1단계: 하드웨어 결선, 포트 설정 및 노이즈 차단

기체 장착의 첫 단추는 신뢰성 있는 통신선의 확보다. 비행 환경의 진동에 취약한 USB 커넥터 대신, 물리적 결착이 강한 JST-GH 4핀 케이블을 이용하여 Pixhawk의 TELEM 1 (또는 TELEM 2) 포트와 Jetson의 GPIO UART 핀을 직접 교차 연결(Cross-wiring)한다 (TX는 RX로, RX는 TX로 연결)55.

 

물리적 연결 후 QGroundControl을 통해 비행 제어기에 접속하여 해당 포트의 매개변수를 조정한다. 예를 들어 TELEM 2에 연결했다면, MAV_1_CONFIG를 해당 포트로 매핑하고 고대역폭 데이터 전송을 위해 보드레이트 파라미터(SER_TEL2_BAUD)를 921600으로 설정한다56. Jetson 환경에서는 리눅스 장치 파일(주로 /dev/ttyTHS1)에 접근할 수 있도록 포트 권한을 해제한다(chmod a+rw /dev/ttyTHS1)55. 또한 앞서 언급한 전원 라인 분리 및 구리 테이프 차폐 작업을 통해 전자기 간섭(EMI)으로 인한 GPS 수신 불가 사태를 사전에 방지해야 한다24.

 

2단계: uXRCE-DDS Agent 빌드 및 실행

ROS 2(Humble) 생태계에서 PX4와 통신하기 위해 Micro-XRCE-DDS-Agent를 설치하고 실행한다55. Agent의 깃허브 저장소를 클론하여 CMake로 빌드한 후 시스템 데몬으로 실행하게 된다.

 

 

git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
cd Micro-XRCE-DDS-Agent && mkdir build && cd build
cmake .. && make
sudo ./MicroXRCEAgent serial --dev /dev/ttyTHS1 -b 921600

 

 

Agent가 정상적으로 통신을 시작하면 ROS 2 환경에서 ros2 topic list 명령어를 통해 fmu/in/trajectory_setpoint, fmu/in/offboard_control_mode와 같은 주제가 시스템 상에 노출됨을 확인할 수 있다47.

 

3단계: llama.cpp 기반 엣지 추론 환경 구성과 GBNF 스키마 적용

Jetson Orin Nano에 llama.cpp의 파이썬 바인딩 버전을 설치하여 모델 추론 엔진을 구축한다. 이 과정에서 GPU의 하드웨어 가속(CUDA)을 사용하려면 환경 변수에 빌드 플래그를 추가해야 한다18.

 

 

CMAKE_ARGS="-DGGML_CUDA=on" pip install llama-cpp-python --no-cache-dir

 

 

모델은 파라미터 수가 8B 이하이며 형식 준수 능력이 우수한 Qwen2.5 혹은 Llama 3.1 모델의 Q4_K_M GGUF 양자화 파일을 사용한다5.

LLM이 ROS 2 노드가 이해할 수 있는 정형화된 JSON만을 출력하도록 강제하기 위해 llama-cpp-python의 문법 기반 샘플링(Grammar-constrained sampling) 기능, 즉 GBNF(GGML BNF) 제어를 활용한다61. 아래와 같이 JSON 스키마를 선언하여 LLM에 전달하면, 모델은 불필요한 대화형 응답("예, 이동하겠습니다")을 생성하지 않고 지정된 형태의 명령어만 산출한다63.

 

 

 

target_schema = {
  "type": "object",
  "properties": {
    "action": {"type": "string", "enum": ["MOVE", "TURN", "HOVER"]},
    "x": {"type": "number"},
    "y": {"type": "number"},
    "z": {"type": "number"},
    "yaw": {"type": "number"}
  },
  "required": ["action", "x", "y", "z", "yaw"]
}

 

 

 

4단계: LLM 에이전트와 PX4 제어를 통합하는 ROS 2 퍼블리셔 노드 개발

최종적으로 Python을 이용해 ROS 2 노드 스크립트를 작성한다. 이 노드는 카메라 및 센서 정보(로봇의 위치)를 프롬프트화하여 LLM에 전달하고, LLM의 응답(JSON)을 파싱하여 PX4 셋포인트로 변환한다.

스크립트 내부에서는 안전을 보장하기 위해 10Hz 주기(100ms)의 타이머 콜백을 생성하고, 루프 안에서 두 가지 메시지를 끊임없이 동시 발행(Publish)해야 한다47.

  1. OffboardControlMode 발행: 위치 제어를 사용함을 명시한다 (msg.position = True; msg.velocity = False; msg.acceleration = False)47.
  2. TrajectorySetpoint 발행: LLM에서 파싱한 X, Y, Z 좌표와 궤적 방향(Yaw) 값을 TrajectorySetpoint 구조체에 대입하여 전송한다47.
  3. 만일 LLM의 응답이 도착하지 않거나 검증(지오펜스 초과 등)에 실패한 경우, 즉시 이전 루프의 좌표를 유지하거나 호버링 좌표를 대입하여 시스템을 폴백 상태로 유도한다9.

 

결론

대형 언어 모델과 무인기의 결합은 자율 주행의 유연성을 혁신적으로 높이지만, 통신 의존성과 실시간 제어의 한계를 극복하기 위해 엣지 기반의 로컬 시스템 아키텍처가 필수적이다1. 본 분석을 통해 도출된 핵심 시사점은 NVIDIA Jetson Orin Nano와 같은 통합 메모리 플랫폼에서는 가중치 크기와 추론 성능의 붕괴를 방어하는 Q4_K_M 수준의 양자화 기법 도입이 가장 이상적이라는 것이다30. 메모리 대역폭의 한계로 인한 토큰 생성 속도의 저하는 투기적 해독(Speculative Decoding) 및 KV 캐시 최적화 기술로 보완할 수 있다16.

 

아울러 실제 기체 제어 시 MAVROS의 지연성을 해소하기 위해 uXRCE-DDS 미들웨어를 도입하고, Model Context Protocol(MCP)을 기반으로 LLM과 드론의 기능을 통합하면 일관된 통신 인터페이스를 확립할 수 있다2. 본 보고서에서 제시한 EMI 차폐 등 하드웨어 설정과 ROS 2/PX4 소프트웨어 통합 지침을 준수한다면, 크기와 전력이 제한된 소형 무인기 환경에서도 자연어를 활용한 고도화된 자율 임무 및 경로 계획 에이전트 시스템을 성공적으로 구현할 수 있을 것이다.

 

 

참고 자료

  1. Large Language Model-Assisted UAV Operations and Communications: A Multifaceted Survey and Tutorial - ResearchGate, https://www.researchgate.net/publication/401133609_Large_Language_Model-Assisted_UAV_Operations_and_Communications_A_Multifaceted_Survey_and_Tutorial
  2. A Universal Large Language Model - Drone Command and Control Interface - arXiv, https://arxiv.org/html/2601.15486v2
  3. (PDF) A Universal Large Language Model -- Drone Command and Control Interface, https://www.researchgate.net/publication/400003214_A_Universal_Large_Language_Model_--_Drone_Command_and_Control_Interface
  4. Chat with UAV – Human-UAV Interaction Based on Large Language Models - arXiv, https://arxiv.org/html/2512.08145v1
  5. Taking Flight with Dialogue: Enabling Natural Language Control for PX4-based Drone Agent - arXiv, https://arxiv.org/html/2506.07509v1
  6. Qwen2-VL: Enhancing Vision-Language Model's Perception of the World at Any Resolution, https://arxiv.org/html/2409.12191v1
  7. Deploying VLM on Jetson (Complete Edge AI Guide), https://aiindia.ai/deploying-vlm-on-jetson/
  8. PALMBENCH:ACOMPREHENSIVE BENCHMARK OF COMPRESSED LARGE LANGUAGE MODELS ON MOBILE PLATFORMS - ICLR Proceedings, https://proceedings.iclr.cc/paper_files/paper/2025/file/a647405740b28a61311ac9cff28772e5-Paper-Conference.pdf
  9. LLM-Assisted Mission Planning, Predictive Coordination, and Adaptive Topology Management for Resilient USV Swarm Control Under Communication Denial - MDPI, https://www.mdpi.com/2504-446X/10/8/594
  10. Hardware Acceleration for Real-Time Wildfire Detection Onboard Drone Networks - arXiv, https://arxiv.org/pdf/2401.08105
  11. Drone Battery: Flight & Charging Durations — A Scholarly Examination of Energy Constraints in Unmanned Aerial Systems, https://www.tcbest.com.cn/blog/drone-battery-flight--charging-durations--a-scholarly-examination-of-energy-constraints-in-unmanned-
  12. (PDF) Quantization-Based Jailbreaking Vulnerability Analysis: A Study on Performance and Safety of the Llama3-8B-Instruct Model - ResearchGate, https://www.researchgate.net/publication/394188275_Quantization-based_Jailbreaking_Vulnerability_Analysis_A_Study_on_Performance_and_Safety_of_the_Llama3-8B-Instruct_Model
  13. Q-resafe: Assessing Safety Risks and Quantization-aware Safety Patching for Quantized Large Language Models - arXiv, https://arxiv.org/html/2506.20251v1
  14. NVIDIA Jetson Orin Nano Developer Kit Gets a “Super” Boost, https://developer.nvidia.com/blog/nvidia-jetson-orin-nano-developer-kit-gets-a-super-boost/
  15. Rethinking Small VLM Quantization: From Component-Wise Analysis to Hardware-Aware Edge Deployment - arXiv, https://arxiv.org/pdf/2607.08029
  16. genie-ai-runtime: a Jetson edge LLM inference engine that beats llama.cpp — designing for unified memory | Jared Frost, https://jared-hpc.com/posts/genie-ai-runtime-jetson-edge-llm/
  17. Fix llama.cpp OOM on Jetson Orin Nano Super (LFM2-VL) - Industrial Monitor Direct, https://industrialmonitordirect.com/blogs/knowledgebase/resolving-llamacpp-oom-on-jetson-orin-nano-super-with-lfm2-vl
  18. Running LLMs on Jetson Orin, llama.cpp, Ollama, and jetson-containers | ProventusNova, https://proventusnova.com/blog/llm-inference-jetson-orin-llamacpp-ollama/
  19. Jetson Orin Nano Super Developer Kit - NVIDIA, https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-orin/nano-super-developer-kit/
  20. Mellum2-12B-A2.5B-Instruct Q4_K_M on Jetson Orin Nano 8GB - #4 by John6666 - Models, https://discuss.huggingface.co/t/mellum2-12b-a2-5b-instruct-q4-k-m-on-jetson-orin-nano-8gb/176480/4
  21. Maximizing Memory Efficiency with Agent Skills to Run Bigger Models on NVIDIA Jetson, https://developer.nvidia.com/blog/maximizing-memory-efficiency-to-run-bigger-models-on-nvidia-jetson/
  22. Sometimes Painful but Promising: Feasibility and Trade-offs of On-Device Language Model Inference - arXiv, https://arxiv.org/html/2503.09114v2
  23. 8B Llama on 8GB Jetson: Breaking the Memory Wall for Edge LLMs | by ENERZAi - Medium, https://medium.com/@enerzai/8b-llama-on-8gb-jetson-breaking-the-memory-wall-for-edge-llms-2096f1499066
  24. Jetson Nano causes massive interference to GPS module beside it, https://forums.developer.nvidia.com/t/jetson-nano-causes-massive-interference-to-gps-module-beside-it/205208
  25. GPS Interference with high CPU usage - Jetson TX2 - NVIDIA Developer Forums, https://forums.developer.nvidia.com/t/gps-interference-with-high-cpu-usage/71143
  26. GPS self-jamming/EMI - Pixhawk - Dronecode Forum - PX4 Discuss, https://discuss.px4.io/t/gps-self-jamming-emi/7984
  27. Shield GPS from TX2 making noise - Jetson TX2 - NVIDIA Developer Forums, https://forums.developer.nvidia.com/t/shield-gps-from-tx2-making-noise/61299
  28. 2.4 GHz range cut due to Jetson RF noise · Issue #160 · NVIDIA-AI-IOT/redtail - GitHub, https://github.com/NVIDIA-AI-IOT/redtail/issues/160
  29. Benchmarking Large Language Model Inference on Limited-Resource Edge Systems, https://www.researchgate.net/publication/405892276_Benchmarking_Large_Language_Model_Inference_on_Limited-Resource_Edge_Systems
  30. GGUF quantization guide - Langur Monkey, https://tonisagrista.com/blog/2026/quantization/
  31. Do Qwen3.6 27B quantizations break the pelican? - Quesma Blog, https://quesma.com/blog/qwen-quantization-quality/
  32. DavidAU/Maximizing-Model-Performance-All-Quants-Types-And-Full-Precision-by-Samplers_Parameters - Hugging Face, https://huggingface.co/DavidAU/Maximizing-Model-Performance-All-Quants-Types-And-Full-Precision-by-Samplers_Parameters
  33. apex-quant/paper/APEX_Technical_Report.md at main - GitHub, https://github.com/mudler/apex-quant/blob/main/paper/APEX_Technical_Report.md
  34. The Quantization Underground: How a 4-Line Hack Taught AI Models to Forget Selectively, https://medium.com/@nicanadian/the-quantization-underground-how-a-4-line-hack-taught-ai-models-to-forget-selectively-ef61614ba8aa
  35. EdgeLLM: Fast On-device LLM Inference with Speculative Decoding - ResearchGate, https://www.researchgate.net/publication/387358329_EdgeLLM_Fast_On-device_LLM_Inference_with_Speculative_Decoding
  36. SLED: A Speculative LLM Decoding Framework for Efficient Edge Serving - arXiv, https://arxiv.org/html/2506.09397v4
  37. SLED: A Speculative LLM Decoding Framework for Efficient Edge Serving | VTechWorks, https://vtechworks.lib.vt.edu/server/api/core/bitstreams/2ee07c93-74cc-421d-88b7-54a8607aa648/content
  38. KV cache quantization benchmarks: 413 pairs tested on Qwen 3.6 27B, Gemma 4 31B. KLD with BeeLlama.cpp v0.4.0: KVarN 6-bit beats q8_0, precision tail 1024 dominates - Reddit, https://www.reddit.com/r/LocalLLaMA/comments/1vhaabz/kv_cache_quantization_benchmarks_413_pairs_tested/
  39. Building & Benchmarking: LLMs on a 16GB Jetson Orin NX for Hermes Agent, https://dnhkng.github.io/posts/jetson-orin-nx-vram-tuning/
  40. ROS 2 User Guide - PX4 Docs, https://docs.px4.io/main/en/ros2/user_guide
  41. Which should i use mavros or px4_ros_com - ROS 1 / ROS 2 - PX4 Discuss, https://discuss.px4.io/t/which-should-i-use-mavros-or-px4-ros-com/26129
  42. Latency Reduction and Packet Synchronization in Low-Resource Devices Connected by DDS Networks in Autonomous UAVs - MDPI, https://www.mdpi.com/1424-8220/23/22/9269
  43. uXRCE-DDS (PX4-ROS 2/DDS Bridge) | PX4 오토파일럿 사용자 설명서 (v1.14) - PX4 Docs, https://docs.px4.io/v1.14/ko/middleware/uxrce_dds
  44. Offboard Mode - PX4 User Guide - GitBook, https://px4.gitbook.io/px4-user-guide/flying/flight_modes/offboard
  45. 오프보드(Offboard) 모드 | PX4 Guide (main), https://docs.px4.io/main/ko/flight_modes/offboard
  46. 오프보드(Offboard) 모드 | PX4 오토파일럿 사용자 설명서 (v1.14), https://docs.px4.io/v1.14/ko/flight_modes/offboard
  47. PX4-user_guide/ko/ros2/offboard_control.md at main - GitHub, https://github.com/PX4/PX4-user_guide/blob/main/ko/ros2/offboard_control.md
  48. Offboard Control using ROS2. How to achieve velocity control? - PX4 Discussion Forum, https://discuss.px4.io/t/offboard-control-using-ros2-how-to-achieve-velocity-control/21875
  49. Offboard mode: velocity setpoint not working in PX4 + ROS2 + Gazebo simulation, https://discuss.px4.io/t/offboard-mode-velocity-setpoint-not-working-in-px4-ros2-gazebo-simulation/47608
  50. Issue with uORB message TrajectorySetponit - PX4 Autopilot - Dronecode Forum, <a href="https://discuss.px4.io/t/issue-wi