環境構築(2)
今週は、RTAI-Labを動かしている所をお見せします。「フリーのリアルタイムシミュレーション環境がどんな感じか、手っとり早く調査したい!」という方は、30秒間だけ、スクリーンショットをざーっと流し読みしていただくだけでも価値があるかと思います。
RTAI-Labは、
・Scicos + RTAI-Lab
・MATLAB/Simulink/Realtime-Workshop + RTAI-Lab
の両方の組み合わせで動きます。ただし、いずれもLinux環境のみです。
残念ながら、MATLAB/SimulinkはWindows版しか持っていませんので、まずは Scicos を使って動かしてみました。
いずれ、RTAI-LabをWindowsに移植した際には、MATLAB/Simulinkとの組み合わせにもチャレンジしてみたいと思います。
下準備
まず、rootでログインして、次のコマンドを実行しておきます。
sync insmod /usr/realtime/modules/rtai_hal.ko insmod /usr/realtime/modules/rtai_lxrt.ko insmod /usr/realtime/modules/rtai_fifos.ko insmod /usr/realtime/modules/rtai_sem.ko insmod /usr/realtime/modules/rtai_mbx.ko insmod /usr/realtime/modules/rtai_msg.ko insmod /usr/realtime/modules/rtai_netrpc.ko ThisNode="127.0.0.1" sync
めんどくさいですね。あとで自動実行されるようにしましょう。
Scicosでモデリング
scicosはLinux上で動きます。しかし、SSとったりするにはWindowsのほうが便利です。そこで、Windows上にLinuxの画面を飛ばしてくる事にします。SSHのポートフォーワーディング機能と、XmingというフリーのWindows用Xサーバーを使用しました。
さて、まずはScilabから起動します。
scilabが起動したら、scicos と入力します。ツールバーが無いのが残念ですね。
起動した scicos は、こんな感じです。やっぱりツールバーがありません。
Palette > Pal Tree とすると・・・
こんなのが、別Windowで開きます。
RTAI-Lab専用のライブラリが用意されていますので・・・
こんなモデルを作ってみます。
この時計みたいなブロックって何なんでしょう?きちんと理解していないので、間違っているかも分かりません。どうやらこれは、離散系のシミュレーションをするときの、タイミングを生成するブロックのようです。この時計ブロックのしたにあるブロック5つは、ぜんぶこのタイミング指令に応じて動きます。Simulinkでいう、Triggered Subsystemみたいな感じです。Simulinkに慣れていると、すごく奇妙に感じます・・・
ちなみにこのモデルの意味ですが、
左側にあるのが、Sine波と、矩形波をだすブロックです。Simulinkにも同じのがありますね。
右側にあるのが、スコープ、メーター、LEDの3つのパーツに値を表示するためのブロックです。日本で一般的に売られているHILSは、とりあえずモデルはモデルで作っておいて、GUIは別に作ります。ですから、モデル上のどの信号が、どんなパーツに割り当てられるかは決まっていません。しかしRTAI-Labでは、モデル中にて「これはスコープで表示せよ!」という事を決めてしまうようです。これはこれで利点があるのですが、ちょっと違和感があります。いずれなんとかしましょう。
コード生成
先ほど作ったモデルをコード生成し、リアルタイム実行してみます。
Scicosでは、コード生成する際にはまずそれを1つのサブシステムに入れないといけません。そこで、ブロックをざーーっと選択して、右クリックメニューから「Region to Super Block」を選択します。
すると、こんな感じになります。
ここで、モデルをセーブします。
次に、Scicosのメニューから「RTAI」>「RTAI CodeGen」を選択します。すると、こんなダイアログがでますので、「OK」をクリックします。
すると、こんなかんじで Scilab の画面のほうのざーーっとログが流れます。これでコード生成、およびコンパイルは完了です。これは簡単ですね!
シミュレーション実行
ではいよいよ、生成されたモデルを実行しましょう。そこで、Linuxのターミナルにて、こんな感じで生成された実行形式を -v オプションつきで実行してやりましょう。
別のターミナルを開いて、そこから
xrtailab
と入力します。すると、こんな感じのGUIが開きます。
次に、実行中のモデルと接続してやります。今回は、リアルタイムシミュレーションと、GUI環境とを、同一のマシンで行いました。
すると、こんな感じになります。モデルの方で、スコープ1つ、メーター1つ、LED1つ、と決まっていますから、別段何かを指定しなくてもこれらのパーツが表示されます。
Scicosにて作成したスコープ、メータ、LEDに該当するGUIが、こちらで表示されます。
まとめ
今回は、とりあえず動かすところまで行きました。
Linux環境下ではありますが、
・モデリング
・リアルタイムシミュレーション
は、問題なく動いています。
HILSの3つの軸である「GUI等の使いやすさ」「スピード」「I/Oの豊富さ」で見てみると、正直どれもイマイチです。
特に、GUIが問題です。スコープ、メーター、LEDがあるのは良いのですが、スライダーなどの「GUI ⇒ モデル」方向のGUIパーツがありません。これはマズイですね。モデル中のパラメータは変えられるようですが、さすがにそれだけでは・・・という気がします。
ただし、なんといってもオープンソースです!気に入らないなら、自分で直せば良いのです。そのうち、なんとかする事にしましょう。
なお、ECUの検査装置なんかを作る時は、GUIだったりI/Oだったりは、用途に応じてカスタマイズする事が多いように思います。ですから、
・GUIをカスタマイズする方法
・I/Oボード用のドライバー作成方法
の2つを用意してあげれば、あとはシステム構築屋さんがなんとかしちゃうんじゃないかな?という印象を受けました。
さて、ここまでで取りあえずRTAI-Labを動かしてはみました。ただし、本当にリアルタイムなのか?については、確かめていません。
リアルタイムかどうかは、人間の目でみていてもわかりません。そこで、オシロスコープなどを使用して確認する必要があります。次は、適当なI/Oボードを使用して、リアルタイムシミュレーションが本当に出来ているのか?を確かめてみたいと思います。
次回
次回はお盆ですから、ちょっとだけHILSを離れて、別の事をしようかと思います。RTAI-Labのリアルタイム性能を確かめるのは、次々回にします。