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

2 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 11時間 53秒 前
登録日: 2009-06-23 14:31
[openrtm-users 00728] データポートの1対多接続について

お世話になります。山武の野村です。
今年もよろしくお願い致します。

早速ですが、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の処理については、ソースコードを確認した限りでは動作しそうに思いましたが、
自分のコード解析だけでは確信が得られませんでしたので確認させてください。

以上、よろしくお願いします。

未定義
root
オフライン
Last seen: 11時間 53秒 前
登録日: 2009-06-23 14:31
[openrtm-users 00729] データポートの1対多接続について

野村様

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

データポートの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
野村 琢磨 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"
> To:
> Cc: "OpenRTM ML"
> 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 -> OutPort
> >
> > (SimpleIOのConsoleInの例)
> > OutPort m_outOut;
> >
> > 以上、お役に立てれば幸いです。
> >
> > 清水

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2160
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク