Booil Jung

BeagleBone AI-64 기반 PX4 비행 제어 컴퓨터 개발 방안에 대한 심층 고찰

전통적인 드론 시스템의 핵심인 비행 제어 컴퓨터(Flight Controller, FC)는 주로 마이크로컨트롤러(MCU)를 기반으로 설계되었다. 이러한 MCU 기반 FC는 안정적인 비행 제어라는 본연의 임무에 충실하지만, 복잡한 자율 비행 알고리즘, 실시간 인공지능(AI) 추론, 다중 센서 데이터의 정교한 융합과 같은 고수준의 연산을 수행하기에는 컴퓨팅 성능의 명백한 한계를 드러낸다. 이 한계를 극복하기 위해 업계에서는 실시간 제어를 담당하는 FC와 고수준 연산을 처리하는 컴패니언 컴퓨터(Companion Computer)를 분리하는 이중 보드 아키텍처가 보편적으로 채택되어 왔다.1 그러나 이러한 구조는 시스템의 물리적 부피와 무게를 증가시킬 뿐만 아니라, 두 보드 간의 통신 병목으로 인한 지연 시간(latency) 발생, 전력 소모 증가, 그리고 전체 시스템의 복잡성 증대라는 새로운 문제들을 야기한다.

이러한 맥락에서, BeagleBone AI-64와 같은 고성능 이종(heterogeneous) 시스템 온 칩(SoC) 기반의 단일 보드 컴퓨터(SBC)는 새로운 가능성을 제시한다. 이 보드들은 강력한 애플리케이션 프로세서(AP), 실시간 코프로세서, 그리고 AI 가속기를 단일 칩에 통합함으로써, 기존의 분산된 두 역할을 하나의 플랫폼으로 통합하여 차세대 드론 아키텍처를 구현할 강력한 잠재력을 지닌다.4 이는 단순히 하드웨어를 통합하는 것을 넘어, 각기 다른 특성을 가진 코어들이 고속 내부 버스를 통해 데이터를 유기적으로 공유하며 동작하는 새로운 패러다임으로의 전환을 의미한다. AI 기반의 상황 인식, 동적 경로 계획, 실시간 궤적 추종, 그리고 정밀 모터 제어가 하나의 보드 내에서 긴밀하게 결합될 수 있는 ‘통합 지능형 제어’ 시스템의 등장은 외부 통신 병목 현상을 원천적으로 제거하고, 전력 효율을 극대화하며, 시스템 전체의 반응성을 획기적으로 향상시킬 수 있다.

BeagleBone AI-64의 강력한 성능에도 불구하고, 이를 드론의 단독 FC로 활용하기 위해서는 근본적인 기술적 난제를 해결해야 한다. 보드의 주 프로세서인 Arm Cortex-A72 코어에서 동작하는 Debian과 같은 범용 운영체제(General-Purpose Operating System, GPOS)는 본질적으로 평균 처리량(average throughput)을 높이는 데 최적화되어 있어, 스케줄링의 비결정성(non-determinism)을 내포한다. 즉, 특정 작업의 실행 시간이 예측 불가능하며, 예기치 않은 지연이 발생할 수 있다.7 반면, 드론의 비행 제어, 특히 자세를 안정시키는 내부 루프는 수백 헤르츠(Hz)에 달하는 주기로 오차 없이 정밀하게 실행되어야 하는 경성 실시간(hard real-time) 요구사항을 갖는다.8 이 제어 루프의 주기를 단 한 번이라도 놓치거나 실행 시간의 변동성(jitter)이 클 경우, 기체는 불안정해지거나 최악의 경우 추락에 이를 수 있다.

따라서 본 고찰의 핵심 기술 문제는 ‘GPOS의 유연성 및 고성능’과 ‘비행 제어의 경성 실시간성’이라는 상충하는 두 요구사항 간의 기술적 간극을 BeagleBone AI-64라는 단일 플랫폼 내에서 어떻게 효과적으로 메울 것인가에 있다.

본 보고서는 BeagleBone AI-64의 독특한 이종 멀티코어 아키텍처를 심층적으로 분석하고, 세계적으로 가장 널리 사용되는 오픈소스 오토파일럿인 PX4를 이 플랫폼에 성공적으로 포팅하기 위한 구체적인 방안을 제시하는 것을 목적으로 한다. 이를 위해, PX4의 실시간성 요구사항을 충족시키기 위한 다각적인 접근법을 고찰하고, 각 방안의 기술적 타당성과 장단점을 비교 분석한다.

궁극적으로 본 보고서는 Cortex-A72, Cortex-R5F, 그리고 Programmable Real-Time Unit (PRU) 등 이종 코어들의 역할을 최적으로 분담하는 하이브리드 시스템 아키텍처를 제안한다. 또한, 개발 과정 전반에 걸친 기술적 로드맵을 제시하고, 보드에 내장된 AI 가속기와 로봇 운영체제(ROS2)를 연동하여 단순한 비행 제어를 넘어선 지능형 자율 비행 시스템으로 확장하는 방안까지 탐구한다. 이 보고서는 기존 MCU 기반 FC의 한계를 넘어 고성능 컴퓨팅과 AI를 비행 제어에 직접 통합하고자 하는 고급 엔지니어와 연구자들에게 실질적인 기술적 지침을 제공할 것이다.

BeagleBone AI-64를 드론의 FC로 활용하기 위한 타당성을 평가하기 위해서는 먼저 그 핵심 두뇌인 Texas Instruments (TI) TDA4VM SoC의 아키텍처를 비행 제어의 관점에서 깊이 있게 이해해야 한다. TDA4VM은 본래 자동차의 첨단 운전자 보조 시스템(ADAS)이나 산업용 로보틱스와 같이 높은 신뢰성과 저지연 처리가 요구되는 애플리케이션을 위해 설계된 K3 멀티코어 아키텍처 플랫폼에 기반한다.10 이 SoC의 가장 큰 특징은 단일 칩 내에 목적이 다른 여러 종류의 프로세싱 코어를 집적한 이종 멀티코어 구조라는 점이다.

TDA4VM SoC는 단순히 연산 속도가 빠른 코어를 여러 개 모아놓은 것이 아니라, 각기 다른 특성과 강점을 지닌 코어들을 유기적으로 결합하여 시스템 전체의 효율과 성능을 극대화하도록 설계되었다. 이는 개발자에게 단순한 선택지를 제공하는 것을 넘어, “고수준 작업은 AP에서, 실시간 제어는 실시간 코어에서, 정밀 I/O는 전용 프로세서에서 처리하라”는 명확한 설계 지침을 제시한다. 이 설계 철학을 이해하고 따르는 것이 성공적인 FC 개발의 첫걸음이다.

BeagleBone AI-64는 강력한 내부 프로세싱 능력과 더불어, 다양한 외부 센서 및 액추에이터와 연결되기 위한 풍부한 I/O 인터페이스를 제공한다.

아래 표는 비행 제어 컴퓨터 개발자의 관점에서 BeagleBone AI-64의 핵심 기술 사양을 요약한 것이다.

Table 1: BeagleBone AI-64 핵심 기술 사양 (비행 제어 관점)

구성 요소 (Component) 세부 사양 (Specification) 드론 FC에서의 주요 역할 (Primary Role in Drone FC) 관련 소스 (Source Snippets)
APU (Application Processing Unit) Dual-core Arm Cortex-A72 @ 2.0GHz 고수준 항법, 임무 계획, ROS 노드, GCS 통신 13
RT-MCU (Real-Time MCU) 6x Arm Cortex-R5F @ 1.0GHz 핵심 제어 루프, 센서 융합 (RTOS 환경) 11
I/O Processor 2x PRU-ICSSG (Programmable Real-Time Unit) 정밀 PWM/DShot 생성, RC 신호 디코딩 8
AI Accelerator C7x DSP + MMA (최대 8 TOPS) 실시간 객체 탐지, 시각적 SLAM 4
Memory/Storage 4GB LPDDR4, 16GB eMMC, MicroSD 슬롯 OS, 애플리케이션, 비행 로그, 지도 데이터 저장 15
Key Interfaces I2C, SPI, UART, ePWM, eQEP, CAN, CSI, DSI IMU/GPS/센서 연결, 모터/서보 제어, 카메라/디스플레이 연결 10

BeagleBone AI-64라는 강력한 하드웨어 플랫폼에 생명을 불어넣기 위해서는 그에 걸맞은 정교한 소프트웨어, 즉 오토파일럿 스택이 필요하다. PX4는 모듈화된 설계와 플랫폼 독립성으로 인해 이러한 고성능 보드에 이식하기에 가장 적합한 오픈소스 오토파일럿 중 하나이다.25

PX4의 아키텍처는 ‘반응형 시스템(reactive system)’이라는 설계 철학에 기반한다. 이는 시스템의 모든 기능이 독립적이고 교체 가능한 컴포넌트(모듈)로 분리되어 있으며, 이들 간의 통신이 비동기식 메시지 패싱을 통해 이루어짐을 의미한다.26

PX4는 이미 다수의 Linux 기반 SBC를 지원하고 있으며, 이는 BeagleBone AI-64 포팅 작업에 중요한 선례가 된다. 공식적으로 또는 실험적으로 지원되는 보드 목록에는 Raspberry Pi (Navio2, PilotPi 쉴드 사용)와 BeagleBone Blue가 포함되어 있다.31 이러한 기존 포팅 사례의 소스 코드는 새로운 보드 지원 계층(Board Support Layer)을 개발하는 데 있어 매우 유용한 참조 자료가 된다.

PX4 포팅 가이드에 따르면, Linux 기반 보드의 포팅은 NuttX 기반 보드(예: Pixhawk 시리즈)의 포팅과 중요한 차이점을 보인다. NuttX의 경우, PX4 빌드 프로세스가 운영체제 자체를 포함하여 전체 펌웨어 이미지를 생성한다. 반면, Linux 보드의 경우 PX4는 이미 보드에 설치된 Linux 이미지를 전제로 하며, OS와 커널의 구성은 PX4의 빌드 범위에 포함되지 않는다.30 대신, 포팅 개발자는 해당 Linux 시스템이 I2C, SPI 등의 버스를 통해 센서에 접근할 수 있도록 필요한 커널 드라이버나 userspace I/O 라이브러리를 사전에 준비해야 할 책임이 있다.

이러한 PX4의 접근 방식은 개발자에게 더 큰 유연성을 제공하는 동시에, 더 큰 책임을 부여한다. NuttX 기반 FC에서는 PX4 프레임워크가 실시간 스케줄링을 포함한 저수준 제어를 상당 부분 담당한다. 그러나 Linux 환경에서 PX4는 자신을 하나의 ‘사용자 공간 애플리케이션’으로 간주하고, 비행 제어에 필수적인 ‘실시간성 보장’이라는 중대한 책임을 운영체제, 즉 포팅 개발자에게 전가한다. 따라서 BeagleBone AI-64에 PX4를 성공적으로 포팅하는 것은 단순히 코드를 컴파일하고 실행하는 것을 넘어, Linux 시스템 자체를 비행 제어에 적합한 ‘실시간 시스템’으로 개조하는 심도 있는 엔지니어링 과제를 포함한다. 이 점을 인지하지 못하면, 프로젝트는 겉보기에는 동작하는 것처럼 보이지만 실제 비행에서는 예측 불가능한 지연으로 인해 실패할 확률이 매우 높다.

BeagleBone AI-64를 새로운 PX4 타겟으로 추가하기 위해서는 다음과 같은 체계적인 절차를 따라야 한다. 기존의 beaglebone/blue 33나 raspberrypi/pilotpi 35 디렉토리 구조를 참고하여 진행한다.

  1. 보드 설정 파일 디렉토리 생성: PX4 소스 코드의 최상위 디렉토리에서 boards/beaglebone/ai-64/ 와 같은 새로운 디렉토리 구조를 생성한다. 이 디렉토리는 BeagleBone AI-64와 관련된 모든 설정 파일들을 담는 공간이 된다.

  2. 빌드 설정 파일 (.px4board) 작성: boards/beaglebone/ai-64/ 디렉토리 내에 beaglebone_ai64_default.px4board 파일을 생성한다. 이 파일은 보드의 기본 정보를 정의하고, PX4의 각 기능(GPS, Telemetry, RC 등)이 어떤 시리얼 포트(예: /dev/ttyS2, /dev/ttyS4)에 매핑되는지를 명시한다.36

  3. CMake 빌드 스크립트 추가: cmake/configs/ 디렉토리에 posix_beaglebone_ai64_default.cmake 파일을 추가한다. 이 스크립트는 make beaglebone_ai64_default 명령이 실행될 때 호출되며, AArch64 크로스 컴파일러 툴체인을 지정하고, 보드에 특화된 컴파일 옵션이나 라이브러리 링크 설정을 정의하는 역할을 한다.34

  4. 초기화 및 부팅 스크립트 (rcS) 구성: ROMFS/px4fmu_common/init.d/ 디렉토리에 위치한 rcS 파일은 PX4가 부팅될 때 실행되는 메인 셸 스크립트이다.29 이 스크립트를 직접 수정하거나, 보드별로 분기되는 새로운 스크립트(

    rc.board_sensors 등)를 생성하여 BeagleBone AI-64에 연결된 센서 드라이버(IMU, 기압계 등), PWM 출력 드라이버, 그리고 기타 필수 모듈들이 올바른 순서로 시작되도록 설정해야 한다.36 예를 들어,

    mpu9250 start -I /dev/i2c-1과 같은 명령을 통해 특정 I2C 버스에 연결된 IMU 드라이버를 실행시킬 수 있다.

  5. 보드별 설정 헤더 (board_config.h) 정의: boards/beaglebone/ai-64/src/ 디렉토리에 board_config.h 헤더 파일을 생성한다. 이 파일은 소프트웨어 코드 내에서 하드웨어에 종속적인 설정들을 정의하는 데 사용된다. 예를 들어, 보드의 상태를 표시하는 LED의 GPIO 핀 번호, 부저(buzzer) 핀, 전원 관리 관련 핀 등을 #define 지시어를 통해 상수로 정의한다.36

이러한 절차를 통해 PX4 빌드 시스템은 BeagleBone AI-64를 새로운 하드웨어 타겟으로 인식하고, 해당 보드에 맞는 실행 파일을 생성할 수 있게 된다. 그러나 이것은 포팅의 시작일 뿐이며, 진정한 도전은 다음 장에서 논의할 실시간 제어 구현에 있다.

앞서 언급했듯이, 표준 Linux 커널은 드론 비행 제어와 같은 경성 실시간 애플리케이션에 내재적인 한계를 가진다. 커널은 시스템의 평균적인 응답성과 전체 처리량을 극대화하도록 설계되었기 때문에, 개별 태스크의 실행 완료 시간을 보장하지 않는다.7 높은 우선순위를 가진 실시간 태스크라 할지라도, 커널 내부의 긴 임계 구역(critical section) 처리, 다른 디바이스 드라이버의 인터럽트 서비스 루틴(ISR) 실행, 또는 페이지 폴트(page fault)와 같은 예측 불가능한 이벤트로 인해 수 밀리초(ms)에 달하는 지연(latency)을 겪을 수 있다.38

드론의 자세 제어 루프는 일반적으로 250Hz에서 400Hz(주기 4ms ~ 2.5ms)로 동작하며, 이는 매 주기마다 센서 데이터를 읽고, 상태를 추정하며, 모터 출력을 계산하여 업데이트해야 함을 의미한다. 이 과정에서 발생하는 지연 시간의 최대값(worst-case execution time, WCET)과 변동성(jitter)이 엄격하게 제어되지 않으면, 제어 루프가 불안정해져 기체의 진동을 유발하거나 심각한 경우 제어 불능 상태에 빠져 추락으로 이어질 수 있다. 따라서 BeagleBone AI-64의 Cortex-A72 코어에서 PX4를 안정적으로 구동하기 위해서는, 표준 Linux의 비결정성 문제를 해결하고 예측 가능한 실시간성을 확보하는 것이 가장 중요한 기술적 과제이다. 이를 해결하기 위한 세 가지 주요 방안을 심층적으로 고찰한다.

가장 직접적이고 널리 알려진 접근법은 표준 Linux 커널을 실시간 커널로 변환하는 PREEMPT_RT 패치를 적용하는 것이다.

PREEMPT_RT가 해결할 수 없는 초정밀, 초저지연 I/O 요구사항을 해결하기 위한 최적의 솔루션은 TDA4VM에 내장된 PRU를 활용하는 것이다.

가장 높은 수준의 안정성과 결정성이 요구되는 시스템을 위해서는 Cortex-R5F 실시간 코어를 활용하는 방안을 고려할 수 있다.

세 가지 방안을 각각 독립적으로 사용하는 것보다, 각 코어의 장점을 극대화하고 단점을 상호 보완하는 하이브리드 아키텍처를 구성하는 것이 가장 이상적인 해결책이다. 하나의 방식에만 의존하는 것은 비효율적이거나, 불안정하거나, 혹은 지나치게 복잡한 시스템을 낳을 수 있다.

아래 표는 각 실시간 제어 구현 방안의 특징을 비교 분석한 것이다.

Table 2: 실시간 제어 구현 방안 비교 분석

구현 방안 (Method) 핵심 기술 (Core Technology) 장점 (Pros) 단점 (Cons) 최적 적용 분야 (Best Use-Case)
PREEMPT_RT 커널 Linux 커널 패치, 스케줄러 개선 상대적으로 구현 용이, 기존 Linux 앱/라이브러리와 높은 호환성 완벽한 결정성 보장 불가, 부실한 드라이버에 취약, 초정밀 타이밍 불가 고수준 항법, 임무 계획, ROS 노드 등 연성 실시간(soft real-time) 작업
PRU 활용 독립적인 200MHz RISC 코어, 단일 사이클 I/O 나노초 단위 정밀도, 완벽한 결정성, 경성 실시간 I/O 보장 별도 펌웨어 개발 필요, 제한된 메모리 및 연산 능력, 복잡한 알고리즘 부적합 PWM/DShot 신호 생성, RC 프로토콜 디코딩, QEP 등 정밀 I/O
Cortex-R5F 활용 고신뢰성 실시간 MCU 코어, TCM Linux와 완벽히 분리된 결정론적 환경, 높은 신뢰성 및 기능 안전 개발 복잡도 매우 높음, RTOS 포팅 및 이종 코어 간 통신 인터페이스 구현 필요 핵심 비행 제어 루프(자세/위치 제어), 센서 융합(EKF)

이 분석을 통해, BeagleBone AI-64의 잠재력을 최대한 활용하기 위해서는 PREEMPT_RT 커널을 기본으로 채택하고, 정밀 I/O는 PRU에 위임하는 하이브리드 방식이 가장 현실적이고 효율적인 출발점임을 알 수 있다. Cortex-R5F의 활용은 프로젝트의 요구사항과 가용 리소스에 따라 추후에 고려할 수 있는 고급 확장 옵션으로 남겨둘 수 있다.

이론적인 아키텍처 설계를 마쳤다면, 다음 단계는 이를 실제로 구현하기 위한 시스템 통합과 효율적인 개발 환경을 구축하는 것이다. 이 과정은 PX4 드라이버 개발, 크로스 컴파일 환경 설정, 그리고 타겟 보드에서의 자동 실행 설정으로 구성된다.

PX4 프레임워크에 새로운 하드웨어를 통합하기 위해서는 해당 하드웨어와 통신하고, 그 결과를 표준화된 uORB 토픽으로 발행하는 드라이버를 개발해야 한다.55 BeagleBone AI-64 기반 FC를 위해서는 최소한 IMU 센서 드라이버와 PWM 출력 드라이버가 필수적이다.

개발 작업은 일반적으로 고성능의 x86_64 아키텍처 PC에서 이루어지지만, 최종 실행 파일은 BeagleBone AI-64의 Arm AArch64 아키텍처에서 동작해야 한다. 따라서 크로스 컴파일(cross-compilation) 환경 구축은 필수적이다.57

개발용 PC가 Ubuntu Linux 환경이라면, apt 패키지 관리자를 통해 AArch64 크로스 컴파일 툴체인을 간단히 설치할 수 있다.

sudo apt update
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

59

툴체인 설치 후, PX4의 빌드 시스템인 CMake에게 타겟 보드를 빌드할 때 이 크로스 컴파일러를 사용하도록 알려주어야 한다. 이는 앞서 생성한 cmake/configs/posix_beaglebone_ai64_default.cmake 파일 내에 툴체인 경로와 타겟 시스템 정보를 명시함으로써 이루어진다.37 올바르게 설정되었다면, 개발자는 PC에서 make beaglebone_ai64_default 명령을 실행하는 것만으로 BeagleBone AI-64에서 실행 가능한 PX4 바이너리를 생성할 수 있다.

개발된 커스텀 Linux 커널(PREEMPT_RT 패치 적용)과 PX4 애플리케이션을 타겟 보드에 배포하고, 시스템 부팅 시 자동으로 실행되도록 설정해야 한다.

이러한 개발 환경과 배포 프로세스를 구축하는 과정에서, 개발 워크플로우의 효율성은 프로젝트의 성패에 큰 영향을 미친다. BeagleBone AI-64와 같이 커널, PRU 펌웨어, PX4 애플리케이션 등 여러 소프트웨어 구성요소를 가진 복잡한 시스템에서는 이들 중 하나만 수정해도 크로스 컴파일, 바이너리 패키징, 타겟 보드로의 전송(scp 또는 rsync 사용), 서비스 재시작 또는 재부팅, 그리고 테스트라는 긴 과정을 반복해야 한다. 특히 커널이나 부트로더 수정 시에는 eMMC 플래싱이 필요할 수 있어 이 ‘컴파일-배포-테스트’ 사이클의 시간 소요가 매우 커질 수 있다.63 따라서, 단순히 툴체인을 설치하는 것을 넘어, 이 반복적인 사이클을 최대한 자동화하고 시간을 단축하는 스크립트(예: make upload 명령 최적화, rsync를 이용한 빠른 증분 동기화, ssh를 통한 원격 서비스 재시작 자동화)를 구축하는 것이 프로젝트 생산성을 결정짓는 핵심적인 요소가 된다. 이는 PX4가 BeagleBone Blue와 같은 기존 보드에서 make upload를 어떻게 구현했는지 분석하고 33, 이를 BeagleBone AI-64 환경에 맞게 재구현하는 작업을 포함할 수 있다.

BeagleBone AI-64의 진정한 가치는 안정적인 비행 제어를 넘어, 내장된 강력한 AI 가속기와 고성능 AP를 활용하여 지능형 자율 비행 기능을 단일 보드에서 구현하는 데 있다. 이는 TI의 Edge AI SDK와 ROS2 생태계를 통합함으로써 실현될 수 있다.

BeagleBone AI-64는 TI의 Processor SDK와 완벽하게 호환되며, 여기에는 AI 추론을 위한 핵심 라이브러리인 TIDL(TI Deep Learning)이 포함되어 있다.21

로봇 애플리케이션 개발의 사실상 표준인 ROS(Robot Operating System), 특히 최신 버전인 ROS2와의 통합은 BeagleBone AI-64의 활용성을 극대화하는 핵심 열쇠이다.

AI 가속기와 ROS2를 통합하여 시각 기반 장애물 회피 시스템을 구현하는 과정은 다음과 같은 데이터 파이프라인으로 개념화할 수 있다.

  1. 카메라 데이터 수집: ROS2의 카메라 드라이버 노드(예: v4l2_camera_node)가 MIPI-CSI 또는 USB 포트에 연결된 카메라로부터 영상 프레임을 지속적으로 획득하여 ROS2의 표준 이미지 토픽인 /image_raw로 발행한다.
  2. AI 기반 객체 탐지: 이 시스템의 핵심인 ‘AI 추론 노드’는 /image_raw 토픽을 구독한다. 이 노드는 수신된 이미지 데이터를 TIDL 라이브러리를 통해 TDA4VM의 C7x/MMA 가속기로 전달하여, 미리 학습된 객체 탐지 모델(예: YOLO, SSD)을 실행한다. 추론 결과(탐지된 객체의 종류, 위치, 경계 상자)는 새로운 ROS2 토픽인 /detected_objects로 발행된다.
  3. 장애물 정보 변환: 또 다른 ‘인지(Perception) 노드’는 /detected_objects 토픽과, 필요하다면 스테레오 카메라나 LiDAR로부터 얻은 깊이 정보를 함께 구독한다. 이 노드는 2D 이미지 상의 객체 정보를 3D 공간상의 장애물 위치와 크기로 변환하고, 이를 PX4가 이해할 수 있는 MAVLink의 OBSTACLE_DISTANCE 메시지 형식이나 그에 상응하는 uORB 토픽 형식으로 가공한다.
  4. PX4로 데이터 전송: 가공된 장애물 정보는 px4_ros_com의 uXRCE-DDS 브릿지를 통해 PX4 내부의 obstacle_distance uORB 토픽으로 실시간 전달된다.
  5. 회피 기동: PX4에 내장된 충돌 방지(Collision Prevention) 모듈은 obstacle_distance 토픽을 구독하고 있다가, 새로운 장애물 정보가 들어오면 이를 기반으로 현재 비행 경로를 안전하게 수정하여 충돌을 회피하는 제어 명령을 생성한다.

이처럼 온보드 AI 기능을 통합하는 것은 단순히 알고리즘을 실행하는 것을 넘어, 시스템 전체의 ‘데이터 흐름’을 최적화하는 복잡한 엔지니어링 문제이다. 성능의 병목은 AI 모델의 추론 속도 자체뿐만 아니라, 카메라에서부터 최종 PX4 제어 모듈에 이르기까지 여러 프로세스(ROS 노드)와 통신 계층(ROS2 DDS, uXRCE-DDS)을 거치면서 발생하는 데이터 복사 및 전송 오버헤드에서 발생할 가능성이 크다. TI의 Robotics SDK는 이러한 문제를 해결하기 위해 GStreamer와 OpenVX를 활용한 최적화된 플러그인과 모듈을 제공하는데 53, 이는 메모리 복사를 최소화(zero-copy)하고 하드웨어 가속기를 최대한 활용하여 데이터 파이프라인의 효율을 극대화하기 위함이다. 따라서 성공적인 AI 통합은 단순히 ROS 노드를 작성하는 것을 넘어, GStreamer, V4L2, OpenVX, DMA와 같은 저수준 API를 이해하고 활용하여 시스템 전체의 데이터 흐름을 분석하고 최적화하는 깊이 있는 시스템 레벨 엔지니어링 역량을 요구한다.

본 고찰을 통해 분석한 결과, BeagleBone AI-64는 PX4 오토파일럿을 기반으로 하는 차세대 고성능, 지능형 드론 비행 제어 컴퓨터(FC)를 개발하기 위한 매우 유망하고 기술적으로 타당한 플랫폼이라 결론 내릴 수 있다. 강력한 64비트 애플리케이션 프로세서(Cortex-A72), 신뢰성 높은 실시간 코어(Cortex-R5F), 초저지연 I/O 프로세서(PRU), 그리고 하드웨어 AI 가속기(C7x/MMA)를 단일 SoC에 집적한 이종 아키텍처는 기존의 ‘FC + 컴패니언 컴퓨터’ 분리 구조가 가진 물리적, 성능적 한계를 극복하고, 두 역할을 하나의 보드로 통합하여 그 이상의 성능을 발휘할 수 있는 독보적인 잠재력을 지니고 있다

이러한 잠재력을 현실화하기 위한 프로젝트의 성공 여부는 TI TDA4VM SoC의 이종 아키텍처를 얼마나 깊이 이해하고, 각 프로세싱 코어의 고유한 특성에 맞는 역할을 부여하는 최적의 하이브리드 소프트웨어 아키텍처를 구현하는가에 달려 있다. 본 보고서에서 제안하는 가장 이상적인 역할 분담은 다음과 같다.

  1. Cortex-A72 (PREEMPT_RT Linux): 고수준 항법, 임무 계획, ROS 노드, AI 추론 관리 등 복잡한 연산을 담당한다.
  2. PRU-ICSSG: 모터 제어를 위한 정밀 PWM/DShot 신호 생성과 RC 수신기 입력 처리 등 경성 실시간 I/O를 전담한다.
  3. Cortex-R5F (선택적 고급 구성): EKF, 자세/위치 제어 루프 등 비행 안정화의 핵심 로직을 담당하여 최고의 신뢰성을 확보한다.

