5. MATLAB과 연동
5.1. HL-20 예제
보통 시뮬레이션을 MATLAB에서 수행하므로 MATLAB은 Flight gear와 연동할 수 있는 여러 기능을 준비해놓았다.
Aerospace blockset을 다운받는 것이 먼저 필요한 과정이다.
Aerospace blockset에는 몇 가지 example이 준비되어있고 flight gear와 연동할 수 있도록 잘 되어있는 예제도 있다.
HL-20 예제가 대표적이다. 그런데 이 예제는 처음부터 끝까지 거의 다 해놓았기 때문에 실제 내가 시뮬레이션을 만들어서 적용하기는 어렵다.
위의 시뮬레이션에서 flight gear라고 써진 저 빨간 박스를 누르면
위의 창을 볼 수 있다. steps로 나와있는 순서대로 따라가면서 버튼만 눌러주면 된다.
1번은 FlightGear를 설치하는 것이고,
FlightGear를 다운받아 설치했다면 그 파일경로를 기억해놨다가 2번 항목의 Specify FlightGear base directory에 그 경로를 복사, 붙여넣기하면 된다.
그리고 3번 버튼을 눌러서 Base Directory인지 확인하고 확인이 되었다면 4번 버튼이 활성화된다.
4번을 누르면 알아서 FlightGear가 실행된다.
4번까지 완료되었다면 다음과 같은 FlightGear 화면을 볼 것이다. (앞으로는 FlightGear를 FG라고 부르겠다)
사실 처음에는 덩그러니 배경만 보일텐데 키보드에서 V를 눌러주면 View를 바꿀 수 있다. 위는 helicopter view다.
이제 simulation run만 눌러주면 MATLAB과 FG가 연동되어 FG화면이 움직이는 것을 볼 수 있을 것이다.
그러나 이 예제는 MATLAB이 거의 떠먹여주는 예제이기 때문에 내가 실제로 써먹기에는 아쉬운 점이 있다.
5.2. SkyHogg 예제
그래서 좀 더 실제적인 방법을 알기 위해 Simple airplane 예제를 가져왔다.
SkyHogg example인데 구체적으로 어떻게 FG와 연동되는지 알 수 있다.
위 그림에서 visualization subsystem에 들어간다.
그러면 아래와 같이 나온다.
이 그림을 보면 진한 파란색 글씨로 direction이 나와있다. 저 direction만 따라가도 절반은 간다.
5.2.1. FlightGear 설치
1번 항목을 누르면
https://kr.mathworks.com/help/aeroblks/introducing-the-flight-simulator-interface.html
팝업창이 뜨면서 위의 링크와 동일한 내용의 help 내용을 보여준다. 읽어보면 FG를 설치하는 방법 등에 대해 설명하는 것이다. 사실 HL-20 예제를 하면서 이미 설치했다면 크게 신경쓰지 않아도 된다.
5.2.2. Aircraft 모델 다운
이미 FG를 설치했다는 전제 하에
2번을 보면 PA28-161 geometry model을 설치하라고 한다. 이 말은 다음과 같다.
내가 이전에 쓴 글(https://normal-engineer.tistory.com/189)에서 추가적인 aircraft의 geometry를 다운받을 수 있다고 했었다.
그래서 http://mirrors.ibiblio.org/flightgear/ftp/Aircraft/ 이 링크를 들어가면
위 글의 링크를 들어가면 위와 같이 온갖 aircraft 파일이 있다.
여기서 pa28-161 파일을 다운받아 < FG가 설치된 경로/data/Aircraft > 이 경로에 ZIP파일을 풀어야 한다.
이렇게 하지 않으면 PA28-161 모델이 없어서 실행이 불가능하다.
사실 FG를 열어서 보면 원하는 aircraft geometry를 다운받을 수 있도록 기능이 있지만 정작 다운받으면 그 다운받은 곳이 어디인지 알 수가 없었다. 원래는 < FG가 설치된 경로/data/Aircraft > 여기에 있어야 하는데 적어도 나는 찾을 수 없었다.
5.2.3. Run Script 생성
그 다음에는 run script를 생성해야하는데 이 파일을 FG가 돌아가기 위해 필요한 초기조건 및 시간, 시작점, 사용하는 비행기 모델 등 다양한 정보를 담고 있는 파일이다.
위의 시뮬링크 그림을 보면 다음과 같은 block을 찾을 수 있다. 이 block은 Aerospace blockset을 다운받아야만 찾을 수 있는 block이다.
이 block을 클릭하면
위 그림처럼 나오는데 대부분의 설정은 건드릴 게 없고 (본인이 초기조건을 바꾸고 싶다면 바꿔놓자)
FlightGear - Network - File 이 있는 탭에서 File에 들어간다.
거기서 Output file name은 그대로 두는 편이 나을 것이다.
그리고 FlightGear base directory는 본인이 FG를 설치한 곳으로 적는다. (나는 위와 같은 경로에 설치해놓았기 때문에 default 값과 다르다.)
참고 : Network 부분은 다른 컴퓨터에서 FG에 접근하고 싶을 때 쓰는 설정인 것 같은데 나는 MATLAB 시뮬링크가 돌아가는 컴퓨터와 FG가 돌아가는 컴퓨터가 동일하므로 딱히 건드리지 않았다. 만약 각각 다른 컴퓨터로 진행한다면 따로 메뉴얼을 찾아봐야할 것이다.
이렇게 하고
Generate Script를 누르면 Run script가 생성된다.
생성된 스크립트는 이 시뮬링크 파일이 저장된 폴더에 같이 생긴다.
다음과 같이 runfg.bat이 생긴 것을 확인할 수 있다.
이 Run Script를 열어보면
D:
cd D:\FlightGear 2020.3
SET FG_ROOT=D:\FlightGear 2020.3\data .\\bin\fgfs --aircraft=pa28-161 --fdm=null --native-fdm=socket,in,30,localhost,5502,udp --fog-fastest --disable-clouds --start-date-lat=2004:06:01:09:00:00 --disable-sound --in-air --enable-freeze --airport=KSFO --runway=10L --altitude=7224 --heading=10 --offset-distance=4.72 --offset-azimuth=0 --enable-terrasync --prop:/sim/rendering/shaders/quality-level=0
다음과 같이 console command 형식으로 나오는데
내용을 자세히보면 다 내가 설정값임을 알 수 있다. 빨간색으로 쓴 부분은 초기조건과 관련 있는 부분이다.
5.2.4. Command 만들기
여기까지 하면 마지막 단계가 남았다. 실행을 편하게 하는 command를 설정하는 만들어서 클릭만으로 쉽게 FG를 실행하는 것이다.
원래는 MATLAB Command window에 그냥 명령어를 입력해도 되기는 한다만, 자주 시뮬레이션을 돌릴 거면 그 때마다 명령어를 입력하는 게 번거로워서 하는 작업이다.
나의 경우에는 위 그림에서 Favorite commands를 보면 'FlightGear'라고 저장을 해놓았다.
MATLAB help를 보면 MATLAB이 Favorite commands가 아닌 Shortcut으로 등록하라고 해서 많이 혼동이 있었는데 옛날 버전에서는 Favorite commands가 아니라 shortcut이었나보다.
위 그림에서 New Favorite을 누르면 command를 추가할 수 있으니 아래와 같이 써서 저장하면 끝.
5.2.5 실행해보기
이제 단축키도 등록했겠다, 위의 Favorite command에 있는 FlightGear 커맨드를 누르면, 앞서 생성한 run script를 실행해서 FG가 실행되고 실행된 채로 시뮬링크에서 Run(실행)을 하면 시뮬레이션이 돌아가는 것을 확인할 수 있다.
6. 다른 blocks
위에서 쓴 시뮬링크 blocks 외에도 FlightGear를 사용할 수 있는 다른 block들도 있으므로 더 알아보고, 알게된 기능이 있으면 추가로 글을 올리도록 하겠다.
참고하기 좋은 유튜버 분 (정말 무한한 감사)
https://www.youtube.com/watch?v=kFklbdU9eSQ&t=1s
더 알아보면 좋은 토픽
1. MATLAB 연동없이 단순 데이터 가지고 FlightGear 시뮬레이션을 하는 방법
2. 위 영상 주제인 control surface 구동까지 시뮬레이션으로 구현하는 것 (MATLAB 시뮬링크와 연동)
'기타 > 설계 프로젝트 System Design' 카테고리의 다른 글
[프로젝트] 솔리드웍스 파일(SLDASM)을 Obj 파일로 변환하기 (0) | 2022.08.29 |
---|---|
[프로젝트] DATCOM Input 파일 예시와 output 파일 예시 (4) | 2022.03.15 |
[시뮬레이션] Flight gear 사용법 (1) 기본 설치 및 간단한 것들 (0) | 2022.02.06 |
[프로젝트] Iterative Design Process (0) | 2021.01.19 |
[프로젝트] Digital DATCOM 다운로드 방법 (0) | 2021.01.03 |