최상급(예: FAA 규정 Level-D) 시뮬레이터는 보통 동역학호스트(Dynamics Host)와 영상발생기(Image Generator), 반력제어시스템(Control Loading System)등 많은 서브시스템들로 구성되고, 이중 영상쪽을 살펴보면 동역학호스트가 전해주는 모델의 상태 정보를 영상발생기에 적절한 표현으로 전환해주는 중간 매개체인 모듈이 존재한다. 이 모듈은 동역학 호스트나 영상발생기가 변경되면(특히 인터페이스 부분) 거의 함께 수정되어야 하는데, 불행하게도 그런 일은 매우 자주 발생한다. 최초 Boeing으로 시작하여 현재 여러 관련 업체들이 이를 해결하기 위한 표준안으로 CIGI(Common Image Generator Interface, http://cigi.sourceforge.net/overview.php) 인터페이스 프로토콜을 제안하고 발전시키고 있는데, 만일 동역학 호스트나 영상발생기가 이 프로토콜을 100% 지원한다면 동역학 호스트는 그대로 두고도 최신형 혹은 이기종 영상발생기로 교체할 수 있는 커다란 장점이 있겠지만, 최상위 시뮬레이터의 영상발생기는 기술적, 비용적인 측면에서 쉽게 교체할 수 있는 시스템이 아니다.
교체의 이유가 아니라도 시스템 개발기간동안 많은 인터페이스를 손보게 되고 따라서 중간 모듈은 자주 바뀌게 되는데, 이 부분을 매번 빌드할 필요가 없는 스크립트 언어로 대신하면 아주 편리할 것 같다는 생각을 했고, 시뮬레이터에 특화된 기능과 구조를 가지고 있는 최적의 스크립트 언어가 필요했다. 그래서 기반이 부족하기는 했지만 과감히 스크립트 언어를 만들게 되었다.
최근 코드를 정리하는 과정에서 본 코드를 공개하기로 결정하였고 다음 링크에서 이를 확인할 수 있다.
https://github.com/focalray/Embedded-Script-Language/tree/master
저장된 코드들 중 *.s 파일들이 ESL을 실제로 적용한 스크립트들이며 잘 동작하던 것들이다. 다음 링크에서 해당 스크립트로 동작하는 녹화영상을 볼 수 있다. (3분 45초부터) 미리 렌더링된 영상이 아니라 실시간으로 렌더링 중인 데모 영상을 녹화한 것이다.
https://youtu.be/uQ8KE-KUZKM
특수한 목적의 언어라 다른곳에 쓰이기는 쉽지 않겠지만, 누군가에게 참고정도는 되지 않을까 한다.
새로운 언어이므로 이를 설명하는 사용자 가이드 문서가 .pdf로 포함되어 있다. 아래는 그 문서에 포함된 개발 목적을 설명한 내용이다.
Prologue
HBVM has been designed for Image Generator since 2007. A scripting system was required to replace the hard-coded Host-to-IG interface module. Interface module implementers can now easily re-code the script and run it as desired without the compilation and build process. HBVM scripts can be programmed. It also shares variables, functions, and structures and interacts with host applications using events. HBVM can control host applications and vice versa (two-way operation). The VM after the abbreviation HB stands for the virtual machine you know. Therefore, object code is generated internally rather than compiled. And object code can be disassembled. Object code can also be generated in binary format and used by HBVM.
No comments:
Post a Comment