興味深いライブラリを見つけた。Modelica_DeviceDriversというもので、シミュレーション中にキーボード、マウス、ジョイスティック等からの入力を受け付けたり、別のソフトウェアとのデータ通信を行ったりできるライブラリだ。

例により、記事を通して言いたいことを、冒頭に書いておこう。

  • 既存かつ無償公開されているlibraryに、計算中に入力を与えると言ったインタラクティブシミュレーションを実現できる素晴らしいものが有る。活用すれば、Modelicaによるシミュレーションが何倍も面白くなる可能性を秘めている。

これを使えば、途中で入力操作を行える航空機やエンジンのシミュレーションモデルを作れそうだ。さらに、他ソフトとのデータ通信も行えるなら、FlightgearやX-planeのフライトモデルをModelicaで作ったものに入れ替えてフライトすることが出来るようになる可能性も高い。(X-planeには他ソフトや自作プログラムをシミュレーション内に組み込むためのAPIが有るようだがハードルが高いし、Documentaion,Exampleが充実していなくてモデル入れ替え実現できていない。)


ちなみに、DeviceDriversライブラリはリアルタイムシミュレーション(シミュレーションの一秒と現実の1秒を合わせる)を行う必要があるので、使うにはリアルタイムシミュレーション用のModelica_Synchronousライブラリもインストール・ロードしておく必要が有る。

どちらも、OpenModelicaをインストールすると3rd partyライブラリとして付いてくるので、OpenModeilca導入済みの方は改めてダウンロード・インストールする必要は無い。OpenModelicaのOptionから読込み設定を行うだけで使えて、ソースコードも観れる。だが、ソースコードだけ見たい方、doc/helpだけ見たい方向けにgithubページリンクを載せておく。


TestInputKeyboard_03

下図はExampleに収録されているデモモデル。リアルタイムシミュレーション実行Componentと、カーソルキー、スペースキー、エンターキーの入力操作を検知しconnectorから出力するコンポーネントが配置されたシンプルなもの。早速、シミュレーション時間を長めに設定し直して(デフォルトでは1 [s]になっていたと記憶している)、実行してみよう。

TestInputKeyboard_00

シミュレーション時間を5 [s] に設定し実行した。進捗バーの進みがゆっくり進む。これは正しい挙動で、1 [s] 分の実行に現実の1 [s] を意図して費やしているためだ。実行時間データを見ると、誤差は有れど約5 [s] 所要していることが確認できる。

TestInputKeyboard_01

下図が、シミュレーション実行中に4回「↑」キーを押下した結果。keyUpというvariableの値がキーを押した時に1になり、4回パルスが立っている事を確認できる。そして、押下継続時間がパルス幅となる。4回目の押下を意図的に長押しにしており、意図通りパルスが大幅に長くなっている。

TestInputKeyboard_02

これは興味深いライブラリだ。AircraftDynamicsライブラリの飛行機の飛行挙動解析のようなシミュレーション題材は、rampやtime tableによる予め定められたinputだけでなく、インタラクティブに、シミュレーションを実行して結果を見ながらinputを操作出来る方が遥かに面白くなる。outputを作りこみ出来れば簡易なフライトシミュレータゲームを作れることになる。

本記事ではinputを使ってみた速報に過ぎないが、以後output周りを調べ、AircraftDynamicsライブラリの可視化とシミュレーションのインタラクティブ化を実施していこうと思う。

以上




ブログ移転の案内

この記事 でお知らせしたとおり、本ブログはブログサービス下での運営を止め、個人サーバー上のwebページに引越しします。livedoorブログが存続している限り本ブログは閉鎖せず残り続けますが、 この記事 以降の記事は総て こちらの新ブログ にて公開してゆきますので、これからもよろしくお願いします。

文献紹介

Modelica, Model-based degign

Modelicaによるシステムシミュレーション入門

入門者に最適の書。Modelicaって何?という導入から、簡単なコードベースやGUIベースの例モデルまで解説。筆者も入門時に手に取った。訳に少し癖が有る印象だが、英語書物がハードルになる方には確かな助けになる筈。


[amazon、紙面・電子]
[楽天、紙面書籍版] [AU payマーケット、紙面書籍版]
[honto、電子版] [楽天、電子書籍版] [AU payマーケット、電子書籍版] [7ネットショッピング、電子書籍版]

Introduction to Modeling and Simulation of Technical and Physical Systems with Modelica

「Modelicaによるシステムシミュレーション入門」の英語版原書。英語に抵抗がなければこちらを入手したら良いと思う。


[amazon、電子版・紙面版]
[Yahoo、紙面書籍版]

Principles of Object-Oriented Modeling and Simulation with Modelica 3.3 A Cyber-Physical Approach (Wiley-IEEE Press)

本格的にModelicaを使い込むなら必携の書。辞書的に適宜調べものをするような形で手元に有ると頼もしい武器。量が多いので電子版もお勧め。筆者もKindle版を所有し、かなりの頻度で参照している。


[amazon、電子版・紙面版]
[楽天、電子書籍版]

はじめてのModelicaプログラミング -1日で読める わかる Modelica入門-


[amazon、紙面版]

Modelicaによるモデルベースシステム開発入門-ModelicaとFMIの活用による実践的モデルベース開発-


[amazon、電子版・紙面版]

Introduction to Physical Modeling With Modelica


[amazon、紙面版] [楽天、紙面書籍版]

Development of Modelica Library for Dynamics Simulation of CHP Plant: Modelica library structure design and modeling for transient simulation of Combined Heat and Power (CHP) plant


[amazon、紙面版]

Python

入門 Python 3


[amazon、紙面版]

かんたん Python


[honto、電子版]

スッキリわかるPython入門 (スッキリシリーズ)


[amazon、電子版・紙面版]

ゲームを作りながら楽しく学べるPythonプログラミング


[amazon, 紙面版・電子版] [honto、電子版]

流体力学(Fluid Mechanics)

Fundamentals of Fluid Mechanics


[amazon、紙面版] [Yahoo、紙面書籍版]

[amazon、紙面版]

[Yahoo、紙面書籍版]


熱力学(Thermodynamics), 熱機関(Engine, power system)

Fundamentals of Engineering Thermodynamics


[amazon, 紙面版]

Fundamentals of Jet Propulsion with Applications


[amazon、電子版・紙面版]
[amazon、紙面版]


航空力学/飛行力学(Aerodynamics/Flight Dynamics)

航空機の飛行力学と制御


[amazon, 紙面版]

Flight Stability and Automatic Control


[amazon, 紙面版]


------------------------------