Contents — find the section you need
ArduPilot은 드론 전용 "자동 조종 앱"이 아닙니다. 고정익 항공기(비행기), 멀티콥터(콥터), 지상 차량(로버), 심지어 잠수정/보트(하이브리드 구성)에 이르기까지, 센서를 읽고, 상태를 추정하고, 액추에이터 명령을 내리고, 오류 발생 시 안전한 상태로 전환하는 임베디드 플랫폼입니다. 비행체를 비행시키기 전에 상태 추정, 제어, 통신, 전력 공급, 그리고 지상 관제소를 하나의 안전 사례로 통합적으로 이해하는 것이 필수적입니다.
자율 비행 항공기 예시이미지: Skydio X2D 항공기 검사 (Mauricio Campino, 공개 도메인), Wikimedia Commons. ArduPilot 차량이 아니며, 온보드 컴퓨팅 및 자율 비행 환경을 설명하기 위한 예시 이미지입니다.
30초 요약
-
ArduPilot은 IMU, GNSS, 자력계, 기압계 및 거리 측정기 데이터를 확장 칼만 필터(EKF)를 통해 융합하여 자세, 속도, 위치 및 바이어스를 추정합니다.
-
헬리콥터는 추력 배분 및 자세 제어에, 비행기는 공기역학 및 에너지 관리에, 로버는 바퀴/조향 및 경로 추적에 중점을 두며, 이들은 서로 다른 매개변수를 공유합니다.
-
내부 각속도/자세 제어 루프는 고주파로 작동하고, 외부 위치/속도/임무 제어 루프는 목표값을 생성합니다. 실제 차량에서 PID 제어의 부호와 단위를 검증해야 합니다.
-
MAVLink는 차량과 지상국, 보조 컴퓨터 및 주변 장치를 연결하는 메시징 프로토콜입니다. 통신 두절, 저전압, GNSS 손실 및 지오펜스 이탈은 모두 페일세이프를 통해 처리됩니다.
-
테스트는 SITL, 로그 재생, 프로펠러 제거 벤치 테스트, 테더링 테스트 및 저고도 테스트의 단계별로 진행됩니다. 시뮬레이션이 성공하더라도 실제 차량의 진동, 전자기 잡음 및 전력 강하는 별개의 문제입니다.
1. 아키텍처
그림 1 — 센서들은 확장 칼만 필터(EKF)를 통해 융합됩니다. 내부 자세/속도 제어 루프는 믹서를 구동하여 모터와 서보에 출력을 전달합니다. MAVLink는 지상국 및 외부 컴퓨터와의 경계를 형성합니다.
차량의 메인 루프는 센서 데이터 획득, 추정, 제어, 출력, 통신 및 로깅을 고정된 주기로 처리합니다. 고속 IMU 데이터는 자세를 예측하고, GNSS, 자력계, 기압계 및 외부 영상은 저속 보정을 제공합니다. 추정 품질이 저하되면 목표물을 계속 추적하는 대신 컨트롤러는 안전한 동작(정지, 복귀 또는 착륙)으로 전환합니다.
2. 확장 칼만 필터(EKF)를 이용한 상태 추정
한 가지 예로, 상태 벡터는 위치 p, 속도 v, 자세 R, 그리고 자이로/가속도계 바이어스 b_g,b_a입니다. 예측값은 IMU에서 얻고, 업데이트값은 외부 관측값에서 얻습니다.
여기서 a_m,\omega_m은 측정값이고, g은 중력이며, [\cdot]_{\times}은 교차곱 행렬입니다. EKF는 공분산 P을 전파하고, 관측 잔차(혁신)가 예상 범위를 벗어나는 경우 해당 센서를 일시적으로 제외합니다. 이는 자기 간섭이나 다중경로 GNSS를 맹목적으로 수용하지 않기 위한 메커니즘입니다.
차량 진동은 가속도계에 고주파 성분을 추가하여 추정 및 제어를 불안정하게 만듭니다. 프레임 강성, 프로펠러 밸런스, 댐퍼, 필터 지연 시간은 기계적 측면과 소프트웨어적 측면 모두에서 조정해야 합니다. 로그의 진동 스펙트럼을 동일한 타임스탬프에서 EKF의 혁신 기술과 중첩하면 원인을 더 쉽게 파악할 수 있습니다.
3. 헬리콥터, 비행기, 로버의 제어
헬리콥터
멀티콥터는 총 추력과 각 모터의 회전 속도로부터 자세 토크를 생성합니다. 대략적으로,
여기서 믹서는 롤, 피치, 요, 스로틀 요구량을 각 모터에 분배합니다. 자세-각도 제어 루프 외부에는 풍향 및 탑재량 변화에 대한 추력 여유를 모니터링하는 속도/위치 제어 루프가 있습니다.
비행기
고정익 항공기는 날개 양력과 항력, 속도, 받음각, 에너지 상태를 이용하여 비행합니다. 롤 각도로 방향을 전환하고 피치로 속도와 고도를 조절하므로 멀티콥터의 게인을 직접 재사용할 수 없습니다. 자동 착륙에는 바람, 활주로, 센서 지연 시간을 고려한 별도의 테스트가 필요합니다.
로버
로버는 바퀴 속도, 조향각, GNSS, 나침반, LiDAR 및 유사 센서를 통합하여 웨이포인트와 속도 목표물을 추적합니다. 바퀴 미끄러짐과 경사로 인해 데드 레코닝이 오차가 발생하므로, 공분산 및 재위치 추정은 robotics-dead-reckoning 문서에서 다룬 주행 거리 측정 방식과 동일하게 설계되었습니다.
4. 임무 및 MAVLink
임무는 웨이포인트, 속도, 고도, 카메라 트리거, 착륙 등과 같은 일련의 명령입니다. MAVLink는 하트비트(HEARTBEAT), 위치, 자세, 매개변수, 임무 데이터 및 명령 확인 응답을 교환하는 소형 바이너리 메시지 프로토콜입니다. SITL과 지상국은 UDP를 통해 연결됩니다. 실제 하드웨어에서는 무선 링크의 지연 시간, 대역폭, 암호화 및 인증을 평가해야 합니다.
임무 자동화 시, 응답을 기다리지 않고 다음 명령으로 넘어가지 마십시오. ACK, 타임아웃, 재시도, 취소 및 전원 재부팅 후 재개 위치를 정의하십시오. 통신은 제어 시스템의 단일 장애 지점이 되어서는 안 됩니다. 지상국과의 연결이 끊어지더라도 기체가 안전하게 복귀 및 착륙할 수 있도록 설계해야 합니다.
5. 안전장치 및 안전 테스트
저전압, RC 링크 손실, GNSS 품질 저하, EKF 오류, 지오펜스 이탈 및 모터 고장을 감지하고 기체 유형에 적합한 동작으로 전환하십시오. 헬리콥터의 "이륙 지점 복귀"가 항상 안전한 선택은 아닙니다. 강풍, 장애물 근처 또는 홈 위치 확인이 불가능한 경우 착륙 또는 대기가 더 적절할 수 있습니다. 임계값을 설정한 후에는 위험도가 낮은 환경에서 해당 임계값을 넘어서는 실제 테스트를 수행하십시오.
테스트는 SITL → 하드웨어 인 더 루프 → 프로펠러 제거 → 테더링 → 저고도 → 운용 고도 순으로 단계적으로 진행해야 합니다. 전원을 갑자기 차단하거나, GNSS 안테나를 차폐하거나, 통신을 차단하거나, 센서 하나를 제거하는 등의 오류 주입 테스트를 기록하면서 실행해야 합니다. 비행 허가, 현지 항공법, 개인정보 보호 및 무선 통신 규정은 다른 어떤 기술적 요구 사항 못지않게 중요합니다.
6. 파라미터 튜닝 권장 순서
-
센서 방향, 교정, 타이밍 및 공급 전압을 확인합니다.
-
기체를 고정한 상태에서 자이로스코프/가속도계/나침반의 바이어스와 진동을 측정합니다.
-
작은 게인부터 시작하여 내부 자세 제어 루프를 튜닝하고 포화 및 진동을 관찰합니다.
-
속도/위치/고도 루프를 추가하고 다양한 풍향 및 탑재량 조건에서 추적 성능을 평가합니다.
-
임무, 안전장치, 재시작 및 로깅을 포함한 전체 엔드 투 엔드 테스트를 실행합니다.
프로펠러, 관성 모멘트, 추력 여유, 샘플링 주기 등이 다르면 다른 차량의 게인 값을 복사해도 안정성을 확보할 수 없습니다. 로그에서 목표값, 측정값, 출력 포화도, 혁신도를 중첩하여 어떤 루프에서 지연이 발생하는지 확인하십시오.
7. 현재 활용 및 연구
ArduPilot은 농업용 살포, 측량, 재난 평가, 연구용 VTOL, 자율 비행선 등 다양한 분야에서 여러 유형의 차량에 사용되고 있습니다. 일부 구성에서는 보조 컴퓨터에서 MAVLink를 통해 목표값을 전송하고 ROS 2 또는 컴퓨터 비전 기반 추정값을 보조 관측값으로 제공합니다. 시각 항법, 다중 센서 오류 진단, 학습 기반 풍향 추정, 다중 차량 조정 등에 대한 연구가 진행 중이지만, 최종 출력값이 기존의 제한 및 안전장치를 통과하도록 하는 것이 여전히 가장 좋습니다.
요약
ArduPilot의 핵심은 센서 융합, 계층적 제어, 임무 실행, 통신 및 안전장치를 단일 임베디드 시스템으로 통합하는 것입니다. 차량을 움직이는 코드를 작성하기 전에 예상 상태 및 좌표계, 제어 주기, 출력 제한, 그리고 오류 발생 시 전환 과정을 명확히 정의해야 합니다. SITL과 로그를 활용하고, 실제 차량에서 안전성 테스트를 신중하게 수행해야 합니다. 오픈 소스 소프트웨어는 연구 단계의 프로젝트를 실제 운영 단계로 이끌어 줄 수 있습니다.
경로 입력만으로 자율 비행이 가능한가요?
차량 설정, 예상, 제어 및 안전장치가 함께 작동해야 합니다.
명령 실행 조건과 경로 계획을 분리하십시오.
댓글
먼저 로그인해 주세요.
아직 데이터가 없습니다.