ここでは、OpenCVライブラリのうち、画像の反転を行うcvFlip()をVC9にてRTコンポーネント化します。
以下は、作業の流れです。
cvFlip関数は、2次元配列を垂直、水平、または両軸で反転します。
void cvFlip(IplImage* src, IplImage* dst=NULL, int flip_mode=0); #define cvMirror cvFlip src 入力配列 dst 出力配列。もしdst=NULLであれば、srcが上書きされます。 flip_mode 配列の反転方法の指定内容: flip_mode = 0: X軸周りでの反転(上下反転) flip_mode > 0: Y軸周りでの反転(左右反転) flip_mode < 0: 両軸周りでの反転(上下左右反転)
InPortからの入力画像を反転しOutPortから出力するコンポーネント。 反転の対象軸は、RTCのコンフィギュレーション機能を使用してflip_modeという名前のパラメータで指定します。
flip_modeは、反転したい方向に応じて下記のように指定してください。
作成するRTCの仕様は以下のとおりです。
※ TimedOctetSeq型は、OpenRTM-aistのBasicDataType.idlにて下記のように定義されているデータ型です。
※ octet型とは、CORBA IDLの基本型で、転送時にいかなるデータ変換も施されないことが保証されている8ビット値です。
struct Time { unsigned long sec; // sec unsigned long nsec; // nano sec }; struct TimedOctetSeq { Time tm; sequence<octet> data; };
図1は、それぞれのflip_modeでの画像処理のイメージ図です。
Flipコンポーネントの雛型の生成は、RTCBuilderを用いて行います。
新規ワークスペースを指定してeclipseを起動すると、以下のようなWelcomeページが表示されます。
このWelcomeページを左上の「X」により閉じると以下のページが表示されます。
右上の「Open Perspective」ボタンを押下し、プルダウンの「Other…」ボタンを押下します。
「RTC Builder」を選択することで、RTCBuilderが起動します。
まず最初に,RT コンポーネントを作成するための Eclipse プロジェクトを作成します。 画面上部のメニューから[ファイル]-[新規]-[プロジェクト]を選択します。
表示された「新規プロジェクト」画面において,「その他」-「 RTC ビルダ」を選択し、「次へ」をクリック.
「プロジェクト名」欄に作成するプロジェクト名を入力して「終了」をクリック。
指定した名称のプロジェクトが生成され、パッケージエクスプローラ内に追加されます。
生成したプロジェクト内には、デフォルト値が設定された RTC プロファイル XML(RTC.xml) が自動的に生成されます。
RTC プロファイルエディタを開くには、ツールバーの「 Open New RtcBuilder Editor 」ボタンを押下するか、メニューバーの [file]-[Open New Builder Editor] を選択します。
データポートやサービスポートで使用するデータ型が定義されたIDLファイルが置いてある場所を予め設定しておく必要があります。 ※ ここでの設定内容は、ワークスペースを変更しない限り有効ですので、プロジェクト毎に設定する必要はありません。 下記の手順にて、データ型が定義されているIDLファイルの在り処を設定して下さい。
1. メニューバーの「ウィンドウ(W)」 > 「設定(P)...」と辿り、設定ダイアログを表示させます。 2. [RtcBuilder] > [Data Type]の順に辿り、図12のData Type入力画面を出します。 3. Data Type入力画面の[Add]ボタンをクリックし、"IDL File Directories"を入力します。 OpenRTM-aistで定義されているデータ型のIDLファイルはデフォルトでは下記にインストールされます。 C:\Program Files\OpenRTM-aist\1.0\rtm\idl 4. [OK]ボタンをクリックし、設定を終了します。
1. 「基本」タブを選択し、基本情報を入力します。
2. 「アクティビティ」タブを選択し、使用するアクションコールバックを指定します。
Flipコンポーネントでは、onActivated(),onDeactivated(),onExecute()コールバックを使用しますので、 図14のようにon_activated,on_deactivated,on_executeの3つにチェックを入れます。
3. 「データポート」タブを選択し、データポートの情報を入力します。
4. 「コンフィギュレーション」タブを選択し、Configurationの変数を入力します。
5. 「言語・環境」タブを選択し、プログラミング言語を選択します。
今回は、C++(言語)を選択します。
6. 「基本」タブにある"コード生成"ボタンをクリックし、コンポーネントの雛型を生成します。
※ 生成されるコード群は、eclipse起動時に指定したワークスペースフォルダの中に生成されます。現在のワークスペースは、「ファイル(F)」 > 「ワークスペースの切り替え(W)...」で確認することができます。
モーションエディタ/シミュレータ
動力学シミュレータ
統合開発プラットフォーム
産総研が提供するRTC集
東京オープンソースロボティクス協会
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
OpenCVライブリのRTコンポーネント化(Flipコンポーネント)
ここでは、OpenCVライブラリのうち、画像の反転を行うcvFlip()をVC9にてRTコンポーネント化します。
以下は、作業の流れです。
cvFlip関数について
cvFlip関数は、2次元配列を垂直、水平、または両軸で反転します。
コンポーネントの概要
InPortからの入力画像を反転しOutPortから出力するコンポーネント。
反転の対象軸は、RTCのコンフィギュレーション機能を使用してflip_modeという名前のパラメータで指定します。
flip_modeは、反転したい方向に応じて下記のように指定してください。
作成するRTCの仕様は以下のとおりです。
※ TimedOctetSeq型は、OpenRTM-aistのBasicDataType.idlにて下記のように定義されているデータ型です。
※ octet型とは、CORBA IDLの基本型で、転送時にいかなるデータ変換も施されないことが保証されている8ビット値です。
図1は、それぞれのflip_modeでの画像処理のイメージ図です。
動作環境・開発環境
Flipコンポーネントの雛型の生成
Flipコンポーネントの雛型の生成は、RTCBuilderを用いて行います。
RTCBuilderの起動
新規ワークスペースを指定してeclipseを起動すると、以下のようなWelcomeページが表示されます。
このWelcomeページを左上の「X」により閉じると以下のページが表示されます。
右上の「Open Perspective」ボタンを押下し、プルダウンの「Other…」ボタンを押下します。
「RTC Builder」を選択することで、RTCBuilderが起動します。
RTCBuilder 用プロジェクトの作成
まず最初に,RT コンポーネントを作成するための Eclipse プロジェクトを作成します。 画面上部のメニューから[ファイル]-[新規]-[プロジェクト]を選択します。
表示された「新規プロジェクト」画面において,「その他」-「 RTC ビルダ」を選択し、「次へ」をクリック.
「プロジェクト名」欄に作成するプロジェクト名を入力して「終了」をクリック。
指定した名称のプロジェクトが生成され、パッケージエクスプローラ内に追加されます。
生成したプロジェクト内には、デフォルト値が設定された RTC プロファイル XML(RTC.xml) が自動的に生成されます。
RTC プロファイルエディタの起動
RTC プロファイルエディタを開くには、ツールバーの「 Open New RtcBuilder Editor 」ボタンを押下するか、メニューバーの [file]-[Open New Builder Editor] を選択します。
データポートで使用するデータタイプ定義ファイルの在り処の設定
データポートやサービスポートで使用するデータ型が定義されたIDLファイルが置いてある場所を予め設定しておく必要があります。
※ ここでの設定内容は、ワークスペースを変更しない限り有効ですので、プロジェクト毎に設定する必要はありません。
下記の手順にて、データ型が定義されているIDLファイルの在り処を設定して下さい。
コンポーネントのプロファイル情報入力とコードの生成
1. 「基本」タブを選択し、基本情報を入力します。
2. 「アクティビティ」タブを選択し、使用するアクションコールバックを指定します。
Flipコンポーネントでは、onActivated(),onDeactivated(),onExecute()コールバックを使用しますので、 図14のようにon_activated,on_deactivated,on_executeの3つにチェックを入れます。
3. 「データポート」タブを選択し、データポートの情報を入力します。
4. 「コンフィギュレーション」タブを選択し、Configurationの変数を入力します。
5. 「言語・環境」タブを選択し、プログラミング言語を選択します。
今回は、C++(言語)を選択します。
6. 「基本」タブにある"コード生成"ボタンをクリックし、コンポーネントの雛型を生成します。
※ 生成されるコード群は、eclipse起動時に指定したワークスペースフォルダの中に生成されます。現在のワークスペースは、「ファイル(F)」 > 「ワークスペースの切り替え(W)...」で確認することができます。