[openrtm-users 01646] Re: ポート間の接続について、0.4.2と1.0.0の差分と解決方法を教えてください

katami fsi-katami @ aist.go.jp
2011年 3月 3日 (木) 16:14:41 JST


並木様

片見です。

> データポートではなく、サービスポート間の接続なのですが、
> 教えていただいたページの後半に記載されていましたので、
> そちらを参考して試してみます。
データポートの接続を想定して回答しておりました。
申し訳ありません。

サービスポート間の接続の場合は、
プロパティの "dataport.interface_type" に 
ポート名の設定をお願いします。

      examples の MyServiceProvider と MyServiceConsumer で言えば、
      "MyService" を設定します。

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


On Thu, 03 Mar 2011 15:49:04 +0900
Shuichiro Namiki <schu @ tjsys.co.jp> wrote:

> 【宛】産総研 片見様
> 
> 並木です。ご教授ありがとうございます。
> 
> 作成しているコンポーネントのポートが
> データポートではなく、サービスポート間の接続なのですが、
> 教えていただいたページの後半に記載されていましたので、
> そちらを参考して試してみます。
> 
> 
> ----- Original Message ----- 
> From: "katami" <fsi-katami @ aist.go.jp>
> To: "Shuichiro Namiki" <schu @ tjsys.co.jp>
> Cc: <OpenRTM-users @ m.aist.go.jp>
> Sent: Thursday, March 03, 2011 9:18 AM
> Subject: [openrtm-users 01643] Re: ポート間の接続について、0.4.2と1.0.0の差分と解決方法を教えてください
> 
> 
> > 並木様
> >
> > 片見です。
> >
> >> プロパティへの設定とのことですが、
> >> こちらはプログラム上でできるものでしょうか?
> > プログラム上から設定することは可能です。
> > 以下のように記述することにより、プロパティの設定ができます。
> >> > NVListHolder nvholder = new NVListHolder();
> >> > if( nvholder.value==null ) nvholder.value = new NameValue[0];
> >> > CORBA_SeqUtil.push_back(nvholder,
> >> >        NVUtil.newNVString("dataport.interface_type","corba_cdr"));
> >> > CORBA_SeqUtil.push_back(nvholder,
> >> >        NVUtil.newNVString("dataport.dataflow_type", "push"));
> >> > CORBA_SeqUtil.push_back(nvholder,
> >> >        NVUtil.newNVString("dataport.subscription_type", "flush"));
> >> > prof.properties = nvholder.value;
> > RTSystemEditorでデータポート間の接続操作を行った場合、
> > 画面が表示され、これらの設定が可能です。
> > http://www.openrtm.org/openrtm/ja/content/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%EF%BC%88%E3%83%9D%E3%83%BC%E3%83%88%E9%96%93%E3%81%AE%E6%8E%A5%E7%B6%9A-%E7%B7%A8%EF%BC%89
> >
> >> (それともRTCBuilderでの作成時などに設定するものですか?)
> > RTCBuilderでの作成時には設定は不要です。
> >
> >> 現状、connectの戻り値として返される値は「5」です。
> > connector_id が他の接続の connector_id と重複していないか
> > ご確認をお願いいたします。
> > connector_id は一意である必要があります。
> >
> > よろしくお願いいたします。
> >
> > On Wed, 02 Mar 2011 17:32:00 +0900
> > Shuichiro Namiki <schu @ tjsys.co.jp> wrote:
> >
> >> 【宛】産総研 片見様
> >>
> >> 並木です。ご回答ありがとうございます。
> >>
> >> > プロパティには以下の設定が必要となります。
> >> > ・"dataport.interface_type"
> >> > ・"dataport.dataflow_type"
> >> > ・"dataport.subscription_type"
> >> >
> >> プロパティへの設定とのことですが、
> >> こちらはプログラム上でできるものでしょうか?
> >> (それともRTCBuilderでの作成時などに設定するものですか?)
> >>
> >> 可能でしたら手順をご教授いただけますか。
> >> 不勉強で申し訳ありませんが、よろしくお願いいたします。
> >>
> >> 現状、connectの戻り値として返される値は「5」です。
> >> 「前提条件が満たされていない」ということになりますが、
> >> connect実行直前でBreakして、RT System Editor上で確認する限り、
> >> 接続対象のコンポーネントが両方表示されております。
> >>
> >> この満たされていない前提条件が
> >> 教えていただいたinterface_typeなど3種の設定ということでしょうか。
> >>
> >>
> >> 以上です。よろしくお願いいたします。
> >>
> >>
> >> ----- Original Message ----- 
> >> From: "katami" <fsi-katami @ aist.go.jp>
> >> To: "Shuichiro Namiki" <schu @ tjsys.co.jp>
> >> Cc: "kurihara shinji" <shinji.kurihara @ aist.go.jp>;
> >> <OpenRTM-users @ m.aist.go.jp>
> >> Sent: Wednesday, March 02, 2011 4:35 PM
> >> Subject: [openrtm-users 01639] Re: ポート間の接続について、0.4.2と1.0.0の差分と解決方法を教えてください
> >>
> >>
> >> > 並木様
> >> >
> >> > 産総研 片見です。
> >> >
> >> >> connect後のConnectProfileHolderの内容のうち、
> >> >> value.properties内容がなく、そこが問題だと考えているのですが、
> >> >> connectの処理でvalue.propertiesに何が設定されるのか
> >> >> ご教授いただけますでしょうか。
> >> >
> >> > 先のメールで添付されていた ConnectorComp.java を参考にして、
> >> > value.properties の設定をお願いします。
> >> > (135行目〜148行目)
> >> >
> >> > NVListHolder nvholder = new NVListHolder();
> >> > if( nvholder.value==null ) nvholder.value = new NameValue[0];
> >> > CORBA_SeqUtil.push_back(nvholder,
> >> >        NVUtil.newNVString("dataport.interface_type","corba_cdr"));
> >> > CORBA_SeqUtil.push_back(nvholder,
> >> >        NVUtil.newNVString("dataport.dataflow_type", "push"));
> >> > CORBA_SeqUtil.push_back(nvholder,
> >> >        NVUtil.newNVString("dataport.subscription_type", "flush"));
> >> > prof.properties = nvholder.value;
> >> >
> >> > (上記の prof は ConnectorProfile として記述してあります。)
> >> > プロパティには以下の設定が必要となります。
> >> > ・"dataport.interface_type"
> >> > ・"dataport.dataflow_type"
> >> > ・"dataport.subscription_type"
> >> >
> >> > よろしくお願いいたします。
> >> >
> >> > On Wed, 02 Mar 2011 15:25:08 +0900
> >> > Shuichiro Namiki <schu @ tjsys.co.jp> wrote:
> >> >
> >> >> 【宛】産総研 栗原様
> >> >>
> >> >> 並木です。
> >> >>
> >> >> ご送付いただいた資料より、キャストしてget_portsできなかった問題点は
> >> >> 解決しました。ありがとうございます。
> >> >>
> >> >> DataFlowComponentのimport対象を
> >> >> RTC.DataFlow〜からOpenRTM.DataFlow〜に変えたところ、
> >> >> キャストの必要なく、get_ports関数を使えるようになりました。
> >> >>
> >> >> 上記問題は解決したのですが、
> >> >> その後、connectを実行すると失敗で返ってきてしまいます。
> >> >> (connectの戻り値がReturnCode_t.RTC_OKではない)
> >> >>
> >> >> connect後のConnectProfileHolderの内容のうち、
> >> >> value.properties内容がなく、そこが問題だと考えているのですが、
> >> >> connectの処理でvalue.propertiesに何が設定されるのか
> >> >> ご教授いただけますでしょうか。
> >> >>
> >> >> また、いただいたソースでConnectProfileのpropertiesに
> >> >> connect直前に設定しているNVListHolderの部分は
> >> >> 使用していないのですが、この部分はどういった処理になりますでしょうか。
> >> >> (connectするのに必須ということはありますか?)
> >> >>
> >> >>
> >> >> 以上です。立て続けの質問で申し訳ありませんが、
> >> >> よろしくお願いいたします。
> >> >>
> >> >>
> >> >> ----- Original Message ----- 
> >> >> From: "Shuichiro Namiki" <schu @ tjsys.co.jp>
> >> >> To: "kurihara shinji" <shinji.kurihara @ aist.go.jp>
> >> >> Cc: <OpenRTM-users @ m.aist.go.jp>
> >> >> Sent: Wednesday, March 02, 2011 10:50 AM
> >> >> Subject: [openrtm-users 01630] Re: ポート間の接続について、0.4.2と1.0.0の差分と解決方法を教えてください
> >> >>
> >> >>
> >> >> > 【宛】産総研 栗原様
> >> >> >
> >> >> > ご回答ありがとうございます。
> >> >> > 展開いただいた情報を元に修正・確認してみたいと思います。
> >> >> >
> >> >> > 並木
> >> >> >
> >> >> > ----- Original Message ----- 
> >> >> > From: "kurihara shinji" <shinji.kurihara @ aist.go.jp>
> >> >> > To: "Shuichiro Namiki" <schu @ tjsys.co.jp>
> >> >> > Cc: <OpenRTM-users @ m.aist.go.jp>
> >> >> > Sent: Wednesday, March 02, 2011 2:17 AM
> >> >> > Subject: [openrtm-users 01629] Re: ポート間の接続について、0.4.2と1.0.0の差分と解決方法を教えてください
> >> >> >
> >> >> >
> >> >> >> 並木様
> >> >> >>
> >> >> >> 産総研の栗原です。
> >> >> >>
> >> >> >> OpenRTM-aistのバージョン0.4系と1.0系とでは、get_ports()のIDLでの定義 
> >> >> >> 
> >> >> >> が変更されています。(他にもIDLレベルでの変更もございます。)
> >> >> >> 0.4系 -> PortList get_ports();
> >> >> >> 1.0系 -> PortServiceList get_ports();
> >> >> >>
> >> >> >> よって、PortListHolderではなく、PortServiceListHolderを使用するように 
> >> >> >> 
> >> >> >> 変更する事で接続できるようになるかと思います。
> >> >> >> 以下のソースを、
> >> >> >>> PortListHolder p1 = new PortListHolder();
> >> >> >>> PortListHolder p2 = new PortListHolder();
> >> >> >> PortServiceListHolder p1 = new PortServiceListHolder();
> >> >> >> p1.value = new PortService[0];
> >> >> >> PortServiceListHolder p2 = new PortServiceListHolder();
> >> >> >> p2.value = new PortService[0];
> >> >> >> のように変更し、ご確認頂けますでしょうか?
> >> >> >>
> >> >> >> 参考までに、OpenRTM-aist-Java-1.0.0のSimpleIOサンプルに
> >> >> >> 含まれておりますConnectorComp.javaを添付させて頂いて
> >> >> >> おります。
> >> >> >>
> >> >> >> また、以前、株式会社セックの中本様が0.4.2から1.0.0への変更点を
> >> >> >> まとめてくださった資料をこちらのMLに流して下さいました。
> >> >> >> とてもわかりやすくまとめて下さっておりますので、こちらの資料も
> >> >> >> 添付させて頂いております。
> >> >> >>
> >> >> >>
> >> >> >> 以上、宜しくお願い致します。
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> On Tue, 01 Mar 2011 15:55:56 +0900
> >> >> >> Shuichiro Namiki <schu @ tjsys.co.jp> wrote:
> >> >> >>
> >> >> >>> 並木と申します。
> >> >> >>> 今回、初めて質問いたします。よろしくお願いします。
> >> >> >>>
> >> >> >>> 最近、OpenRTMをはじめまして、
> >> >> >>> 別の方が0.4.2で作成した内容を1.0.0で
> >> >> >>> 作り直すことになりました。
> >> >> >>> (言語はJavaを使用しています)
> >> >> >>>
> >> >> >>> 0.4.2では以下のようなソースでポートを接続していたのですが、
> >> >> >>> 1.0.0ではDataFlowComponentからget_portsを使用しようとすると
> >> >> >>> ClassCastExceptionを起こしてしまい、キャストできずに
> >> >> >>> PortServiceの取得ができません。
> >> >> >>> (0.4.2で動作することは確認が取れております)
> >> >> >>>
> >> >> >>> 0.4.2→1.0.0にする上でどこに差分があって、
> >> >> >>> どのように修正すればよいか
> >> >> >>> ご存知な方教えていただけますようお願いいたします。
> >> >> >>>
> >> >> >>>
> >> >> >>> (0.4.2で作成済みのソースから抜粋)
> >> >> >>> ====
> >> >> >>> String connector_id = null;
> >> >> >>> ConnectorProfile prof = null;
> >> >> >>>
> >> >> >>> // サーバ側のCobraConsumerを取得
> >> >> >>> CorbaConsumer consumerServerDB = null;
> >> >> >>> ORB orb = ORBUtil.getOrb();
> >> >> >>> CorbaNaming naming = new CorbaNaming(orb, nameServer);
> >> >> >>>  // nameServerは文字列"localhost:2809"
> >> >> >>>
> >> >> >>> consumerServerDB =
> >> >> >>>  new CorbaConsumer<DataFlowComponent>(DataFlowComponent.class);
> >> >> >>> consumerServerDB.setObject(naming.resolve(serverURI + ".rtc"));
> >> >> >>>  // serverURIは任意指定の文字列
> >> >> >>>
> >> >> >>> // ローカル側のCobraConsumerを取得
> >> >> >>> CorbaConsumer consumerLocalDB = null;
> >> >> >>> consumerLocalDB =
> >> >> >>>  new CorbaConsumer<DataFlowComponent>(DataFlowComponent.class);
> >> >> >>> consumerLocalDB.setObject(naming.resolve(thisConsumerName + 
> >> >> >>> ".rtc"));
> >> >> >>>  // thisConsumerNameは任意指定の文字列
> >> >> >>>
> >> >> >>> PortListHolder p1 = new PortListHolder();
> >> >> >>> PortListHolder p2 = new PortListHolder();
> >> >> >>>
> >> >> >>> // サーバ側とローカル側のポートを取得
> >> >> >>> // ★ここで1.0.0の場合はキャスト失敗する★
> >> >> >>> p1.value =
> >> >> >>>  ((DataFlowComponent) consumerServerDB._ptr()).get_ports();
> >> >> >>> p2.value =
> >> >> >>>  ((DataFlowComponent) consumerLocalDB._ptr()).get_ports();
> >> >> >>>
> >> >> >>> prof = new ConnectorProfile();
> >> >> >>> connector_id = serverURI + "_" + thisConsumerName;
> >> >> >>> prof.connector_id = connector_id;
> >> >> >>> prof.name = connector_id;
> >> >> >>> prof.properties = new NameValue[0];
> >> >> >>> prof.ports = new Port[2]; // 1.0.0ではPortからPortServiceに変更
> >> >> >>> prof.ports[0] = p1.value[0];
> >> >> >>> prof.ports[1] = p2.value[0];
> >> >> >>>
> >> >> >>> // ローカルとサーバのポートを接続
> >> >> >>> ConnectorProfileHolder proflist = new 
> >> >> >>> ConnectorProfileHolder(prof);
> >> >> >>> proflist.value = prof;
> >> >> >>> ReturnCode_t ret = prof.ports[0].connect(proflist);
> >> >> >>> ====
> >> >> >>>
> >> >> >>> (ソースから抜粋)の9行目、14行目を<DataFlowComponent>ではなく、
> >> >> >>> <RTObject>に変えてみたりもしたのですが、
> >> >> >>> RTCBuilderで生成する際にDataFlowを指定しているので
> >> >> >>> 今度は(というかやはり)最後のconnectで接続失敗してしまいます。
> >> >> >>>
> >> >> >>>
> >> >> >>> 以上です。よろしくお願いいたします。
> >> >> >>>
> >> >> >>>
> >> >> >>
> >> >> >>
> >> >> >> -- 
> >> >> >> ----------
> >> >> >> 栗原 眞二 <shinji.kurihara @ aist.go.jp>
> >> >> >>
> >> >> >> 独立行政法人産業技術総合研究所
> >> >> >>  知能システム研究部門 統合知能研究グループ
> >> >> >>  〒305-8568
> >> >> >>  茨城県つくば市梅園1-1-1 中央第2
> >> >> >>
> >> >> >>  TEL: 029-861-5956
> >> >> >>
> >> >> >
> >> >> >
> >> >>
> >> >>
> >> >
> >> >
> >> > 独立行政法人産業技術総合研究所
> >> > 知能システム研究部門 統合知能研究グループ
> >> > 〒305-8568 茨城県つくば市梅園1-1-1 中央第2
> >> > 片見 剛人 <fsi-katami @ aist.go.jp>
> >> >
> >> >
> >> >
> >>
> >>
> >
> >
> > 独立行政法人産業技術総合研究所
> > 知能システム研究部門 統合知能研究グループ
> > 〒305-8568 茨城県つくば市梅園1-1-1 中央第2
> > 片見 剛人 <fsi-katami @ aist.go.jp>
> >
> >
> > 
> 
> 


独立行政法人産業技術総合研究所
知能システム研究部門 統合知能研究グループ
〒305-8568 茨城県つくば市梅園1-1-1 中央第2
片見 剛人 <fsi-katami @ aist.go.jp>





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