Xenomai

Xenomaiリンク

オフィシャルサイト

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

Captain's Universe

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

RTnet

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

EtherCAT

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

EtherCATマスターライブラリ

Orocos

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

 

プログラミング

Xenomaiを使用して、リアルタイム・アプリケーションのプログラムを作成してみます。Ubuntu 9.04のGnome上で実行する簡単なもので、glade2とgtkmmを併用して作成します。随分と古い開発ツールですが、今でも使えます。詳細はこちら

 

浮動小数点の関数はあるの?

浮動小数点の演算等はカーネル空間のリアルタイムタスク内でも、もちろん使えます。ですからGPIB経由での計測データも使えるでしょう。ただ、数学関数等は少しやっかいかもしれません。カーネル空間のリアルタイムタスクを作成する場合、RTLinuxの場合は浮動小数点ライブラリをリンクさせる事が簡単でしたが、2.6系カーネル対応のxenomaiでは難しくなっています。数学関数などはnewlibのソースから自前のライブラリを作成したほうがいいかもしれません。それがいやであればカーネル空間ではなく、ユーザー空間用のリアルタイムタスクを作成するということになるでしょう。

 

CABを使うほうがいいかも

Xenomaiを使用してリアルタイム計測したデータを画面に表示する場合、画面上に「データ表示」する時間も問題になります。できるだけ表示時間が少ないほうがいいのですが、Xenomaiで計測した全てのデータをリアルタイムで画面に表示するには限界があります。リアルタイム計測側と普通のLinux/Gnome側の処理速度の違いがあります。「タスクの速度差」がありますので計測データを間引きして表示することになるのが実状でしょう。その「間引き」を少なくするためにFIFOなどのバッファを利用する場合もありますが、「タスクの速度差」が大きいと限界があるでしょう。ある程度「間引き」する必要を認めて、できるだけ「最新データ」を表示させるために、CAB(Cyclic Asynchronous Buffer)などを利用したほうがいいと思います。