[openrtm-users 00867] Re: RTM1.0RC1のバッファ換装について

Ando Noriaki n-ando @ aist.go.jp
2009年 7月 15日 (水) 10:43:14 JST


NECシステムテクノロジーの石田様

産総研 安藤です

> RTM1.0RC1のポートで利用するバッファに関する件です。
> 現在、RTM0.4.2において、バッファを自前のバッファに換装して
> 利用しております。
> RTM1.0RC1ではバッファがRingBuffer固定となっており、
> 正式リリースまでに換装可能に修正されるように聞いておりますが、
> その方法について確認させていただきたく投稿致します。

やはり自前のバッファを実装されている方がいらっしゃいましたか。
0.4までは、コンパイル時にバッファのタイプが決まってしまうので、
1.0では接続時に動的に変更可能にしたいと思い、構造がだいぶ
変わってしまっております。申し訳ございません。

> 現状のRTM1.0RC1では出力ポートにおいてはConnectorでバッファが
> 作成され、例えばOutPortPushConnector::createBuffer(Profile&)
> にてProfileからbuffer_typeの名前を問い合わせ、Factoryに
> 登録された当該buffer_typeのObjectを作成するようになっています。
> 一方の入力ポートにおいてはInPortBase::init()でバッファが
> 作成され"ring_buffer"固定の名前でFactoryに作成を依頼しています。
>
> さて、入力ポート側の処理が出力ポートと同様にProfile.propertyから
> buffer_typeを参照するように変更されるとの前提で以下は正しいでしょうか。
>
> 1)Factoryに独自バッファの登録をFactoryに対して行う必要がありますが
>   タイミングは独自バッファを利用するPortのregisterを行う前までに
>   行えばよいと考えていますが正しいでしょうか。

はい、そのとおりで結構です。
基本的には、バッファをsoまたはDLLとして作成しておいて、
rtc.confのmodules.preloadで指定してロードさせる方法を取りたいと思います。

> 2)プロパティに"buffer_type"として自前のバッファ名を記載する
>   必要がありますが、どのタイミングで記載すればよいでしょうか。
>   なお、ポートの接続作業はCベースのプログラムで行ったり
>   RTSystemEditorで行ったりします。
>   ポート作成直後にaddProperty()を呼び出す対応を検討して
>   おりますが正しいでしょうか。
>   もしくはポートのコンストラクタにconst char* buffer_type
>   が追加されるなどの変更を予定されていますでしょうか。

この部分がまだつながっておらず、バッファの動的切り替えが実現できていません。
buffer_typeを与えるタイミングとしては、

1. confファイルに記述して、起動時に与える。
2.接続時にConnectorProfileを通して与える。

の2通りを考えております。
今のところ、コンストラクタにバッファタイプを渡すように変更する予定はないのですが、
コードに直接書きたい場合は、1.の応用として、.cppファイルの先頭にある、
_spec[] の配列として定義してあるconfiguration情報内に埋め込むことは可能です。

この他にも、何かご意見・ご要望等ございましたらお知らせください。

-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
                  知能システム研究部門 統合知能研究グループ
                  〒305-8568 茨城県つくば市梅園1-1-1 中央第2
                  TEL: 029-861-5981 FAX: 029-862-6631
                  n-ando @ aist.go.jp, n-ando @ ieee.org



openrtm-users メーリングリストの案内