[openrtm-beginners:00362] Python版の独自データ型IDL使用について

Tetsuya Nagasawa t_nagasawa @ nuem.nagoya-u.ac.jp
2012年 8月 7日 (火) 00:53:05 JST


夜分遅くに失礼します。
名古屋大工学研究科M1の長澤です.

python版の独自データを取り扱う方法について聞きたくてメールしました.

環境は
win7 64bit, VS2008, Python版OpenRTM-aist1.0.1RELEASE,
C++版OpenRTM-aist1.0.2RELEASE, RTSE+RTCB 1.0.0 r155
を使っています.

作成したいRTCは,SEC社のTOP-URG用RTC(http://www.sec.co.jp/robot/download_rtc.html)
から得られた距離データを,python版openRTMでmatplotlibを使い表示するというものです.

SEC社TOP-URG用RTCは独自データ型を出力するので次のようなIDL(myidl.idl)ファイルを用意し,デベロッパーズガイド応用編に沿ってRTCBでTimedMeasuredData型のInPort(変数名in)を持つpythonコードを作成するところまでは出来ました.

#include "BasicDataType.idl"

struct MeasuredData
{
float startPosition;      // start position (degree) ( ex. 0.0 )
float endPosition;        // end position (degree) ( ex. 180.0 )
long scanInterval;        // スキャン間引き数
long dataGroupingNumber;  // まとめるステップ数
sequence<long> distance;  // distance data of each position
float dataInterval;       // degree interval between data ( ex. 0.5 )
string  sensorState;      // sensor state ( ex. "NORMAL", "UPDATED" )
};
struct TimedMeasuredData
{
RTC::Time    tm;          // Timestamp( sec, nsec )
MeasuredData data;
};

しかし作成されたコード中の__init__での_d_inの宣言が
self._d_in = TimedMeasuredData(),0)
となっており,Syntax errorになります.

また試しにself._d_in = TimedMeasuredData()と書き変えてみたのですが次のようなエラーがでます.
NameError: global name 'TimedMeasuredData' is not defined

c++版での独自データ型を持つRTCはデベロッパーズガイドを参考にして作ることが出来たのですが,Python版での独自データ型の取り扱い方があまりよくわかりません.
どなたか教えて頂けるとありがたいです.



-- 
名古屋大学大学院工学研究科機械理工学専攻電子機械工学分野鈴木研究室
M1 長澤 哲弥
t_nagasawa @ nuem.nagoya-u.ac.jp


More information about the openrtm-beginners mailing list