[openrtm-users 00434] Re: 「1対多のサービスポート接続のメッセージ」について

kurihara shinji shinji.kurihara @ aist.go.jp
2008年 4月 16日 (水) 18:00:26 JST


中島 様

栗原です。

> ポート接続時に
> 
> ”Port interfaces do not match completely”
> 
> というアラームメッセージが表示されますが、問題ないでしょうか?
RtcLinkでは、どのproviderポートのオブジェクトとconsumerポートのオブジェク
トが接続可能かのチェックを行っており、その際に、どちらかのポートに登録さ
れているオブジェクトの数の最大数個の接続が可能ではない場合に警告メッセー
ジを出力するようになっております。
ですので今回の場合は特に問題はありません。

もし、"No corresponding port interface."のようなメッセージがでた場合は
どのオブジェクトも接続可能ではないという事ですので、再度、コンポーネン
トを確認する必要があります。

今回のserviceACompのproviderポートとserviceBCompのconsumerポートの接続
について説明させて頂きますと、 serviceACompのproviderポートは、

    m_providerAPort.registerProvider("CtoA", "srvA", m_CtoA);   ---- (1)
    m_providerAPort.registerProvider("BtoA", "srvA", m_BtoA);   ---- (2)

のように、一つのポートにm_CtoAとm_BtoAオブジェクトが登録されております。

一方、serviceBCompのconsumerポートは、

    m_consumerBPort.registerConsumer("BtoA", "srvA", m_BtoA);   ---- (3)
    m_consumerBPort.registerConsumer("BtoC", "srvC", m_BtoC);   ---- (4)

のようにこちらも一つのポートにm_BtoAとm_BtoCオブジェクトが登録されてお
ります。

providerポート、consumerポート共に2つのオブジェクトが登録されております
が、これらの内、(2)-(3)の組合せしか接続可能ではなく、『どちらかのポート
に登録されているオブジェクトの数の最大数個の接続が可能ではない場合』に
警告メッセージがでるようになっていますので、ご報告頂きましたように警告
が出力されたようです。

※ サービスポートの接続では、providerポートとconsumerポートのインスタン
   ス名とインターフェース名が同じである必要があります。


以上、
長文になり申し訳ございません。 宣しくお願い致します。 


> 産総研の中島です。
> 
> 
> 「1対多のサービスポート接続のメッセージ」について質問させてください。
> 
> 
> サンプルRTC「serviceAComp」「serviceBComp」「serviceCComp」
> を3つ、以下のようなIDLとgen.shを用いて作成し、各々のRTCでは、
> それぞれ一つずつ「provider/consumer」用のポートを用意して、
> 
>  [provider A]----[consumer B]
>              ----[consumer C]
>              
>  [provider B]----[consumer A]
>              ----[consumer C]
>              
>  [provider C]----[consumer A]
>              ----[consumer B]             
> 
> のような全てのポートが「1対2」となるようにRtc-Linkで接続し、動作確認
> をしていたところ、正常にサービスのやり取りは出来ているようですが、
> ポート接続時に
> 
> ”Port interfaces do not match completely”
> 
> というアラームメッセージが表示されますが、問題ないでしょうか?
> 
> 
> イメージとして、同じポートに別の複数RTCのポートから接続する場合に、
> プロバイダ/コンシューマで整合させる「インスタンス名(例えば以下の"BtoA"とか)」
> をユーザが選択する必要があるかと思えたのですが、実際は上記アラームが出て「OK」を
> すると内部で自動的に選択しているようです。
> 
> 自動的に選択出来るにも関わらず、このアラームが出るということは、
> 今回のようなサービスポートの接続方法をRTMとして推奨していないものなので
> しょうか?
> 
> もしくは、このアラームは別の何らかの修正が必要であることを意味しているの
> でしょうか?
> 
> 
> よろしくお願いいたします。
> 
> 
> --[serviceA.idl]---
> 	interface srvA {
> 		void serviceA();
> 	};
> 
> --[serviceB.idl]---
> 	interface srvB {
> 		void serviceB();
> 	};
> 
> --[serviceC.idl]---
> 	interface srvC {
> 		void serviceC();
> 	};
> 
> ---[gen.sh(serviceACompの場合)]---
>     /usr/local/bin/rtc-template -bcxx --module-name=serviceA 
>     --module-desc=serviceA --module-version=0.1 --module-vendor=AIST 
>     --module-category=Generic --module-comp-type=DataFlowComponent 
>     --module-act-type=SPORDIC --module-max-inst=10 
>     --service=providerA:BtoA:srvA --service=providerA:CtoA:srvA 
>     --service-idl=serviceA.idl --consumer=consumerA:AtoB:srvB 
>     --consumer-idl=serviceB.idl --consumer=consumerA:AtoC:srvC 
>     --consumer-idl=serviceC.idl
> 
> ---[gen.sh(serviceBCompの場合)]---
>     /usr/local/bin/rtc-template -bcxx --module-name=serviceB 
>     --module-desc=serviceB --module-version=0.1 --module-vendor=AIST 
>     --module-category=Generic --module-comp-type=DataFlowComponent 
>     --module-act-type=SPORDIC --module-max-inst=10 
>     --service=providerB:AtoB:srvB --service=providerB:CtoB:srvB 
>     --service-idl=serviceB.idl --consumer=consumerB:BtoA:srvA 
>     --consumer-idl=serviceA.idl --consumer=consumerB:BtoC:srvC 
>     --consumer-idl=serviceC.idl 
> 
> ---[gen.sh(serviceCCompの場合)]---
>     /usr/local/bin/rtc-template -bcxx --module-name=serviceC 
>     --module-desc=serviceC --module-version=0.1 --module-vendor=AIST 
>     --module-category=Generic --module-comp-type=DataFlowComponent 
>     --module-act-type=SPORDIC --module-max-inst=10 
>     --service=providerC:AtoC:srvC --service=providerC:BtoC:srvC 
>     --service-idl=serviceC.idl --consumer=consumerC:CtoA:srvA 
>     --consumer-idl=serviceA.idl --consumer=consumerC:CtoB:srvB 
>     --consumer-idl=serviceB.idl 
> -----------------------------------------------------
> 〒305-8568 
> 茨城県つくば市梅園1-1-1 つくば中央第2  2-12棟
> 独立行政法人 産業技術総合研究所
>  知能システム研究部門 自律行動制御研究グループ
> 
>    中島 裕介 (Yusuke Nakajima)
> 
>  TEL:029-861-5080(内線55267)
>  mailto:y.nakajima @ aist.go.jp
> -----------------------------------------------------
> 
> 


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



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