[openrtm-users 00157]

3 posts / 0 new
Last post
root
Offline
Last seen: 1 day 1 hour ago
Joined: 2009-06-23 14:31
[openrtm-users 00157]

はじめまして。中央大学理工学部國井研究室4年の賀田と申します。
現在OpenRTMの勉強中です。開発環境はVM上でのOpenRTM-aist-FC6です。  
 
画像の送受信をするコンポーネントを作ろうと思い、以前先輩が作ったコンポーネン
トを参考にしました。 そのソースのヘッダファイルに、 "TimedImagetype" という変数の型があり、これ
が画像の送受信用のものと判断しました。 ところがOpenRTMのデベロッパーズガイドを見ると "TimedImagetype"という型は無い
ことがわかりました。 そこで自分で型を定義する必要があると考え、
/home/openrtm/OpenRTM-aist-0.4.0/rtm/idl にある、"BasicDataType.idl"を編集し
ました。編集内容は以下の通りです。
 
〜BasicDataType.idl〜 struct Imagetype{    
long point_size;     long Send_Buf[3][10000];
    long  Image_New;     float
address; };
 
struct TimedImagetype{    Time tm;    Imagetype
data; };
 
*これらの構造体を追加。内容は以前先輩が作ったものと同じ。
 
このIDLファイルをメイクし、"BasicDataType.hh"が変更されるのも確認しました。 そしてテンプレートの
"ConsoleIn.h"を以下のように編集しました。
 
〜ConsoleIn.h〜 TimedImagetype m_imageout;
OutPort<TimedImagetype> m_Outimage;
 
*これらの構造体変数とインスタンスを追加。
 
こうしてテンプレートの "Makefile.ConsoleIn" をメイクしたところ、以下のような エラーがでました。
 
〜エラーの内容〜 error:  TimedImagetype' does not name a type
error:  TimedImagetype' was not declared in this scope error: 
template argument 1 is invalid
 
根本的に間違っているんでしょうか?今の僕にはどうしたら良いかわかりません。
よろしかったらどこが間違っているか教えていただけないでしょうか? もし、根本的に間違っていたら、どうしたらRTで画像データのやり取りができるか教
えていただきたいです。 よろしくお願い致します。

Undefined
root
Offline
Last seen: 1 day 1 hour ago
Joined: 2009-06-23 14:31
[openrtm-users 00158]

賀田さま

産総研の安藤です

下記の手順でほとんどあっていると思いますが、

> はじめまして。中央大学理工学部國井研究室4年の賀田と申します。
> 現在OpenRTMの勉強中です。開発環境はVM上でのOpenRTM-aist-FC6です。
>
> 画像の送受信をするコンポーネントを作ろうと思い、以前先輩が作ったコンポーネン
> トを参考にしました。
> そのソースのヘッダファイルに、 "TimedImagetype" という変数の型があり、これ
> が画像の送受信用のものと判断しました。
> ところがOpenRTMのデベロッパーズガイドを見ると "TimedImagetype"という型は無い
> ことがわかりました。
> そこで自分で型を定義する必要があると考え、
> /home/openrtm/OpenRTM-aist-0.4.0/rtm/idl にある、"BasicDataType.idl"を編集し
> ました。編集内容は以下の通りです。
>
>
> 〜BasicDataType.idl〜
> struct Imagetype{
> long point_size;
> long Send_Buf[3][10000];
> long Image_New;
> float address;
> };
>
> struct TimedImagetype{
> Time tm;
> Imagetype data;
> };
>
> *これらの構造体を追加。内容は以前先輩が作ったものと同じ。
>
>
> このIDLファイルをメイクし、"BasicDataType.hh"が変更されるのも確認しました。

この、変更されたヘッダはシステムのヘッダのディレクトリにインストールされていますか?
つまり、変更後 make install をましたか?

> そしてテンプレートの "ConsoleIn.h"を以下のように編集しました。

テンプレートのConsoleIn.hとは?

> 〜ConsoleIn.h〜
> TimedImagetype m_imageout;
> OutPort m_Outimage;
>
> *これらの構造体変数とインスタンスを追加。
>
>
> こうしてテンプレートの "Makefile.ConsoleIn" をメイクしたところ、以下のような
> エラーがでました。
>
>
> 〜エラーの内容〜
> error: TimedImagetype' does not name a type
> error: TimedImagetype' was not declared in this scope
> error: template argument 1 is invalid

コンパイル時にヘッダを探すパスに、先ほど変更された.hhのファイルが
存在するディレクトリは含まれていますか?

あと、ひとつ気になるのは、新たに作成したTimedImagetypeのネームスペースは
どこでしょうか?
もし、RTCのネームスペースにあるのであれば、

RTC::TimedImagetype m_imageout;
OutPort m_Outimage;

とすべきですね。

> 根本的に間違っているんでしょうか?今の僕にはどうしたら良いかわかりません。
> よろしかったらどこが間違っているか教えていただけないでしょうか?
> もし、根本的に間違っていたら、どうしたらRTで画像データのやり取りができるか教
> えていただきたいです。
> よろしくお願い致します。
>

