[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 メーリングリストの案内