# MAVSDK 통합 테스트

PX4는 MAVSDK (opens new window)를 기반으로 종단간 통합 테스트를 할 수 있습니다.

테스트는 주로 SITL에 대해 개발되고, CI(지속적 통합)에서 실행됩니다. 앞으로, 모든 플랫폼/하드웨어으로 일반화할 계획입니다.

아래 지침은 로컬에서 테스트를 설정하고 진행하는 방법을 설명합니다.

# 전제 조건

# 개발 환경 설정

아직 하지 않은 경우:

  • Linux 또는 MacOS용 개발 도구 모음을 설치합니다(Windows는 지원되지 않음). Gazebo Classic is required, and should be installed by default.

  • PX4 소스 코드 받기:

    git clone https://github.com/PX4/PX4-Autopilot.git --recursive
    cd PX4-Autopilot
    

# 테스트용 PX4 빌드

시뮬레이터 테스트를 위한 PX4를 빌드하려면 다음 명령어를 실행하십시오.

DONT_RUN=1 make px4_sitl gazebo-classic mavsdk_tests

# MAVSDK C++ 라이브러리 설치

테스트에는 시스템에 설치된 MAVSDK C++ 라이브러리가 필요합니다(예: /usr/lib 또는 /usr/local/lib).

바이너리 또는 소스에서 설치:

# 모든 PX4 테스트 실행

sitl.json (opens new window)에 정의된 대로 모든 SITL 테스트를 실행하려면 다음을 실행하십시오.

test/mavsdk_tests/mavsdk_test_runner.py test/mavsdk_tests/configs/sitl.json --speed-factor 10

그러면, 모든 테스트가 나열되고 순차적으로 실행됩니다.

가능한 모든 명령줄 인수를 보려면 -h 인수를 사용하십시오.

test/mavsdk_tests/mavsdk_test_runner.py -h

usage: mavsdk_test_runner.py [-h] [--log-dir LOG_DIR] [--speed-factor SPEED_FACTOR] [--iterations ITERATIONS] [--abort-early] [--gui] [--model MODEL]
                             [--case CASE] [--debugger DEBUGGER] [--verbose]
                             config_file

positional arguments:
  config_file           JSON config file to use

optional arguments:
  -h, --help            show this help message and exit
  --log-dir LOG_DIR     Directory for log files
  --speed-factor SPEED_FACTOR
                        how fast to run the simulation
  --iterations ITERATIONS
                        how often to run all tests
  --abort-early         abort on first unsuccessful test
  --gui                 display the visualization for a simulation
  --model MODEL         only run tests for one model
  --case CASE           only run tests for one case
  --debugger DEBUGGER   choice from valgrind, callgrind, gdb, lldb
  --verbose             enable more verbose output

# 단일 테스트 실행

모델 및 테스트 케이스를 명령줄 옵션으로 지정하여, 단일 테스트를 실행합니다. 예를 들어, 임무에서 테일시터 비행을 테스트하려면, 다음을 실행합니다.

test/mavsdk_tests/mavsdk_test_runner.py test/mavsdk_tests/configs/sitl.json --speed-factor 10 --model tailsitter --case 'Fly square Multicopter Missions including RTL'

현재 모델 세트와 관련 테스트 사례를 찾는 가장 용이한 방법은 위에 표시된 대로 모든 PX4 테스트를 실행하는 것입니다(참고로 하나만 테스트하려는 경우 빌드를 취소할 수 있습니다).

이 문서 작성 시점에서 모든 테스트를 실행하여 생성된 목록은 다음과 같습니다.

About to run 39 test cases for 3 selected models (1 iteration):
  - iris:
    - 'Land on GPS lost during mission (baro height mode)'
    - 'Land on GPS lost during mission (GPS height mode)'
    - 'Continue on mag lost during mission'
    - 'Continue on baro lost during mission (baro height mode)'
    - 'Continue on baro lost during mission (GPS height mode)'
    - 'Continue on baro stuck during mission (baro height mode)'
    - 'Continue on baro stuck during mission (GPS height mode)'
    - 'Takeoff and Land'
    - 'Fly square Multicopter Missions including RTL'
    - 'Fly square Multicopter Missions with manual RTL'
    - 'Fly straight Multicopter Mission'
    - 'Offboard takeoff and land'
    - 'Offboard position control'
    - 'Fly forward in position control'
    - 'Fly forward in altitude control'
  - standard_vtol:
    - 'Land on GPS lost during mission (baro height mode)'
    - 'Land on GPS lost during mission (GPS height mode)'
    - 'Continue on mag lost during mission'
    - 'Continue on baro lost during mission (baro height mode)'
    - 'Continue on baro lost during mission (GPS height mode)'
    - 'Continue on baro stuck during mission (baro height mode)'
    - 'Continue on baro stuck during mission (GPS height mode)'
    - 'Takeoff and Land'
    - 'Fly square Multicopter Missions including RTL'
    - 'Fly square Multicopter Missions with manual RTL'
    - 'Fly forward in position control'
    - 'Fly forward in altitude control'
  - tailsitter:
    - 'Land on GPS lost during mission (baro height mode)'
    - 'Land on GPS lost during mission (GPS height mode)'
    - 'Continue on mag lost during mission'
    - 'Continue on baro lost during mission (baro height mode)'
    - 'Continue on baro lost during mission (GPS height mode)'
    - 'Continue on baro stuck during mission (baro height mode)'
    - 'Continue on baro stuck during mission (GPS height mode)'
    - 'Takeoff and Land'
    - 'Fly square Multicopter Missions including RTL'
    - 'Fly square Multicopter Missions with manual RTL'
    - 'Fly forward in position control'
    - 'Fly forward in altitude control'

# 구현 참고 사항

사용된 용어: