한국항공우주연구원 - 비행제어컴퓨터 HILS 시스템의 통합 운용을 위한 GUI 소프트웨어 개발

임정현, 박무혁 연구원, 선임 연구원, 한국항공우주연구원

"LabVIEW를 사용함으로써 어떤 시뮬레이션 소프트웨어 및 하드웨어와도 쉽게 통합될 수 있는 유연성을 제공할 뿐만 아니라 비행제어컴퓨터 검증을 위한 모의 비행 및 다양한 시험평가가 가능하며 유연한 확장을 통하여 기존의 능력으로는 처리할 수 없었던 요구를 만족시킬 수 있었다. "

- 임정현, 박무혁 연구원, 선임 연구원, 한국항공우주연구원

과제:

본 프로젝트는 스마트 무인기 기술개발의 세부과제로서 항공기 개발의 핵심 부품인 비행제어컴퓨터의 설계, 분석, 시험평가 및 검증을 위한 HILS(Hardware-In-the-Loop-Simulation) 시스템의 통합 운용 소프트웨어를 개발하는 것을 목표로 하고 있다.

솔루션:

본 소프트웨어는 시뮬링크 기반의 항공기 동역학 모델을 실시간 코드화하여 QNX RTOS상에서 운용되는 타겟 컴퓨터에서 실행시키고 항공기에 탑재되는 실제 비행제어컴퓨터와 연동하여 실시간 시뮬레이션을 수행하는 HILS(Hardware In the Loop Simulation)시스템의 운용 소프트웨어로서 전체 시스템의 모니터링, 로깅, 비행환경 설정, 제어입력 처리 등의 기능을 수행한다.

요약 :

본 소프트웨어는 시뮬링크 기반의 항공기 동역학 모델을 실시간 코드화하여 QNX RTOS상에서 운용되는 타겟 컴퓨터에서 실행시키고 항공기에 탑재되는 실제 비행제어컴퓨터와 연동하여 실시간 시뮬레이션을 수행하는 HILS(Hardware In the Loop Simulation)시스템의 운용 소프트웨어로서 전체 시스템의 모니터링, 로깅, 비행환경 설정, 제어입력 처리 등의 기능을 수행한다.

 

개발 배경 :

본 프로젝트는 스마트 무인기 기술개발의 세부과제로서 항공기 개발의 핵심 부품인 비행제어컴퓨터의 설계, 분석, 시험평가 및 검증을 위한 HILS(Hardware-In-the-Loop-Simulation) 시스템의 통합 운용 소프트웨어를 개발하는 것을 목표로 하고 있다. 비행제어컴퓨터 HILS 시스템은 네트워크 시스템 구조를 이용한 다중 프로세서와 복잡한 항공기 동역학 코드 및 다양한 인터페이스 환경을 포함하고 있기 때문에 개발 속도를 향상시키고 코드 재사용이 가능한 프로그램을 개발하기 위해서는 GUI 중심의 HILS 운용 소프트웨어 개발이 필수적이다 기존의 HILS 운용 소프트웨어는 텍스트 기반의 언어를 사용하여 개발하였기 때문에 프로그램 재사용 및 유지보수가 어렵고 사용자가 C언어 내부 소스 코드를 운용 환경에 따라 변경해야 하는 등 다수의 문제점이 존재하고 있었다. 또한 소프트웨어 개발시간이 길고 비전문가가 프로그램을 운용하려면 일정한 학습시간을 필요로 했기 때문에 소수의 전문가들만이 프로그램을 운용할 수 있었다. 따라서 이러한 문제점들을 해결하고 유저의 요구사항에 따라 소프트웨어 재정의가 간편하고 하드웨어와 쉽게 통합될 수 있는 그래픽 기반의 G언어를 이용한 유저 인터페이스 프로그램이 요구되었다.

 

본론 :

