環境構築(2)

今週は、RTAI-Labを動かしている所をお見せします。「フリーのリアルタイムシミュレーション環境がどんな感じか、手っとり早く調査したい!」という方は、30秒間だけ、スクリーンショットをざーっと流し読みしていただくだけでも価値があるかと思います。

freehils04_18

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から起動します。

freehils04_01

scilabが起動したら、scicos と入力します。ツールバーが無いのが残念ですね。

freehils04_02

起動した scicos は、こんな感じです。やっぱりツールバーがありません。

freehils04_03

Palette > Pal Tree とすると・・・

freehils04_04

こんなのが、別Windowで開きます。

freehils04_05

RTAI-Lab専用のライブラリが用意されていますので・・・

freehils04_06

こんなモデルを作ってみます。

freehils04_07

この時計みたいなブロックって何なんでしょう?きちんと理解していないので、間違っているかも分かりません。どうやらこれは、離散系のシミュレーションをするときの、タイミングを生成するブロックのようです。この時計ブロックのしたにあるブロック5つは、ぜんぶこのタイミング指令に応じて動きます。Simulinkでいう、Triggered Subsystemみたいな感じです。Simulinkに慣れていると、すごく奇妙に感じます・・・

ちなみにこのモデルの意味ですが、

左側にあるのが、Sine波と、矩形波をだすブロックです。Simulinkにも同じのがありますね。

freehils04_08

右側にあるのが、スコープ、メーター、LEDの3つのパーツに値を表示するためのブロックです。日本で一般的に売られているHILSは、とりあえずモデルはモデルで作っておいて、GUIは別に作ります。ですから、モデル上のどの信号が、どんなパーツに割り当てられるかは決まっていません。しかしRTAI-Labでは、モデル中にて「これはスコープで表示せよ!」という事を決めてしまうようです。これはこれで利点があるのですが、ちょっと違和感があります。いずれなんとかしましょう。

freehils04_09

コード生成

先ほど作ったモデルをコード生成し、リアルタイム実行してみます。

Scicosでは、コード生成する際にはまずそれを1つのサブシステムに入れないといけません。そこで、ブロックをざーーっと選択して、右クリックメニューから「Region to Super Block」を選択します。

freehils04_10

すると、こんな感じになります。

freehils04_11

ここで、モデルをセーブします。

freehils04_12

次に、Scicosのメニューから「RTAI」>「RTAI CodeGen」を選択します。すると、こんなダイアログがでますので、「OK」をクリックします。

freehils04_13

すると、こんなかんじで Scilab の画面のほうのざーーっとログが流れます。これでコード生成、およびコンパイルは完了です。これは簡単ですね!

freehils04_14

シミュレーション実行

ではいよいよ、生成されたモデルを実行しましょう。そこで、Linuxのターミナルにて、こんな感じで生成された実行形式を -v オプションつきで実行してやりましょう。

freehils04_15

別のターミナルを開いて、そこから

xrtailab

と入力します。すると、こんな感じのGUIが開きます。

freehils04_16

次に、実行中のモデルと接続してやります。今回は、リアルタイムシミュレーションと、GUI環境とを、同一のマシンで行いました。

freehils04_17

すると、こんな感じになります。モデルの方で、スコープ1つ、メーター1つ、LED1つ、と決まっていますから、別段何かを指定しなくてもこれらのパーツが表示されます。

freehils04_18

Scicosにて作成したスコープ、メータ、LEDに該当するGUIが、こちらで表示されます。

freehils04_00

まとめ

今回は、とりあえず動かすところまで行きました。

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のリアルタイム性能を確かめるのは、次々回にします。