[openrtm-users 00145] Re: サービスポートのIDLの継承について
Akio Uda
uda @ inc.cl.nec.co.jp
2007年 6月 27日 (水) 15:10:41 JST
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
openrtm-users メーリングリストの案内