[openrtm-users 00729] Re: データポートの1対多接続について

kurihara shinji shinji.kurihara @ aist.go.jp
2009年 1月 8日 (木) 12:26:55 JST


野村様

お世話になっております。
産総研 栗原です。

データポートの1対多接続に関してですが、現状で不具合が
発生しているのはRingBufferの場合ですので、清水様のメ
ールにあるようにOutPortのバッファをNullBufferとする事
で1対多接続が可能となっております。

先程、こちらでも、OutPortのバッファをNullBufferとする
事で全てのSubscriptionType(Flash, New, Periodic)にお
いて1対多接続ができる事を確認致しました。
InPortに関しましては、RingBufferのままで問題ありませ
ん。
(使用しているOpenRTM-aistのバージョンは0.4.2です。)

安藤様 <
 他に修正方法や、パッチ、修正版のリリース等の情報が
 ございましたら、情報の提供をお願い致します。

     
以上、宣しくお願い致します。



On Thu, 8 Jan 2009 10:54:37 +0900
野村 琢磨 <nomura-takuma @ jp.yamatake.com> wrote:

> お世話になります。山武の野村です。
> 今年もよろしくお願い致します。
> 
> 早速ですが、RTMのデータポートの件で確認させて頂きたいことがあります。
> 
> 【確認事項】
> ・データポートの1対多接続は現在開発中と思いますが、
>  部分的にも使用させて頂けるものはないでしょうか?
> ・非同期伝送処理(SubscriptionTypeのNewの処理 : 接続毎に別スレッドで伝送される)は
>  Ver.0.4.1もしくはVer.0.4.2で実装されているでしょうか?
> 
> 【目的の処理】
> 現在、データポートを使用して1つのコンポーネントの出力をトリガに、
> 複数のコンポーネントを並列で処理させようとしています。
> 
>    コンポーネントA─┬─→コンポーネントB1
>             ├─→コンポーネントB2
>             └─→コンポーネントB3
> 
> コンポーネントA、B1、B2、B3は、同一のプロセスで動作しています。
> コンポーネントB1、B2、B3には、入力ポートにコールバック関数が設定してあり、 
> 
> ポート間接続のSubscriptionType=Newとすることで、
> コンポーネントB1、B2、B3のコールバック関数を別スレッドで並列処理させようと思っています。
> 
> 【懸念事項】
> MLによれば、上記の条件(1対多接続、SubscriptionType=New)では不具合が発生するとのこと。
> 対応方法として、NullBufferを使用しFlushとすること(下記清水様メール)となっていますが、
> それでは今回期待の動作になりません。
> もし可能なら、データポートの修正モジュールを部分的にでも提供いただけないでしょうか?
> もしくは修正方法をお教え頂けないでしょうか?
> あるいは修正版のリリースが近く予定されていないでしょうか?
> 
> SubscriptionTypeのNewの処理については、ソースコードを確認した限りでは動作しそうに思いましたが、
> 自分のコード解析だけでは確信が得られませんでしたので確認させてください。
> 
> 以上、よろしくお願いします。
> 
> 
> 
> ----- Original Message ----- 
> From: "Masayuki Shimizu" <masayuki.shimizu @ aist.go.jp>
> To: <adachi @ yaskawa.co.jp>
> Cc: "OpenRTM ML" <openrtm-users @ m.aist.go.jp>
> Sent: Saturday, March 15, 2008 1:36 AM
> Subject: [openrtm-users 00389] Re: 複数インスタンスの生成およびデータポート出力の分岐について
> 
> 
> > 安川電機 亀井樣、足立樣
> >
> > 産総研 清水です。
> >
> > Java版ではないですが、C++版で同様の問題で困っている方もいるかと思うので、
> > C++版の場合の情報を流させて頂きます。
> >
> >> 2. 1の実行結果から生成された2つのコンポーネントをRTCLink上に表示し、
> >>    ジョイスティックコンポーネントのデータポートと接続する場合、1つの出力
> >>   データポートから、上記2つのMyServiceコンポーネントの入力データポートに
> >>  分岐接続するようなことは可能でしょうか。現状、見た目は分岐しているのです 
> >> 
> >>
> >>
> >>
> >> が
> >>  実行すると片側のMyServiceコンポーネントにのみデータが渡されております。
> >
> > 現在のリリース版では、バッファまわりの問題のために、
> > 一つの出力データを複数ポートに送ることができません。
> > この問題は、次期バージョンで修正されると思いますが、
> > 現バージョンでも対処方法がいくつか考えられます。
> >
> > 一番簡単なのは、出力データのバッファリングが必要ない場合です。
> > この場合は、出力バッファをNullBufferにして、
> > すべてのデータポートの接続をFlushとするだけです。
> > この対処法でのソースレベルの変更は以下の一箇所だけです。
> >
> > <変更部分>
> > (ヘッダファイル内の出力ポートの定義部)
> > OutPort<DataType> -> OutPort<DataType, NullBuffer>
> >
> > (SimpleIOのConsoleInの例)
> > OutPort<TimedLong, NullBuffer> m_outOut;
> >
> > 以上、お役に立てれば幸いです。
> >
> > 清水
> > --------------------
> > Masayuki Shimizu
> >
> > Postdoctoral Fellow
> > Task Intelligence Research Group
> > Intelligent Systems Research Institute
> > National Institute of
> > Advanced Industrial Science and Technology (AIST)
> > Central 2, 1-1-1, Umezono, Tsukuba, Ibaraki 305-8568, JAPAN
> > Tel: +81-29-861-5952
> > Fax: +81-29-861-5971
> > Email: masayuki.shimizu @ aist.go.jp
> >       chaser @ ieee.org
> > URL: http://unit.aist.go.jp/is/taskint/
> >
> > 
> 


-- 
----------
栗原 眞二
shinji.kurihara @ aist.go.jp
kurihara @ imagination.co.jp



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