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