HILS통합 운용 소프트웨어의 주요 역할은 항공기 시뮬링크 모델을 선택하여 타겟 컴퓨터에서 실행시키고 실제 비행제어컴퓨터와 연동하여 실시간 시뮬레이션 수행 및 전체 HILS시스템의 운용을 관리하고 네트워크상의 컴퓨터들과 비실시간 통신인 UDP를 사용하여 제어 명령 및 데이터를 주고 받는 것이다. 호스트 컴퓨터에서는 Matlab/Simulink기반의 항공기 동역학 모델을 생성하고 RT-LAB을 이용하여 시뮬링크 모델을 컴파일하고 리얼타임 타겟 컴퓨터로 로드시킨다. RT-LAB은 상용 소프트웨어로써 Matlab/Simulink를 기반으로 생성된 모델을 자동으로 C소스 코드로 변환하고 컴파일 및 타겟 시스템에 로드시켜 실시간 시뮬레이션 할 수 있는 환경을 제공한다.

 

하드웨어 구성

본 HILS 시스템의 하드웨어 구성은 그림 1과 같다. 전체 네트워크상의 프로세서로는 윈도우 환경에서 운용되는 호스트 컴퓨터(Host Computer), 센서 및 액추에이터 모사 컴퓨터(Sensor & Actuator Simulation Computer, SASC), 영상컴퓨터(Image Generation Computer, IGC)가 있으며 RTOS상에서 실시간 연산을 수행하는 타겟 컴퓨터(Target Compter) 및 비행제어컴퓨터(Flight Control Computer, FCC)가 있다. 각각의 역할 및 기능은 다음과 같다.

 

호스트 컴퓨터

HILS 통합 운용 소프트웨어가 탑재되어 있으며 타겟 컴퓨터, 센서 및 액추에이터 모사 컴퓨터와 비실시간 통신인 UDP를 사용하여 제어 명령 및 데이터를 주고 받는다. 호스트 컴퓨터에서 실시간 시뮬레이션을 위한 항공기 시뮬링크 모델을 생성한다.

 

센서 및 액추에이터 모사 컴퓨터

센서 및 액추에이터 모사 컴퓨터는 실제 탑재 센서와 항공기의 조종면을 움직이는 액추에이터(조종면 작동기)의 역할을 모사하는 컴퓨터이다. 액추에이터 모사는 조이스틱 입력을 RS 422을 이용하여 비행제어 컴퓨터로 전송하고 비행제어컴퓨터로부터 ARINC 429 인터페이스를 통해 입력 받은 액추에이터 변위각에 적절한 지연 효과를 생성하여 호스트 컴퓨터로 UDP 통신을 이용하여 전송한다. 타겟 컴퓨터에서 실시간 연산된 항공기 비행상태 데이터는 호스트 컴퓨터를 통해 센서 및 액추에이터 모사 컴퓨터로 전송된다. 센서 모사란 실제 센서를 대체하는 가상 센서 신호를 생성하는 역할을 한다. 본 시스템 구성에서는 모션테이블에 장착되어 있는 AHRS 센서 신호를 RS232를 사용하여 입력 받아 처리하고 일부 신호들은 호스트 컴퓨터로부터 전송 받은 비행 상태 데이터에 센서 모델링된 노이즈를 첨가하여 사용한다. 센서 및 액추에이터 모사 컴퓨터의 운용 소프트웨어는 LabVIEW를 사용하였으며 HILS 운용 소프트웨어에서 VI Server를 사용하여 원격으로 센서 및 액추에이터 운용 소프트웨어의 프런트패널을 오픈하고 실행시킬 수 있다.

 

영상 컴퓨터

영상 컴퓨터는 항공기의 위치 및 자세를 3차원 영상으로 표현하는 기능을 수행한다. 타겟 컴퓨터에서 UDP를 통해 영상 컴퓨터로 위치 및 자세 정보를 전송하여 디스플레이 한다.

 