root
Offline
Last seen: 1 day 1 hour ago
Joined: 2009-06-23 14:31
[openrtm-users 00168]

賀田様
OpenRTM-aistユーザの皆様

ユーザ定義のデータ型をInPortおよびOutPortで使用する方法についてですが、
簡単な方法を思いつきましたのでご報告します。

まず、使用したいデータ型を以下のように適当なIDLファイルに記述します。

ImageType.idl
---------------------------------------
struct Imagetype
{
long point_size;
long Send_Buf[3][10000];
long Image_New;
float address;
};

struct TimedImagetype
{
RTC::Time tm;
Imagetype data;
};
---------------------------------------

このファイルをコンポーネントを作成するディレクトリにおきます。
次に、rtc-templateでコンポーネントを作成します。
その際に、このIDLファイルを--consumer-idlオプションに指定します。

rtc-template -bcxx \
--module-name=ConsoleIn --module-type='DataFlowComponent' \
--module-desc='Console input component' \
--module-version=1.0 --module-vendor='Noriaki Ando, AIST' \
--module-category=example \
--module-comp-type=DataFlowComponent --module-act-type=SPORADIC \
--module-max-inst=10 --outport=out:TimedImagetype \
--consumer-idl=MyImageType.idl

この例では、MyImageType.idlで定義したTimedImagetypeを
OutPortのデータ型として用いています。
生成されたコードをコンパイルします。

make -f Makefile.ConsoleIn

コンパイルが通るはずです。
コンポーネント内でのデータの使用方法は通常のものと同じです。

これと同じデータ型を他のコンポーネントでも使用したい場合は、
このIDLファイルだけコピーして、同様にrtc-templateの--consumer-idl
オプションでファイルを指定してください。

まだ、これで実際にコンポーネントを作成して試していないので、
もし、この方法で出来ましたらメーリングリストでご報告いただければとおもいます。
(出来ない場合も教えてください。)

07/07/18 に Ando Noriaki さんは書きました:
> 賀田さま
>
> 産総研の安藤です
>
> 下記の手順でほとんどあっていると思いますが、
>
> > はじめまして。中央大学理工学部國井研究室4年の賀田と申します。
> > 現在OpenRTMの勉強中です。開発環境はVM上でのOpenRTM-aist-FC6です。
> >
> > 画像の送受信をするコンポーネントを作ろうと思い、以前先輩が作ったコンポーネン
> > トを参考にしました。
> > そのソースのヘッダファイルに、 "TimedImagetype" という変数の型があり、これ
> > が画像の送受信用のものと判断しました。
> > ところがOpenRTMのデベロッパーズガイドを見ると "TimedImagetype"という型は無い
> > ことがわかりました。
> > そこで自分で型を定義する必要があると考え、
> > /home/openrtm/OpenRTM-aist-0.4.0/rtm/idl にある、"BasicDataType.idl"を編集し
> > ました。編集内容は以下の通りです。
> >
> >
> > 〜BasicDataType.idl〜
> > struct Imagetype{
> > long point_size;
> > long Send_Buf[3][10000];
> > long Image_New;
> > float address;
> > };
> >
> > struct TimedImagetype{
> > Time tm;
> > Imagetype data;
> > };
> >
> > *これらの構造体を追加。内容は以前先輩が作ったものと同じ。
> >
> >
> > このIDLファイルをメイクし、"BasicDataType.hh"が変更されるのも確認しました。
>
> この、変更されたヘッダはシステムのヘッダのディレクトリにインストールされていますか?
> つまり、変更後 make install をましたか?
>
> > そしてテンプレートの "ConsoleIn.h"を以下のように編集しました。
>
> テンプレートのConsoleIn.hとは?
>
> > 〜ConsoleIn.h〜
> > TimedImagetype m_imageout;
> > OutPort m_Outimage;
> >
> > *これらの構造体変数とインスタンスを追加。
> >
> >
> > こうしてテンプレートの "Makefile.ConsoleIn" をメイクしたところ、以下のような
> > エラーがでました。
> >
> >
> > 〜エラーの内容〜
> > error: TimedImagetype' does not name a type
> > error: TimedImagetype' was not declared in this scope
> > error: template argument 1 is invalid
>
> コンパイル時にヘッダを探すパスに、先ほど変更された.hhのファイルが
> 存在するディレクトリは含まれていますか?
>
> あと、ひとつ気になるのは、新たに作成したTimedImagetypeのネームスペースは
> どこでしょうか?
> もし、RTCのネームスペースにあるのであれば、
>
> RTC::TimedImagetype m_imageout;
> OutPort m_Outimage;
>
> とすべきですね。
>
> > 根本的に間違っているんでしょうか?今の僕にはどうしたら良いかわかりません。
> > よろしかったらどこが間違っているか教えていただけないでしょうか?
> > もし、根本的に間違っていたら、どうしたらRTで画像データのやり取りができるか教
> > えていただきたいです。
> > よろしくお願い致します。
> >
>
>

Log in or register to post comments

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK