PX4의 전체 시스템 구성을 이해하는 것이 PX4 코드를 이해하는 출발점이 된다. 하지만 처음 아키텍쳐를 보더라도 각 용어가 의미하는 것을 정확하게 이해하지 못한다면 이해하기 쉽지 않다. 용어에 대한 정의를 명확히 하는 것이 PX4 아키텍쳐와 코드를 제대로 이해하기 위한 첫걸음이 된다.

아키텍쳐 개요

  • PX4는 2개의 주요 계층을 가지고 있다.
    • PX4 flight stack
      • 비행에 관련된 제어 부분
    • PX4 middleware
      • 다양한 타입의 로봇을 지원할 수 있게 만든 middle 계층
  • 모든 airframe을 지원함에도 불구하고 동일한 코드베이스를 사용하고 있다.
  • 시스템 설계에서 ‘reactive’ 특성을 강조 :
    • 모든 기능은 교환가능한 컴포넌트로 구성
    • 커뮤니케이션은 비동기 메시지 전달을 따른다.
    • 시스템은 가변적인 작업을 처리할 수 있다.
  • 이런 설계시 고려뿐만 아니라 모듈화를 통해 재사용성을 극대화 시킨다.

상위 추상화 레벨에서 소프트웨어 아키텍쳐

  • 아래 블록의 각각은 독립된 모듈이다. 코드, 의존성, 런타임까지도 독립되어 있다. 각 화살표는 uORB를 통해 publish/subscribe 호출을 통해 연결된다.
  • 아래 그림에서 controller/mixer의 경우 airframe에 따라 달라지지만 상위 레벨에 있는 mission management들(commander, navigator)는 플랫폼간에 공유가 가능하다.

PX4HighLevelSWArchtecture

GCS와 통신 구조

  • 기체와 그라운드 컨트롤 스테이션 사이에 통신처리 방법
    • business logic 어플리케이션
      • commander(일반 비행 관련 제어 및 명령 : ex) arming)와 navigator(mission을 받아서 하위레벨 네비게이션으로 변환) 어플리케이션
    • MAVLink 어플리케이션
      • 패킷을 받아서 온보드 uORB 데이터 구조로 변환
        다양한 센서 데이터와 state estimate를 사용하고 이를 그라운드 컨트롤 스테이션으로 보낸다.
    • -> 이렇게 분리하는 이유는 : 시스템내에서 MAVLink 의존성이 깊어지는 것을 막기 위해서

CommunicationWithGCS

[Pixhawk] 시스템 아키텍쳐 구조 이해

답글 남기기