이러한 아키텍처 구현에 있어 가장 큰 기술적 난제는 단연 개발의 복잡성이다. PREEMPT_RT 커널의 빌드 및 튜닝, PRU 펌웨어 개발, 이종 코어 간의 통신(remoteproc/rpmsg), 그리고 이 모든 것을 PX4 프레임워크와 통합하고 안정적으로 디버깅하는 과정은 상당한 수준의 임베디드 시스템 전문성을 요구한다.

이러한 복잡성을 관리하고 프로젝트의 성공 확률을 높이기 위해, 다음과 같은 단계적 개발 접근법을 제언한다.

이러한 체계적이고 단계적인 접근법을 통해 개발팀은 기술적 리스크를 효과적으로 관리하고, 복잡한 이종 시스템을 성공적으로 구축하여 차세대 지능형 드론 개발의 새로운 지평을 열 수 있을 것이다.

  1. Raspberry Pi Companion with Pixhawk PX4 Guide (main), accessed August 6, 2025, https://docs.px4.io/main/en/companion_computer/pixhawk_rpi
  2. How To Connect PixHawk to Raspberry Pi and NVIDIA Jetson - YouTube, accessed August 6, 2025, https://www.youtube.com/watch?v=nIuoCYauW3s
  3. Raspberry Pi based Autonomous drone - element14 Community, accessed August 6, 2025, https://community.element14.com/products/raspberry-pi/b/blog/posts/raspberry-pi-based-autonomous-drone
  4. BeagleBoard BeagleBone® AI-64 - Mouser Electronics, accessed August 6, 2025, https://www.mouser.com/new/beagleboardorg/beagleboard-beaglebone-ai-64/
  5. Top 5 Companion Computers for UAVs ModalAI, Inc., accessed August 6, 2025, https://www.modalai.com/blogs/blog/top-5-companion-computers-for-uavs
  6. Is it possible to working real time with Linux? : r/embedded - Reddit, accessed August 6, 2025, https://www.reddit.com/r/embedded/comments/10p23zm/is_it_possible_to_working_real_time_with_linux/
  7. Real-Time I/O - BeagleBoard Documentation, accessed August 6, 2025, https://docs.beagleboard.org/books/beaglebone-cookbook/08realtime/realtime.html
  8. Real time processing on the Beaglebone AI - Mender, accessed August 6, 2025, https://mender.io/blog/real-time-processing-on-the-beaglebone-ai
  9. Performance Assessment of Linux Kernels with PREEMPT_RT on ARM-Based Embedded Devices - MDPI, accessed August 6, 2025, https://www.mdpi.com/2079-9292/10/11/1331
  10. Design and Specifications - BeagleBoard Documentation, accessed August 6, 2025, https://docs.beagle.cc/boards/beaglebone/ai-64/03-design-and-specifications.html
  11. BeagleBone AI-64 - BeagleBoard Documentation, accessed August 6, 2025, https://docs.beagleboard.org/beaglebone-ai-64.pdf
  12. TDA4VM data sheet, product information and support TI.com - Texas Instruments, accessed August 6, 2025, https://www.ti.com/product/TDA4VM
  13. BeagleBone® AI-64 - BeagleBoard, accessed August 6, 2025, https://www.beagleboard.org/boards/beaglebone-ai-64
  14. BEAGL-BONE-AI-64 by BeagleBoard.org Foundation TI.com, accessed August 6, 2025, https://www.ti.com/tool/BEAGL-BONE-AI-64
  15. BEAGLEBOARD 102110646 Single Board Computer, BeagleBone, AI-64, TDA4VM, accessed August 6, 2025, https://vilros.com/products/beagleboard-102110646-single-board-computer-beaglebone-ai-64-tda4vm-arm-cortex-a72
  16. BeagleBone AI-64 comes with TDA4VM SoC from Texas Instruments - Linux Gizmos, accessed August 6, 2025, https://linuxgizmos.com/beaglebone-ai-64-comes-with-tda4vm-soc-from-texas-instruments/
  17. Introduction - BeagleBoard Documentation, accessed August 6, 2025, https://docs.beagleboard.org/boards/beaglebone/ai-64/01-introduction.html
  18. BeagleBone AI-64 - Zephyr Project Documentation, accessed August 6, 2025, https://docs.zephyrproject.org/latest/boards/beagle/beaglebone_ai64/doc/index.html
  19. PRU-ICSS / PRU_ICSSG Getting Starting Guide on Linux - Texas Instruments, accessed August 6, 2025, https://www.ti.com/lit/pdf/sprace9
  20. First steps with the BeagleBone PRU - boxysean.com, accessed August 6, 2025, https://boxysean.com/blog/2012/08/12/first-steps-with-the-beaglebone-pru/
  21. Getting Started with the TDA4VM Edge AI Starter Kit - Hackster.io, accessed August 6, 2025, https://www.hackster.io/whitney-knitter/getting-started-with-the-tda4vm-edge-ai-starter-kit-c05531
  22. BeagleBone cape interface spec - BeagleBoard Documentation, accessed August 6, 2025, https://docs.beagleboard.org/latest/boards/capes/cape-interface-spec.html
  23. Enable UART 1 on BB AI-64 - General Discussion - BeagleBoard Forum, accessed August 6, 2025, https://forum.beagleboard.org/t/enable-uart-1-on-bb-ai-64/32997
  24. How can I enable the 5 UARTs of the beaglebone AI-64? - BeagleBoard Forum, accessed August 6, 2025, https://forum.beagleboard.org/t/how-can-i-enable-the-5-uarts-of-the-beaglebone-ai-64/35602
  25. PX4 Autopilot Software - GitHub, accessed August 6, 2025, https://github.com/PX4/PX4-Autopilot
  26. PX4 Architectural Overview PX4 Guide (main), accessed August 6, 2025, https://docs.px4.io/main/en/concept/architecture
  27. PX4: A Node-Based Multithreaded Open Source Robotics Framework for Deeply Embedded Platforms - Ethz, accessed August 6, 2025, https://people.inf.ethz.ch/pomarc/pubs/MeierICRA15.pdf
  28. Architectural Overview / PX4 Development Guide - shnuzxd, accessed August 6, 2025, https://shnuzxd.gitbooks.io/px4-development-guide/en/concept/architecture.html
  29. PX4 Research Log [4] – A first look at PX4 architecture, example code, uORB and NSH script - UAV Lab @ Sydney, accessed August 6, 2025, https://uav-lab.org/2016/08/02/px4-research-log4-a-first-look-at-px4-architecture/
  30. Flight Controller Porting Guide PX4 Guide (main), accessed August 6, 2025, https://docs.px4.io/main/en/hardware/porting_guide
  31. Drone Apps & APIs PX4 Guide (main), accessed August 6, 2025, https://docs.px4.io/main/en/robotics/
  32. Raspberry Pi 2/3/4 Navio2 Autopilot PX4 Guide (main), accessed August 6, 2025, https://docs.px4.io/main/en/flight_controller/raspberry_pi_navio2.html
  33. BeagleBone Blue PX4 Guide (main), accessed August 6, 2025, https://docs.px4.io/main/en/flight_controller/beaglebone_blue
  34. Flight Controller Porting Guide / Devguide, accessed August 6, 2025, https://bresch.gitbooks.io/devguide/content/en/debug/porting-guide.html
  35. PX4-user_guide/ja/flight_controller/raspberry_pi_pilotpi.md at main - GitHub, accessed August 6, 2025, https://github.com/PX4/PX4-user_guide/blob/master/ja/flight_controller/raspberry_pi_pilotpi.md
  36. NuttX Board Porting Guide PX4 Guide (main), accessed August 6, 2025, https://docs.px4.io/main/en/hardware/porting_guide_nuttx.html
  37. Building the Code / PX4 Development Guide - shnuzxd, accessed August 6, 2025, https://shnuzxd.gitbooks.io/px4-development-guide/en/setup/building_px4.html
  38. Intel energizes decades-old real-time Linux kernel project Hacker News, accessed August 6, 2025, https://news.ycombinator.com/item?id=30476723
  39. Building a Real-time Linux Kernel in Ubuntu with PREEMPT_RT - acontis, accessed August 6, 2025, https://www.acontis.com/en/building-a-real-time-linux-kernel-in-ubuntu-preemptrt.html
  40. Tag: preempt_rt - robskelly.com, accessed August 6, 2025, https://robskelly.com/tag/preempt_rt/
  41. Real-Time Performance in Linux: Harnessing PREEMPT_RT for Embedded Systems - RunTime Recruitment, accessed August 6, 2025, https://runtimerec.com/wp-content/uploads/2024/10/real-time-performance-in-linux-harnessing-preempt-rt-for-embedded-systems_67219ae1.pdf
  42. realtime:documentation:howto:tools:cyclictest:start [Wiki], accessed August 6, 2025, https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start
  43. A Comparison of Scheduling Latency in Linux, PREEMPT RT, and LITMUSRT - People at MPI-SWS, accessed August 6, 2025, https://people.mpi-sws.org/~bbb/papers/pdf/ospert13.pdf
  44. Cyclictest latency results comparison for Raspberry Pi with Linux… - ResearchGate, accessed August 6, 2025, https://www.researchgate.net/figure/Cyclictest-latency-results-comparison-for-Raspberry-Pi-with-Linux-kernels-with-PREEMPT-RT_tbl2_352041533
  45. Preempt-RT Latency Benchmarking of the Cortex-A53 processor - Enclustra, accessed August 6, 2025, https://www.enclustra.com/assets/files/download/Preempt-RT-Latency-Benchmarking-of-the-Cortex-A53-Processor-Paul-Thomas-AMSC-Embedde_Linux_Conference_Europe_2018.pdf
  46. Remote Processor Framework - The Linux Kernel documentation, accessed August 6, 2025, https://docs.kernel.org/staging/remoteproc.html
  47. PRU RemoteProc documentation - Google Groups, accessed August 6, 2025, https://groups.google.com/g/beagleboard/c/_LJ7rI1eISM
  48. 3.5.3.1. RemoteProc and RPMsg - Processor SDK Linux for AM335X Documentation - Texas Instruments, accessed August 6, 2025, https://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/RemoteProc_and_RPMsg.html
  49. PRU-framework/drivers/remoteproc/pruss_remoteproc.c at master - GitHub, accessed August 6, 2025, https://github.com/shubhi1407/PRU-framework/blob/master/drivers/remoteproc/pruss_remoteproc.c
  50. Are there good resources for understanding remoteproc and rpmsg are doing? How are they related to openAMP? : r/linux - Reddit, accessed August 6, 2025, https://www.reddit.com/r/linux/comments/yebqjh/are_there_good_resources_for_understanding/
  51. 3.6.3.1. RemoteProc - Processor SDK Linux for AM57X Documentation - Texas Instruments, accessed August 6, 2025, https://software-dl.ti.com/processor-sdk-linux/esd/AM57X/08_02_00_04/exports/docs/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/RemoteProc.html
  52. How to run C programs on the BeagleBone’s PRU microcontrollers - Ken Shirriff’s blog, accessed August 6, 2025, http://www.righto.com/2016/09/how-to-run-c-programs-on-beaglebones.html
  53. SDK Components - BeagleBone AI-64 - BeagleBoard Documentation, accessed August 6, 2025, https://docs.beagleboard.org/boards/beaglebone/ai-64/edge_ai_apps/sdk_components.html
  54. PROCESSOR-SDK-J721E Software development kit (SDK) TI.com, accessed August 6, 2025, https://www.ti.com/tool/PROCESSOR-SDK-J721E
  55. Driver Development PX4 Guide (main), accessed August 6, 2025, https://docs.px4.io/main/en/middleware/drivers
  56. Expansion - BeagleBoard Documentation, accessed August 6, 2025, https://docs.beagleboard.org/boards/beaglebone/ai-64/04-expansion.html
  57. How to cross compile for ARM? - Ask Ubuntu, accessed August 6, 2025, https://askubuntu.com/questions/250696/how-to-cross-compile-for-arm
  58. How to setup environment to develop for aarch64 target using x86_64 machine? - Reddit, accessed August 6, 2025, https://www.reddit.com/r/Compilers/comments/1kjzef6/how_to_setup_environment_to_develop_for_aarch64/
  59. Ubuntu Development Environment PX4 User Guide (v1.14), accessed August 6, 2025, https://docs.px4.io/v1.14/en/dev_setup/dev_env_linux_ubuntu.html
  60. Unable to build px4 current version by cross-compilation on macOS Mojave 10.14.6 / Issue #13172 - GitHub, accessed August 6, 2025, https://github.com/PX4/Firmware/issues/13172
  61. Quick Start Guide - BeagleBoard Documentation, accessed August 6, 2025, https://docs.beagleboard.org/latest/boards/beaglebone/ai-64/02-quick-start.html
  62. Additional Support Information - BeagleBoard Documentation, accessed August 6, 2025, https://docs.beagle.cc/boards/beaglebone/ai-64/06-support.html
  63. Beaglebone AI-64 can not boot both from eMMC and mircoSD card - BeagleBoard Forum, accessed August 6, 2025, https://forum.beagleboard.org/t/beaglebone-ai-64-can-not-boot-both-from-emmc-and-mircosd-card/34491
  64. BBAI-64 Boot order - General Discussion - BeagleBoard Forum, accessed August 6, 2025, https://forum.beagleboard.org/t/bbai-64-boot-order/33129
  65. BeagleBone AI-64: Distro Boot Overview - General Discussion, accessed August 6, 2025, https://forum.beagleboard.org/t/beaglebone-ai-64-distro-boot-overview/32227
  66. BeagleBone AI-64 Setup Guide Prepare Devices - Viam Documentation, accessed August 6, 2025, https://docs.viam.com/operate/reference/prepare/beaglebone-setup/
  67. HDMI issue with beaglebone AI 64 - General Discussion - BeagleBoard Forum, accessed August 6, 2025, https://forum.beagleboard.org/t/hdmi-issue-with-beaglebone-ai-64/41297
  68. PX4 BeagleBone® Blue-based quadcopter - Aviumtechnologies Blog, accessed August 6, 2025, https://blog.aviumtechnologies.com/topics/px4-autopilot/px4-beaglebone-r-blue-based-quadcopter
  69. Texas Instruments SK-TDA4VM - Edge Impulse Documentation, accessed August 6, 2025, https://docs.edgeimpulse.com/docs/edge-ai-hardware/cpu-+-ai-accelerators/sk-tda4vm
  70. Deep learning with Jacinto TDA4x processors Video TI.com - Texas Instruments, accessed August 6, 2025, https://www.ti.com/video/6195166916001
  71. TDA4VM: TIDL: How to use API - Processors forum - TI E2E, accessed August 6, 2025, https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1004254/tda4vm-tidl-how-to-use-api
  72. PX4 ROS 2 Navigation Interface PX4 Guide (main) - PX4 docs, accessed August 6, 2025, https://docs.px4.io/main/en/ros2/px4_ros2_navigation_interface.html
  73. PX4/px4_ros_com: ROS2/ROS interface with PX4 through a Fast-RTPS bridge - GitHub, accessed August 6, 2025, https://github.com/PX4/px4_ros_com
  74. Object detection using ROS2 in SDK-TDA4VM - Processors forum - TI E2E, accessed August 6, 2025, https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1314516/tda4vm-object-detection-using-ros2-in-sdk-tda4vm
  75. TexasInstruments/edgeai-robotics-sdk: Robotics SDK provides a ROS-based robotics software development environment for Texas Instruments Edge AI Processors, including AM62A, TDA4VM, AM67A, AM68A, and AM69A. - GitHub, accessed August 6, 2025, https://github.com/TexasInstruments/edgeai-robotics-sdk
  76. Process This: Build AI-powered robots with TI’s NEW Robotics SDK - YouTube, accessed August 6, 2025, https://www.youtube.com/watch?v=o0Tm1u3CwdY
  77. Using QGroundControl over Wi-Fi - Clover, accessed August 6, 2025, https://clover.coex.tech/en/gcs_bridge.html
  78. Problems with TCP connection via 4G dongle - QGroundControl - PX4 Discussion Forum, accessed August 6, 2025, https://discuss.px4.io/t/problems-with-tcp-connection-via-4g-dongle/25282
  79. PRU Cookbook - BeagleBoard, accessed August 6, 2025, https://beagleboard.org/static/prucookbook/
  80. jmacd/bbb-pru-examples: BeagleBone Black PRU examples - GitHub, accessed August 6, 2025, https://github.com/jmacd/bbb-pru-examples
  81. jadonk/pruduino: AM335x PRU remoteproc firmware with command interface for BeagleBone - GitHub, accessed August 6, 2025, https://github.com/jadonk/pruduino
  82. pru c++ shared mem - General Discussion - BeagleBoard Forum, accessed August 6, 2025, https://forum.beagleboard.org/t/pru-c-shared-mem/35095