Xenomai

Xenomaiリンク

オフィシャルサイト

本家サイトです。最新版ダウンロードがあります。

Captain's Universe

Xenomaiを利用する色々なサンプルがあります。

RTnet

リアルタイム・ネットワークプロトコル・スタック

EtherCAT

リアルタイム・イーサネットプロトコル

EtherCATマスターライブラリ

Orocos

ロボット制御ライブラリ、フレームワーク

 

Xenomai

Xenomaiってなに?

 まず名前の呼び方で「てんてこまい」しそうです。たぶん、ゼノマイか、ジノマイでしょうか。上のロゴマークを眺めていると「ゼンマイ」と呼びたくなります。とにかく、普通のLinuxをリアルタイムLinuxにする拡張モジュールなのですが、最近のバージョンではLinuxのmoduleではなく、カーネルに組み込まれてしまいます。リアルタイムOSではTRONが有名ですが、Xenomaiも同じ「ハードリアルタイム」OSに分類されるRTAIやRTLinux(最近はあまり聞かないのですが)の仲間といっていいでしょう。「リアルタイムLinux」というイメージからは、すぐに「組み込み用」にと考える方々が多いかもしれませんが、ここではごく普通のパソコン(Atom330)に組み込んでしまいます。(ARMプロセッサ用のXenomaiもあるようですから、ロボット開発等の組込み用リアルタイムLinuxにも利用できると思います。)日本ではあまり聞かない「Xenomai」ですが、欧州では、特にドイツでは計測ボードメーカーが、Xeomai用のRTDMドライバーを用意しているように、結構有名なのではないかと思います。

 

WindowsやLinuxじゃダメなの?

例えば、WindowsXPと計測ボードのWindowsドライバーを使って、DIOやGPIBから定期的に計測データを受信する場合、そのタイミングが少しずれてしまうのです。どうしても±10ms程度のタイミングのずれが生じてしまうようで、その間にディスクアクセスなどがあれば、さらに大きな受信タイミングにずれが生じてしまいます。マウスが動いたり画面の操作をしてしまうと、±10msどころではありません。±10msってWindowsアプリケーションから見れば小さな時間ですが1個(回)の計測ですら、こんな「ずれ」があると塵も積もれば山となるわけです。オリンピックの100m走ですら100分の1秒(10ms)を争うのですから、「10ms」は影響の大きな時間なのです。

 

Ubuntu Studioだったらどう?

たしかに、Ubuntu Studioはマルチメディア専用のUbuntuで、カーネルのPREEMPT_RTが有効だったはず。その上、カーネルのタイムスライスが1msだった。これを使えば、時間のずれは±1ms程度に抑えることができそうですね。ただ、問題もあります。タイムスライスが4msや10msの場合と比較すると、1msではアプリケーションの実行時間が約3倍ぐらい遅くなったような記憶があります。カーネルのコンパイル時間が約3倍ぐらいの違いがあったと思います。それを裏づけるように、動画プレーヤーで動画を見たときもUbuntuStudioの方が重く感じました。UbutnuStudioを実用的に動かすには、より速いCPUが必要ではないかと思います。これが問題になるかですが、リアルタイムタスクだけを動かすなら問題はないと思いますが、そのタスクで得た計測データなどを画面に表示しようとすると表示処理が遅く感じられることになります。データ表示するようなLinux側の処理にもCPUリソースをすこしでも多く分けておきたいと思うのです。

Xenomaiのインストール