타겟 컴퓨터

타겟 컴퓨터는 QNX RTOS상에서 운용되며 실제 항공기의 운동을 모사하는 컴퓨터로서 항공기의 수학적 모델링을 바탕으로 실시간 연산을 수행하고 그 결과를 호스트 컴퓨터와 영상컴퓨터로 전송한다. 또한 3축 모션 테이블의 구동을 위해 DAQ카드를 사용하여 비행 데이터를 아날로그 신호로 변환하여 모션테이블로 전송한다.

 

비행제어컴퓨터

비행제어컴퓨터는 실제 항공기에 탑재되는 실물 시스템으로서 비행제어와 자동비행에 필요한 연산을 수행하며 비행체의 생존성과 신뢰성에 관계되는 비행기의 핵심이라고 할 수 있다. 비행제어컴퓨터는 센서 및 액추에이터 모사 컴퓨터에서 센서 정보 및 조종입력을 ARINC 429와 RS 422 인터페이스를 이용하여 입력 받아 액추에이터 변위값을 실시간으로 계산하여 센서 및 액추에이터 모사 컴퓨터로 ARINC 429를 통하여 전송한다.

 

소프트웨어 구성

HILS운용 소프트웨어의 주요 기능은 타겟 컴퓨터와 연동하여 시뮬링크 모델을 타겟 컴퓨터에 로드 및 실행시키기 위한 부분과 I/O 인터페이스 부분, 데이터 획득 및 저장, 비행환경 및 제어명령 전송, 상태 모니터링 및 디스플레이라고 할 수 있다. HILS 통합 운용 소프트웨어의 구성은 다음과 같다.

 

프런트패널

방대한 양의 비행 데이터를 모니터링하고 네트워크상의 여러 프로세서들을 제어하기 위해 프런트패널을 탭 컨트롤을 사용하여 구성하였다. 탭의 구성은 다음과 같다.
Main panel
Monitoring
FCC
Properties

 

Main panel탭은 HILS 운용, 비행환경 설정 및 비행상태를 표시하는 계기판들로 구성된다. HILS 운용을 위한 컨트롤로는 Run/Pause/Single step/Load/Reset/Quit 버튼이 있다. 이 중 Single step은 샘플링 시간간격만큼만 시뮬레이션 하기 위한 기능이다. Load 및 Reset 버튼은 HILS 운용 중 현재 로드 되어 있는 모델을 Reset 버튼을 이용하여 해제하고 새로운 모델로 변경할 때 유용하게 사용할 수 있다. 모든 HILS 운용을 중지하고자 할 경우에는 Quit 버튼을 누르면 시뮬레이션이 종료된다. 비행환경 및 제어명령에 관련된 컨트롤들을 전면부에 배치하여 시뮬레이션 중에도 비행 모드 변경, 플랩 셋팅 변경, 나셀 틸팅, 조종입력, 바람모델 변경등의 기능을 수행하여 다양한 시험평가가 가능하도록 하였으며 데이터 로깅 버튼을 누르면 비행데이터를 저장할 수 있다. 비행상태를 표시하는 계기판들을 프런트패널 하단부에 배치하여 현재 비행상태를 쉽게 식별할 수 있을 뿐만 아니라 프런트패널 오른쪽 상단에는 시뮬레이션 운용 상태를 표시하기 위한 인디케이터 및 LCD 등을 두어 현재 소프트웨어 운용 상태를 사용자가 쉽게 확인할 수 있다.


Monitoring탭은 비행 데이터를 차트(Chart)를 이용하여 디스플레이 하기 위한 부분이다. 모니터링부의 기능을 업그레이드 하기 위해 LabVIEW의 ActiveX 컨테이너를 사용하여 Map ActiveX를 프런트패널상에 배치하였다. Map ActiveX는 항공기 위치 데이터에 따른 지도상의 이동경로를 실제 지도 위에 표시하는 역할을 하며 비행제어컴퓨터 항법 알고리즘 검증시 유용하게 사용될 수 있다. 마지막으로 FCC탭은 비행제어컴퓨터에 관계되는 컨트롤들을 위한 공간이며 Properties탭은 프로그램의 세부 설정을 위한 공간이다.

 

블록다이어그램

블록다이어그램의 구성은 복잡하고 방대한 와이어와 아이콘들로 인해 각 단계별로 Sequence를 사용하여 순차적으로 프로그램이 실행되도록 하였다. 초기화 루틴에서는 UDP 오픈 및 VI Server를 이용하여 센서 및 액추에이터 모사 컴퓨터의 운용 소프트웨어를 오픈 하고 실행시킨다. 두 번째 Sequence에서는 타겟 컴퓨터와 연결하고 시뮬링크 모델을 타겟 컴퓨터로 로드 및 실시간 연산을 실행시킨다. 세 번째 Sequence에서는 while loop문을 포함하고 있으며 HILS 운용에 관계된 버튼들을 처리하고 타겟 컴퓨터와의 데이터 수신 및 전송에 관계된 루틴을 포함하고 있다. 비행환경 설정 및 제어명령에 관한 컨트롤들을 처리하고 수신 받은 데이터를 디스플레이 한다. 디스플레이 부분에서는 ActiveX 기능을 사용하여 비행 계기판 오브젝트를 생성하고 비행 데이터를 연결하여 실제 조종석 계기판과 같은 환경을 구축하였다.

 

결론 및 솔루션 개발 후 얻게 된 이점 :

지금까지 LabVIEW를 사용하여 개발된 HILS 통합 운용 소프트웨어에 대하여 소개하였다. 개발된 소프트웨어는 항공기와 같은 고도로 복잡한 동적 모델을 신속하게 타겟 컴퓨터에 로드시켜 실시간 연산 및 비행 시뮬레이션 할 수 있는 강력한 능력을 제공할 뿐만 아니라 네트워크 기반의 컴퓨터들과 다양한 인터페이스 통신을 LabVIEW에서 구현함으로써 모든 HILS 운용을 통합시켰다. LabVIEW를 사용함으로써 어떤 시뮬레이션 소프트웨어 및 하드웨어와도 쉽게 통합될 수 있는 유연성을 제공할 뿐만 아니라 비행제어컴퓨터 검증을 위한 모의 비행 및 다양한 시험평가가 가능하며 유연한 확장을 통하여 기존의 능력으로는 처리할 수 없었던 요구를 만족시킬 수 있었다. LabVIEW를 사용한 솔루션 구축 결과는 다음과 같이 요약할 수 있다.

 

비행제어컴퓨터의 신뢰성 있는 분석

실제 비행시험을 하지 않고서도 다양한 환경에서의 시험평가가 가능하므로 비행제어컴퓨터의 신뢰성 있는 분석을 수행할 수 있음

 

각 서브시스템간의 유기적인 관계를 분석

HILS 통합 운용에 따른 각 서브시스템간의 유기적인 관계를 분석함으로써 시스템 오작동 시 사전에 충분히 대응할 수 있는 시간을 확보할 수 있다.

 

HILS 운용의 효율화

다수의 프로세서와 다양한 인터페이스를 가진 HILS환경을 LabVIEW를 이용하여 쉽게 통합시키고 구현함으로써 HILS 운용의 효율성을 극대화하였다.

 

개발시간 단축 및 비용절감 효과

텍스트 기반의 언어를 사용하는 것보다 개발시간을 단축시켰고 그로 인한 비용절감의 효과를 거두었다. 향후 다른 과제를 수행할 시에도 본 운용 소프트웨어를 재사용함으로써 개발시간을 최대한 단축시킬 수 있으리라 예상한다.

 

필자 정보:

임정현, 박무혁 연구원, 선임 연구원
한국항공우주연구원