파라미터 정리 (필요한것만)

px4의 Autopilot의 기본깃허브는 아래와 같다.

GitHub - PX4/PX4-Autopilot: PX4 Autopilot Software

위의 코드 구조를 확인하여 우리가 원하는 방식으로 고치려고 한다.

본 코드는 펌웨어를 위한 코드(제어기, 센서관련)과 SITL을 하기 위한 setup과 Tool들이 모두 합쳐져있는 경우이다. 또한, general package이다보니 다양한 보드별 내용이 있어 방대하니 주의가 필요하다.

PX4-Autopilot/
├── src/        실제 펌웨어 코드
├── msg/        uORB 토픽 메시지 정의
├── boards/     보드별 빌드 설정
├── platforms/  NuttX, Linux 등 플랫폼 계층
├── ROMFS/      부팅 스크립트, airframe 설정
├── Tools/      시뮬레이션, 빌드, 유틸 스크립트
├── cmake/      CMake 빌드 시스템
├── build/      빌드 결과물 생성 폴더
└── docs/       문서 관련

로 크게 이루어져있으며, Px4내부에서는 ros topic과 같은 uORB라는 publish-subscribe 메시지를 활용하여 통신을 진행하고 있다.

src/

src/modules/
├── commander/          arming, mode 변경, failsafe 관리
~~├── navigator/          mission, RTL, takeoff 같은 자율비행 관리~~
├── mc_pos_control/     멀티콥터 위치 제어기
├── mc_att_control/     멀티콥터 자세 제어기
├── mc_rate_control/    멀티콥터 각속도 제어기
├── control_allocator/  힘/토크 명령을 모터/서보 출력으로 분배
~~├── ekf2/               상태추정기~~
├── mavlink/            QGC/companion computer와 MAVLink 통신
└── logger/             ulog 기록

여기에서, 내가 고칠부분은 src/modules/ 부분으로 아래와 같이 세분화 되어있으며 그 외는 안건드려도 될 것같다.

msg/

msg/
├── VehicleAttitude.msg
├── VehicleAngularVelocity.msg
├── VehicleLocalPosition.msg
├── VehicleStatus.msg
├── TrajectorySetpoint.msg
├── ActuatorMotors.msg
└── ...

새 토픽을 추가하려면 msg/.msg 파일을 만들고 msg/CMakeLists.txt에 추가하면, 빌드 시 C/C++ 코드가 자동 생성

uORB Messaging

(진짜 개 많음;;;;)

통신방식

PX4 내부 모듈 간 통신: uORB
PX4 ↔ QGroundControl: MAVLink
PX4 ↔ ROS 2: DDS / px4_msgs / bridge 계열
PX4 ↔ 실제 하드웨어: drivers