[openrtm-users 00150] Re: サービスポートのIDLの継承について

Akio Uda uda-axa @ necst.nec.co.jp
2007年 6月 27日 (水) 19:42:36 JST


To: 産総研 安藤様、栗原様

いつも御世話になります。宇田@NECシステムテクノロジーです

ご回答ありがとうございます。

残念ながら、MyServiceConsumer のスイッチに --consumer-idl=BaseService.idl
を加えただけでは現象は変わらない模様です。

下記の(2)と(3)の間で make -f Makefile.MyServiceConsumer も試してみましたが、
やはり変化は見られませんでした。

≪gen.sh≫

#!/bin/sh
rtc-template -bcxx \
    --module-name=MyServiceProvider --module-type='MyServiceProvider' \
    --module-desc='MyService Provider Sample component' \
    --module-version=0.1 --module-vendor=AIST --module-category=Generic \
    --module-comp-type=DataFlowComponent --module-act-type=SPORADIC \
    --module-max-inst=10 \
    --service=MyService:myservice0:MyService \
    --service-idl=MyService.idl --consumer-idl=BaseService.idl \
    --idl-include=.

rtc-template -bcxx \
    --module-name=MyServiceConsumer --module-type='MyServiceConsumer' \
    --module-desc='MyService Consumer Sample component' \
    --module-version=0.1 --module-vendor=AIST --module-category=Generic \
    --module-comp-type=DataFlowComponent --module-act-type=SPORADIC \
    --module-max-inst=10 \
    --consumer=MyService:myservice0:MyService \
    --consumer-idl=MyService.idl --consumer-idl=BaseService.idl \
    --idl-include=.

もう少し試してみたいと思いますが、もし何か分かりましたらご教授の程よろしく
お願い致します。


> 宇田様、栗原様
> 
> 安藤です
> 
> --consumer-idlにBaseService.idlを指定するとどうなりますか?


