반응형

본 글은 2020.10.10을 기준으로 작성된 글입니다.

 

참고문헌

1. "Simulation & Testing/Simulation," ardupilot.org/dev/docs/simulation-2.html

2. "Simulation & Testing/Setting up SITL on Linux," ardupilot.org/dev/docs/simulation-2.htmlardupilot.org/dev/docs/setting-up-sitl-on-linux.html

3. "Simulation & Testing/Using SITL," ardupilot.org/dev/docs/using-sitl-for-ardupilot-testing.html#using-sitl-for-ardupilot-testing

4. "Simulation & Testing/Copter SITL/MAVProxy Tutorial," ardupilot.org/dev/docs/copter-sitl-mavproxy-tutorial.html#copter-sitl-mavproxy-tutorial

5. "First Flight/Flight Modes," ardupilot.org/copter/docs/flight-modes.html#flight-modes

6. "Using Gazebo Simulator with SITL," ardupilot.org/dev/docs/using-gazebo-simulator-with-sitl.html

7. "Using SITL with AirSim," ardupilot.org/dev/docs/sitl-with-airsim.html

 

참고문헌의 한줄 요약은 다음과 같다.

[1] Ardupilot의 Simulation의 개괄에 대해 다룬다.

[2] Linux에서 SITL을 세팅하는 방법을 다룬다.

[3] SITL의 매개변수 불러오기/쓰기, 다양한 기능을 추가하거나 테스트해본다.

[4] Copter의 SITL/MAVProxy의 튜토리얼을 다룬다. SITL에서 Copter를 운용하는 방법을 기술하고 있다.

[5] Ardupilot이 사용하는 다양한 비행 모드에 대한 설명을 다룬다.

[6] Gazebo로 시뮬레이터 돌리기

[7] AirSim으로 시뮬레이터 돌리기


ArduPilot의 시뮬레이션 구조[2]

ArduPilot의 시뮬레이션의 전체 구조는 다음과 같다고 한다.

크게 보면 다음의 구조를 가진다.

1) 지상관제SW

2) ArduPilot의 SITL 비행제어 모델

3) 물리모델인 비행동역학 모델

4) 시각화 모델

이는 비행동역학 모델과 시각화 모델이 현실 세계가 되면 실제 비행 실험과 같게 되겠다.

Ardupilot의 전체적인 시뮬레이션 구조[2]

SITL

SITL 시뮬레이터 환경 설치

Ardupilot 빌드 과정 정리 Linux에서 Ardupilot 빌드 환경 구성하기 까지만 해보자. 필요한 패키지만 설치하고 나면 된다.(아마?)

SITL 시뮬레이터 시작해보기

1) 쿼드로터를 한다고 하면

    cd ardupilot/ArduCopter

2) 해당 파일에 대한 도움말 보기

다양한 환경 설정 명령을 볼 수 있다.

    sim_vehicle.py --help

 

3) 롬 데이터를 지우고 초기 매개변수를 불러오기 위해 다음의 명령을 입력한다.

    sim_vehicle.py -w

 

4) SITL 실행과 옵션 설명

4.1) 초기 매개변수를 불러왔다면, 일반적으로 시작할 수 있다. (콘솔과 지도를 같이 불러옴)

    sim_vehicle.py --console --map

4.2) 시작 위치 설정하기 (-L "특정위치이름")

ardupilot/Tools/autotest/location.txt에 특정 이름으로 지정된 위치와 방위각에서 시작한다.

파일을 찾아보면 Ballarat은 위도 -37.598705, 경도 143.881744, 절대 고도 485m, 방위각 165도이다.

이 위치는 오스트레일리아 멜버른 근처의 밸러랫이라는 도시 근처 숲 어딘가이다.

    sim_vehicle.py -L Ballarat --console --map

4.4) 기체/프레임 종류 선택하기 (-v "기체종류이름" -f "프레임종류이름")

기체 종류는 Plane/Copter/Rover가 있으며 각 기체 종류에 대한 프레임 타입이 다양하게 존재한다. (Ref.2 참조)

    sim_vehicle.py -v ArduPlane -f quadplane --console --map

 

간단한 자동 모드 실행해보기

5) SITL -> Copter 에서 자동 이륙, 이동, 자동 착륙해보기 [4] 참조

    $USERNAME: cd ardupilot/ArduCopter

시뮬레이션 실행하기

    $USERNAME: sim_vehicle.py --console --map

Guided 모드로 변경

    STABILIZE> mode guided

Arming하기

    GUIDED> arm throttle

고도 40m으로 자동 이륙하기

    GUIDED> takeoff 40

특정 점으로 이동하기 (위, 경, 고도)

    GUIDED> guided -35.3621741 149.16511256 40
다 도착하면 모드를 착륙 모드로 변경하기

    GUIDED> mode land

혹은 시작지점으로 돌아와서 착륙할 수 있다. (Return to Launch)

    GUIDED> mode rtl

[5]를 참고하면 어떤 비행 모드가 있는지 볼 수 있다.

앞서 사용한 모드 GUIDED와 RTL은 고도,위치를 자동으로 제어하고, GPS를 사용한다.

Land는 고도를 자동으로 제어하고 위치를 사용자가 제어하며, GPS를 사용한다.

구동 사진은 아래 더보기 클릭

더보기
시작화면 / takeoff 수행 중 / guided로 특정 점으로 이동하기
RTL로 착륙하러 오기 / 착륙

Gazebo[6]

Gazebo 시뮬레이션 환경 구성하기

-----

Gazebo 플러그인 설치하기

-----

시뮬레이터 실행하기

1) Gazebo 환경 실행시켜주기

    gazebo --verbose worlds/iris_arducopter_runway.world

2) 다른 터미널 창에서 ArduCopter의 SITL 시뮬레이션 실행하기

    cd ~/ardupilot/ArduCopter

    ../Tools/autotest/sim_vehicle.py -f gazebo-iris --console --map

앞서 본 SITL처럼 같은 명령어로 이륙시켜본 결과는 다음과 같다.

Gazebo에서 SITL 시뮬레이션 구동 결과, 이륙 명령어 입력 후 결과 사진

 

 

AirSim[7]

AirSim 설치하기

------

AirSim 빌드하기

----

Unreal 환경 설정하기

-----

AirSim SITL 실행하기

1) 사용할 기체에 대해 내 문서/settings.json를 수정하여 세팅해준다.

2) AirSim을 켜기 전에 ArduPilot SITL을 먼저 실행한다.

    sim_vehicle.py -v ArduCopter -f airsim-copter --console --map

3) AirSim을 켜준다.

4) 끌 때는 AirSim을 끄고 ArduPilot을 꺼준다.

 

 

 

728x90

+ Recent posts