들어가며
PX4와 Gazebo 시뮬레이션을 구성할 때, 고정익 비행기는 LiftDragPlugin 을 통해서 모델링을 해야했는데, 비행시뮬레이션 등을 만들어온 입장에서는 공력 미계수 등을 반영할 수 없어서 Plugin을 만들어야할 지, 아직 PX4으로 고정익은 멀었다고 생각할 지 고민이 많았다.
놀랍게도 PX4 v1.14 부터 Advanced Lift Drag Automation Tool 이라는 이름으로, 와류 격자법 (Voltex Lattice Method) 을 이용한 공력해석 프로그램인 AVL(Athena Voltex Lattice) 프로그램으로 만든 공력 해석 결과를 사용할 수 있게 되었다.
따라서 이를 사용하기 위해서 Linux 에서 AVL 을 사용하는 방법을 정리해보도록 하려한다.
AVL 사용 관련 요약
- 조종면은 aileron, elevator, rudder 만이 가능하다 [2]
1. AVL 파일 다운로드
MIT의 Mark Drela 교수가 공개한 AVL 프로그램을 다운로드 받고자 사이트 [1] 으로 가서 linux 용을 다운로드 받고 압축을 푼다.
wget https://web.mit.edu/drela/Public/web/avl/avl3.36.tgz
tar -xf avl3.36.tgz
압축 푼 Avl 폴더의 README 를 따라서 설치를 진행하자.
2. Xplot11 라이브러리 빌드
아래와 같이 컴파일러를 설치한 후에 빌드를 진행한다.
sudo apt update
sudo apt install gfortran
cd $AVL_PATH/plotlib
make gfortran
3. EISPACK 라이브러리 빌드
아래와 같이 컴파일러에 맞추어 빌드를 진행한다. 이때 Warning 이 좀 나는데 포트란 버전에 의한 것이다.
cd $AVL_PATH/eispack
make -f Makefile.gfortran
4. AVL 프로그램 빌드하기
그냥 빌드하면 에러가 난다.
[AVL_PATH]/bin/Makefile.gfortran 파일의 5~6번째 줄을 수정하고 진행하자. 나는 AVL 폴더의 경로를 아래와 같이 했기 때문에 수정한 내용은 다음과 같다. 개인적인 추천으로는 avl 사용시에 상대경로로 기체 형상 파일을 찾기 때문에 runs 폴더에 두는 게 나을 것 같다.
BINDIR = ${HOME}/Avl/bin
BINDIR = ${HOME}/Avl/runs # runs 폴더에 avl 실행파일 생성 지시
그리고 빌드를 진행한다.
cd ${AVL_PATH}/bin # bin 에 avl 파일 생성
make -f Makefile.gfortran avl
위와 같이 빌드를 통해서 bin 파일에 avl 실행파일이 실행된 것을 확인 할 수 있다.
5. AVL 실행해보기
AVL 프로그램이 있는 위치로 가서 실행해보자.
./avl
6. 간단한 사용방법
Bubble Dancer 라고 하는 비행체를 가지고 간단히 해보자. 해당 기체는 아래와 같은 글라이더이다.
1) 형상정보 불러오기 load
load bd.avl
2) 관성정보 불러오기 mass
아래 명령어를 입력한 후에 mset, 그리고 엔터를 입력해서 적용한다.
mass bd.mass
3) 순항조건 설정하기
OPER 를 입력하여 들어가면 운용점에 대해서 연산을 수행할 수 있다.
맨 위의 변수와 제약조건을 기반으로 연산을 수행하며,
일반적으로 공력 미계수를 얻는 조건은 steady-state, 정상 상태에서의 값을 얻으려고 한다.
이에 맞추어 특정 속도에서 트림 엘리베이터 값을 맞춰보자.
C1 을 입력하면 해당 형상과 관성정보에 대해서 수평 비행 조건에서의 조건을 계산해주는 기능이 있다.
아래와 같이 순항속도 V를 8m/s으로 입력하면 양력 계산식으로부터 등속 수평 비행시의 양력 계수 CL를 계산해준다.
엘리베이터 트림 값으로 제약조건을 피칭모멘트가 0이 되도록 설정한다.
OPER에서 X 를 입력하여 공력 계수 연산을 수행한다.
순항 속력 v=8m/s 일 때, 받음각이 -0.85도에서 양력계수 CLtot=0.3567, 엘리베이터 트림 제약조건인 Cmtot = 0을 만족하는 것을 확인할 수 있다.
순항 속력 5m/s는 다음과 같다.
아래 위치로 가면 Gazebo에 avl 을 사용하기 위한 툴이 있다.
[PX4_PATH]/Tools/simulation/gz/tools/avl_automation/
앞서 키보드로 입력한 내용은 avl_steps.txt 라고 하는 파일에 정리되어있으며, input_avl.py 를 실행할 때 그대로 명령어를 입력하게 된다.
7. AVL 돌려서 Gazebo 파일 만들기
input.yml 파일에 해석을 위한 정보 등을 내 비행기의 스펙에 맞추어 넣는다.
그런 후 다음의 명령어를 입력하면 해당 이름의 폴더에 SDF 파일이 생성된다.
python input_avl.py --yaml_file input.yml
생성된 SDF 파일의 내용을 Gazebo 모델 파일 인 SDF 파일에 추가하면 완성이다.
Reference
[1] https://web.mit.edu/drela/Public/web/avl/
[3] Advanced Lift Drag (AVL) Automation Tool, https://docs.px4.io/main/en/sim_gazebo_gz/tools_avl_automation.html
*** EOF ***
'Modeling' 카테고리의 다른 글
[Modeling] Focke-Wulf FW-190 스케일기체 모델링하기 (0) | 2020.07.26 |
---|