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

6 posts / 0 new
Last post
Kei Okada
Offline
Last seen: Never ago
Joined: 2011-05-17 20:20
[openrtm-users 02918] OpenRTM-aist用のリアルタイム性を強化した実行コンテキスト

岡田です.

お世話になります.菅さんのFBで素晴らしい記事を見つけました.
ぜひ使ってみたいので,メインストーリームにはいるといいな,と思います.

http://mohammedari.blogspot.jp/2013/10/openrtm-aist.html?m=1

Undefined
Masaharu Shimizu
Offline
Last seen: Never ago
Joined: 2013-11-19 21:58
[openrtm-users 02919] OpenRTM-aist用のリアルタイム性を強化した実行コンテキスト

未来ロボット技術研究センターの清水です。

横やり&手前味噌ですいません。

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の方が
性能が良い場合が多いですが

以上、参考になればとおもいます。

Woo-Keun YOON
Offline
Last seen: Never ago
Joined: 2013-11-19 21:58
[openrtm-users 02920] OpenRTM-aist用のリアルタイム性を強化した実行コンテキスト

清水様
岡田様

こんにちは。
尹@産総研です。

ご紹介して頂いたように、Linuxだとリアルタイム化の情報があるのですが、
Windows8を使ってのリアルタイム化の情報はお持ちでしょうか?

よろしくお願い致します。

tomo-3440
Offline
Last seen: 8 years 3 months ago
Joined: 2012-08-14 08:57
[openrtm-users 02922] OpenRTM-aist用のリアルタイム性を強化した実行コンテキスト

産総研 尹様
前川製作所の山下です

さて,「Windows8でのリアルタイム化」ですが,別途RTOSと共存させながらであ
れば実現可能です.

例えば
・INtime
http://www.mnc.co.jp/intime/
・Realtime Hypervisor
http://www.real-time-systems.com/real-time_hypervisor/index.php

前者はWindowsとの共存が前提ですが,後者はメインOSがWindows以外でも共存可
能なようです.

以上,ご参考まで

(2013/10/11 11:27), Woo-Keun YOON wrote:
> 清水様
> 岡田様
>
> こんにちは。
> 尹@産総研です。
>
> ご紹介して頂いたように、Linuxだとリアルタイム化の情報があるのですが、
> Windows8を使ってのリアルタイム化の情報はお持ちでしょうか?
>
> よろしくお願い致します。
>
>
> --

Woo-Keun YOON
Offline
Last seen: Never ago
Joined: 2013-11-19 21:58
[openrtm-users 02923] OpenRTM-aist用のリアルタイム性を強化した実行コンテキスト

山下様

尹@産総研です。

情報ありがとうございます。
できれば、Linuxのように別途OSを入れないでやれればと思っています。
調べれば調べるほど、難しいようですね。

ただ、複数コアのあるCPUでは、
一つのコアを占有して、スレッドのプライオリティを最上位にしてしまえば
ある程度の性能は出るとのことを
先程教えてもらいました。

このあたりでやってみようと思います。

よろしくお願い致します。

Ando Noriaki
Offline
Last seen: 1 year 8 months ago
Joined: 2011-09-04 17:20
[openrtm-users 02919] OpenRTM-aist用のリアルタイム性を強化した実行コンテキスト

安藤です

僕も、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

Log in or register to post comments

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK