[openrtm-users 00146] Re: サービスポートのIDLの継承について
kurihara shinji
shinji.kurihara @ aist.go.jp
2007年 6月 27日 (水) 16:05:34 JST
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
openrtm-users メーリングリストの案内