[openrtm-users 02921] Re: OpenRTM-aist用のリアルタイム性を強化した実行コンテキスト

Ando Noriaki n-ando @ aist.go.jp
2013年 10月 11日 (金) 12:09:20 JST


安藤です

僕も、Twitterで見つけておおっ!と思ったのでついRTしてしまいました。
実際1.1.0からRT preempt kernel用のリアルタイムECはあるのですが、
岡田先生ご指摘のWebでは、ちゃんと評価もされていていいな、と思った次第です。
http://svn.openrtm.org/OpenRTM-aist/tags/RELEASE_1_1_0/OpenRTM-aist/src/ext/ec/rtpreempt/

あと、実装の違いについてですが、OpenRTMに含まれている方は、
sched_setscheduler を、Twitterの方は pthread_setschedparam を使っている点が
すこし違うのかな、といったところでしょうか?pthread_setschedparam も
結局 sched_setscheduler を呼んでいるらしいので同じなのですが、
標準準拠の観点からいえば pthread 関数を使った方がいいと思います。


リアルタイムECに関しては、岡田先生にパッチを送っていただいたり、fuRoの清水先生や、
静岡大の清水先生も実装、評価されていて情報的にはいろいろあるのですが、
リリースも遅く、またWebの方でまとめきれていなくて申し訳ないと思っています。
SMIについても情報ありがとうございます>清水先生

ECに関しては、リアルタイムなものだけでなく、並列実行されたり、実行順序を条件
によって変えたり、一部並列化するなど、用途に応じていろいろなモノが考えられるので、
そういったものがいろいろ出てくるといいなー、と思っています。
もし、そういうものを自作された方がいらっしゃったらMLなどで紹介してほしいです。

ちなみに、上の記事の方が別件でつぶやいておられたのですが、ECの設定が
グローバルにしかできないので、パラメータなどを渡す際にいろいろかゆいところに
手が届かない部分がありました。その辺は trunkにコミットされているソースでだいぶ
修正したつもりです。同時にECの構造も汚かったので、trunkではだいぶ修正されています。
これで、ユーザが新しいECを作るのもだいぶ楽になるのではないかと期待しています。

詳しくは、コンポーネントの設定ファイルのドキュメントをご覧ください。
http://svn.openrtm.org/OpenRTM-aist/trunk/OpenRTM-aist/etc/component.conf




2013年10月11日 11:20 Masaharu Shimizu <shimi @ furo.org>:
> 未来ロボット技術研究センターの清水です。
>
> 横やり&手前味噌ですいません。
>
> RTMのRT_PREEMPT Linux環境下でのリアルタイム化については、すでに、0.4の時代に
> 実現されており、ソースコード、論文なども公開しております。
>
> https://sites.google.com/site/roboticstools/HOME/RTM/RealTimeRTM
>
> 清水 正晴, 戸田 健吾, 林原 靖男, 大和 秀彰, 古田 貴之, “Linux標準機能を利用
> したRTミドルウェア周期実行機能のリアルタイム化 -ハプティックジョイスティック
> による全方位移動電動車椅子操縦システムへの適用-”, 計測自動制御学会論文集,
> Vol. 46, No. 1, pp. 16-23, 2010.
>
> #サイトにもありますが、産総研の方々が公開してくださったソースコードを元にし
> ています。ありがとうございます。
>
> これをうけて?
> RTM1.0では、標準でリアルタイム実行コンテキストが実装されているはずです。<安
> 藤さんフォローお願いします
>
> 管さんのWEBにも有りますが、Ubuntuを利用すると、標準リポジトリにリアルタイム
> 対応のカーネルがあるので、簡単に試せて良い時代です。
>
> ここから、RTMというかLinuxのリアルタイム化の話で、すこし、本MLとは話題がずれ
> てしまうので簡単にしますが、
>
> 管さんのWEBで5msのジッターとの記述がありましたが、ページフォルトの可能性もな
> きしもあらずですが、SMIの影響をを疑ってみたらいいです。
>
> SMIは、OSから無効にする以外に対処できない割り込みなので、マザーボードのBIOS
> の作り等により、大きな時間、OSに処理が戻ってこないことがあるためです。
>
> BIOSでSMIで無効にするオプションがあるか、SMIを無効にするドライバモジュールを
> 読み込むことで対処できます。
> 後者のドライバモジュールでは、BIOSで対象レジスタが書き込み不可になっていると
> 効果がありませんが。
>
> ただし、SMIは、System management interruptsの略でですが、読んで字のごとくの
> 機能を提供しているので、無効にすると、いろいろな影響が出るかもしれないことを
> 記しておきます。
>
> #IBM製のPCは、この辺意識していてい、SMIが大きな時間、処理をOSからとらないよ
> うに設計されていたりするらしいです。
>
> 後、最近のx86のCPUはマルチコアがほとんどなので、リアルタイムのプロセスのみ
> を、特定のコアに割り付ける方法(CPUアフィニティ)も良くとられます。
> https://access.redhat.com/site/documentation/ja-JP/Red_Hat_Enterprise_MRG/2/
> html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-
> Interrupt_and_Process_Binding.html
>
> というわけで、まとめるとRT_PREEMPT Linux環境下でのリアルタイム処理は、
>
> 1,SMIを適切に処理する
> 2,アプリケーションをPOSIXのRT APIを使って適切に書く
> 3,リアルタイム化したいプロセスのみ特定のCPUコアに割り付ける(CPUアフィニ
> ティ)
>
> をおこなうと、所謂、ハードリアルタイムを実現でできるところまで、来ています。
> #ジッター性能は、さらに専用にチューニング・リアルタイム化されたLinuxの方が
> 性能が良い場合が多いですが
>
> 以上、参考になればとおもいます。
>
>
>
>> -----Original Message-----
>> From: openrtm-users-bounces @ openrtm.org
>> [mailto:openrtm-users-bounces @ openrtm.org] On Behalf Of Kei Okada
>> Sent: Friday, October 11, 2013 9:58 AM
>> To: OpenRTM-aist mailing-list for generic users
>> Cc: Ryohei Ueda
>> Subject: [openrtm-users 02918] OpenRTM-aist用のリアルタイム性を強化した
>> 実行コンテキスト
>>
>> 岡田です.
>>
>> お世話になります.菅さんのFBで素晴らしい記事を見つけました.
>> ぜひ使ってみたいので,メインストーリームにはいるといいな,と思います.
>>
>>
>> http://mohammedari.blogspot.jp/2013/10/openrtm-aist.html?m=1
>> _______________________________________________
>> openrtm-users mailing list
>> openrtm-users @ openrtm.org
>> http://www.openrtm.org/mailman/listinfo/openrtm-users
>
> _______________________________________________
> openrtm-users mailing list
> openrtm-users @ openrtm.org
> http://www.openrtm.org/mailman/listinfo/openrtm-users


More information about the openrtm-users mailing list