[openrtm-users 00618] Re: rtc_handle.pyについて

Yusuke Nakajima y.nakajima @ aist.go.jp
2008年 10月 1日 (水) 16:29:53 JST


末廣様、栗原様

情報提供ありがとうございます。
先ほど、以下の方法で正常に認識できることを確認しました。

> (1) SensorData.idlをOpenRTM-aist-Python-xxxx/OpenRTM/RTM_IDLに
> 持っていってidlコンパイルする.

取り急ぎ、結果のご報告まで。

中島


> 中島様,
> 
> 産総研 末廣です.
> 
> Yusuke Nakajima さんは書きました:
> > 
> > サービスポート接続について教示頂きありがとうございました。
> > 
> > 接続の方がうまくいきまして、RTCの起動からDataPort/ServicePort
> > の接続、Configパラメータの変更、activateまでの一連の流れが自動化
> > 出来、さらに、OpenHRP3によるシミュレーションでも正常に動作すること
> > が確認できました。
> > 
> > 度々で申し訳ないのですが、2点ほど質問させてください。
> > 
> > (1)idlコンパイルについて
> > マニュアルでは、RTC利用環境構築の事前準備として、"RTCのサービスポート
> > を使うためには、それに対応したidlファイルが必要"とあり、omniidlによる
> > コンパイルが必要と認識していたのですが、私のスクリプトでは、これらを行わ
> > ず、スタブのimportをしない状態でもサービスポートは正常に接続出来、動作し
> > ているようですが、問題ないでしょうか?
> 
> 「RTCのサービスポートを使うためには」というのは,
> ユーザプログラムから直接サービスプロバイダのインタフェースを
> 使う場合です.
> 「サービスポートの接続」の場合は,ユーザプログラムでの
> スタブのimportは不要です.実際には各コンポーネントの側で
> スタブをimportしています.
> 
> > (2)独自型のDataPortがある場合について
> > 以下のようなIDLにて、module名RTCとした独自データ型でDataPortを定義
> > しているRTCもあり、他のRTCと同様にRTCを起動し、NameServiceより
> > handleの取得を試みると、"is not alive"となります。
> > omniidlでコンパイルし"import RTC"をすると、大元のRTCがimportできない
> > ようですし、module名RTCを変えてomniidlをすると、"Time not found"と
> > エラーを吐くという状態でして、どのように対処すべきかが分からない状況
> > です。解決法をご教示願えませんでしょうか。
> 
> これは結構難しい問題ですね.
> C++では,idlのモジュールを分割してロードできるのかな.
> pythonでは,idlのモジュールとpythonのモジュールが対応付け
> られているので,分割してロードするのが難しい.
> 
> 考えられる案は,
> (1) SensorData.idlをOpenRTM-aist-Python-xxxx/OpenRTM/RTM_IDLに
> 持っていってidlコンパイルする.
> (2) 上記ディレクトリのBasicDataType.idlを書き換え,idlコンパイルする.
> (3) RTCモジュールにしないで,TimeはRTC::Timeとして引用する.
> などです.
> ただ,(3)はrtc-templateが正しいコードを生成できるかどうか
> 不明です.
> 
> とりあえずのお勧めは(1)だと思います.
> 
> どなたか他に良い代案があれば教えてください.
> 
> > ******************************************************************
> > #ifndef __SensorData_idl__
> > #define __SensorData_idl__
> > 
> > #include "BasicDataType.idl"
> > 
> > module RTC {
> > 
> >   //------------------------------------------------------------
> >   // Primitive data type definition
> >   //------------------------------------------------------------
> > 
> >   struct MeasurementData
> >   {
> >     long startDirection;
> >     long endDirection;
> >     long collectStepNumber;
> >     long interval;
> >     long timestamp;
> >     sequence<long> distance;
> >   };
> >   
> >   struct TimedMeasurementData
> >   {
> >     Time tm;
> >     MeasurementData data;
> >   };
> >   
> >   struct SensorStatus
> >   {
> >     string sensorType;
> >     string laserState;
> >     string motorSpeed;
> >     string measureMode;
> >     string baudRate;
> >     string timeStamp;
> >     string sensorState;
> >   };
> >   
> >   struct TimedSensorStatus
> >   {
> >     Time tm;
> >     SensorStatus data;
> >   };
> >   
> > }; // end of module RTM
> > 
> > #endif // __SensorData_idl__
> > 
> > ******************************************************************
> 
> -- 
> Takashi Suehiro, Principal Research Scientist, Intelligent Systems
> Research Institute, AIST
> Tel: +81-29-861-5964 Fax: +81-29-861-5989 E-mail: t.suehiro @ aist.go.jp
> 1-1-1 Umezono, Tsukuba, Ibaraki 3058568, Japan





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