> NECシステムテクノロジー 宇田様
> 
> 産総研SE 栗原です。
> 
> 先程は、MyServiceProviderをmakeする事でBaseService.hhが生成されると記述して
> しまいましたが、gen.shのMyServiceConsumerに関する記述の所にも
> "--consumer-idl=BaseService.idl"を記述する必要があるようです。
> 
> (間違っていましたら、どなたか修正お願いします。)
> 
> gen.shの変更を行い、再度、gen.sh,Makefileの変更,makeの実行(どちらからでもよ
> い。)を行って頂けますでしょうか。
> 
> 宜しくお願い致します。
> 
> > To: 産総研 栗原様
> > 
> > いつも御世話になります。宇田@NECシステムテクノロジーです
> > 
> > ご回答ありがとうございます。
> > 
> > 再度以下の手順で生成を行いましたところ、無事 MyServiceProviderComp を
> > ビルドすることができました。
> > 
> > (1) 下記の gen.sh を実行する
> > (2) make -f Makefile.MyServiceProvider を実行する(ここで一旦エラーになります)
> > (3) Makefile.MyServiceProvider と Makefile.MyServiceConsumer の CXXFLAGS に
> >     -I. を追加する。
> > (4) 再度 make を実行する
> > 
> > ついでで申し訳ないのですが、栗原様の環境では MyServiceConsumerComp の
> > ビルドにも成功されていますでしょうか? もし成功されているようでしたら、
> > その際の対応方法などをご教授頂けますでしょうか。
> > 
> > こちらの環境では、リンク時に _objref_BaseService や _impl_BaseService
> > のシンボルが参照できない旨のエラーになるのですが。使用している環境は
> > 
> > OpenRTM-aist-0.4.0-RELEASE, RedHat Enterprise Linux 3.0
> > 
> > になります。よろしくお願い致します。
> > 
> > 
> > >  NECシステムテクノロジー 宇田 様。
> > > 
> > >  お世話になっております。
> > >  産総研SE 栗原です。
> > > 
> > >  BaseService.hhが生成できないとの事ですが、当方ではMakefile.MyServiceProvider
> > >  にてmakeする事でmakeには失敗しますがBaseService.hhが生成されました。
> > > 
> > >  gen.shは下記のものを、MyService.idlとBaseService.idlは以前お問い合わせ頂いた
> > >  内容をそのままコピー&ペーストして使用させて頂きました。
> > > 
> > >  当方の開発環境は、以下の通りです。
> > >     OpenRTM-aist-0.4.0 : RELEASE版
> > >     OS :VineLinux3.2
> > > 
> > >  確認させて頂きたいのですが、"makeを実行してもBaseService.hhが生成されないとの
> > >  事でしょうか?
> > > 
> > >  再度、gen.shを実行した直後に(Makefileを修正する前に)
> > >  "make -f Makefile.MyServiceProvider"を実行して頂けま
> > >  すでしょうか。
> > > 
> > >  宜しくお願い致します。
> > > 
> > > 
> > > > To: 産総研 安藤様
> > > > 
> > > > いつも御世話になります。宇田@NECシステムテクノロジーです
> > > > 
> > > > ご回答ありがとうございます。
> > > > 
> > > > ご教授頂いた方法を試してみたのですが、残念ながら BaseService.hh
> > > > は生成できませんでした。
> > > > 
> > > > こちらでは、examples/SimpleService の gen.sh を一部変更して使って
> > > > いるのですが、もし下記の gen.sh に問題がございましたらご指摘頂け
> > > > ますでしょうか?
> > > > 
> > > > ≪gen.sh≫
> > > > 
> > > > #!/bin/sh
> > > > rtc-template -bcxx \
> > > >     --module-name=MyServiceProvider --module-type='MyServiceProvider' \
> > > >     --module-desc='MyService Provider Sample component' \
> > > >     --module-version=0.1 --module-vendor=AIST --module-category=Generic \
> > > >     --module-comp-type=DataFlowComponent --module-act-type=SPORADIC \
> > > >     --module-max-inst=10 \
> > > >     --service=MyService:myservice0:MyService \
> > > >     --service-idl=MyService.idl --consumer-idl=BaseService.idl \
> > > >     --idl-include=.
> > > > 
> > > > rtc-template -bcxx \
> > > >     --module-name=MyServiceConsumer --module-type='MyServiceConsumer' \
> > > >     --module-desc='MyService Consumer Sample component' \
> > > >     --module-version=0.1 --module-vendor=AIST --module-category=Generic \
> > > >     --module-comp-type=DataFlowComponent --module-act-type=SPORADIC \
> > > >     --module-max-inst=10 \
> > > >     --consumer=MyService:myservice0:MyService \
> > > >     --consumer-idl=MyService.idl \
> > > >     --idl-include=.
> > > > 
> > > > なお、CXXFLAGS の修正は上記 gen.sh で生成された以下の Makefile に
> > > > 対して行いました。
> > > > 
> > > > Makefile.MyServiceProvider
> > > > Makefile.MyServiceConsumer
> > > > 
> > > > よろしくお願いいたします。
> > > > 
> > > > 
> > > > > NECシステムテクノロジー 宇田様
> > > > > 
> > > > > 産総研 安藤です
> > > > > 
> > > > > いつもお世話になっております。
> > > > > 
> > > > > サービスポートのインターフェースに継承を用いたいとのことですが、
> > > > > 今のところrtc-template自体は継承にはきちんと対応できていません。
> > > > > 従って、BaseService.idlはMyService.idlの中で継承およびincludeするだけでは
> > > > > 生成するコードには反映されません
> > > > > 
> > > > > 少なくとも、BaseServiceのスタブとスケルトン(実装SVC_implはいらない)を生成
> > > > > しないといけないので、以下のように--consumer-idlオプションに指定してください。
> > > > > (この際--consumerはなにも指定しない。)
> > > > > 
> > > > > --service-idl=MyService.idl --consumer-idl=BaseService.idl
> > > > > 
> > > > > こうすると、BaseServiceのスタブとスケルトンが生成されますので、
> > > > > makeすると、BaseService.hhも生成されるはずです。
> > > > > 
> > > > > ただし、MyService.hhにおいてBaseService.hhが<>でincludeされているので、
> > > > > (これは、omniORBが生成するファイルなので、本来修正すべきではない。。。)
> > > > > 以下のようにMakefileを修正して、コンパイル時のインクルードサーチパスに
> > > > > カレントディレクトリを追加しなければなりません。
> > > > > 
> > > > > CXXFLAGS = `rtm-config --cflags` -I.
> > > > > 
> > > > > 一応、これでBaseServiceを継承したMyServiceをプロバイダとして持つ
> > > > > コンポーネントが作成できるはずです。
> > > > > 
> > > > > MyServiceSVC_implに、MyServiceとBaseServiceのオペレーションを
> > > > > 実装すれば、希望のサービスを持ったコンポーネントが作成できるはずです。
> > > > > 
> > > > > 
> > > > > 申し訳ございませんが、現在出張中のため詳しくは検証できる環境がなく、
> > > > > 抜けがあるかもしれませんが、とりあえずこれで試していただいて、
> > > > > 問題がありましたらおしらせください。
> > > > > 
> > > > > また、うまくいった場合も今後の参考になりますので
> > > > > メーリングリストにて紹介していただければと存じます。
> > > > > 
> > > > > よろしくお願いいたします。
> > > > > 
> > > > > > OpenRTM-aist-0.4.0のサービスポートのIDL構成についてお伺いします。
> > > > > >
> > > > > > 以下のように、複数種類のサービスが共通のベースサービスを取り込む
> > > > > > よう、IDLに継承関係を持たせたいのですが、rtc-template はこのよう
> > > > > > なIDLに対応されていますでしょうか?
> > > > > >
> > > > > >
> > > > > >  MyService.idl
> > > > > > ┌──────────────────┐
> > > > > > │#include "BaseService.idl"          │
> > > > > > │typedef sequence<string> EchoList;  │
> > > > > > │typedef sequence<float> ValueList;  │
> > > > > > │interface MyService : BaseService   │
> > > > > > │{                                   │
> > > > > > │  string echo(in string msg);       │
> > > > > > │  EchoList get_echo_history();      │
> > > > > > │  void set_value(in float value);   │
> > > > > > │  float get_value();                │
> > > > > > │  ValueList get_value_history();    │
> > > > > > │};                                  │
> > > > > > └──────────────────┘
> > > > > >
> > > > > >  BaseService.idl
> > > > > > ┌──────────────────┐
> > > > > > │interface BaseService               │
> > > > > > │{                                   │
> > > > > > │  void base_service0();             │
> > > > > > │  void base_service1();             │
> > > > > > │  ...                               │
> > > > > > │}                                   │
> > > > > > └──────────────────┘
> > > > > >
> > > > > >
> > > > > > 単純に --service-idl および --consumer-idl スイッチで MyService.idl
> > > > > > のみを指定し、--idl-include スイッチを BaseService.idl のフォルダに
> > > > > > 設定すると、rtc-template は通るものの、コンパイル時に BaseService.hh
> > > > > > が見つからない旨のエラーになるのですが、何か不足しているスイッチ等は
> > > > > > ございますでしょうか?
> > > > > >
> > > > > > zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
> > > > > > z  宇田 安規男                                                        z
> > > > > > z  NECシステムテクノロジー株式会社  システムテクノロジーラボラトリ  z
> > > > > > z  神奈川県川崎市中原区下沼部 1753  NEC 玉川事業場 N棟30F              z
> > > > > > z  〒 211-8666   Tel: 044-431-7574  Fax: 044-431-7588                  z
> > > > > > z  E-mail: uda-axa @ necst.nec.co.jp                                     z
> > > > > > zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
> > > > > >
> > > > > >
> > > > > >
> > > > > 
> > > > > 
> > > > > -- 
> > > > > 安藤慶昭@独立行政法人産業技術総合研究所 研究員
> > > > >                    知能システム研究部門 タスクインテリジェンス研究グループ
> > > > >                    〒305-8568 茨城県つくば市梅園1-1-1 中央第2
> > > > >                    TEL: 029-861-5981 FAX: 029-861-5971
> > > > >                    n-ando @ aist.go.jp, n-ando @ ieee.org
> > > > 
> > > > 
> > > > zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
> > > > z  宇田 安規男                                                        z
> > > > z  NECシステムテクノロジー株式会社  システムテクノロジーラボラトリ  z
> > > > z  神奈川県川崎市中原区下沼部 1753  NEC 玉川事業場 N棟30F              z
> > > > z  〒 211-8666   Tel: 044-431-7574  Fax: 044-431-7588                  z
> > > > z  E-mail: uda-axa @ necst.nec.co.jp                                     z
> > > > zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
> > > > 
> > > > 
> > > 
> > > 
> > > -- 
> > > ----------
> > > 栗原 眞二
> > > shinji.kurihara @ aist.go.jp
> > > kurihara @ imagination.co.jp
> > 
> > 
> > zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
> > z  宇田 安規男                                                        z
> > z  NECシステムテクノロジー株式会社  システムテクノロジーラボラトリ  z
> > z  神奈川県川崎市中原区下沼部 1753  NEC 玉川事業場 N棟30F              z
> > z  〒 211-8666   Tel: 044-431-7574  Fax: 044-431-7588                  z
> > z  E-mail: uda-axa @ necst.nec.co.jp                                     z
> > zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
> > 
> > 
> 
> 
> -- 
> ----------
> 栗原 眞二
> shinji.kurihara @ aist.go.jp
> kurihara @ imagination.co.jp


zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
z  宇田 安規男                                                        z
z  NECシステムテクノロジー株式会社  システムテクノロジーラボラトリ  z
z  神奈川県川崎市中原区下沼部 1753  NEC 玉川事業場 N棟30F              z
z  〒 211-8666   Tel: 044-431-7574  Fax: 044-431-7588                  z
z  E-mail: uda-axa @ necst.nec.co.jp                                     z
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz




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