RTコンポーネント開発を始めよう
RTC Builderを使ったスケルトンコードの自動生成
では次に、RTC Builderを使ってスケルトンコードを生成します。ここでは最も手間を省いた方法でスケルトンを生成する方法をお教えします。
まずはEclipseを起動します。メニューから、「ウィンドウ > パースペクティブ > その他」と選択し、ダイアログから「RTC Builder」を選択してください。
メニューから、「ファイル > Open New RTC Builder」と選択し、Builder Editorを開きます。開いたRTC Builderの下部には「基本」「データポート」「サービスポート」などのタブが用意されていますので、これを選択しながら情報を打ち込んで、「generate」を選択するとスケルトンが生成されます。
「基本」タブを選択して、情報を入力しましょう。
・Module name……RTCの名前です。ここでは「Binarize」としましょう。
・Module Description……RTCの説明です。
・Module vendor……モジュールの作成者です。あなたの名前を入れましょう。
・Execution Rate……実行レートです。「100」と入力しましょう。単位は「Hz」です。タイマ処理の実行レートですが、3ページ目でもう一度説明します。
ほかにも設定項目があるのですが、現状では対応していないものがほとんどですので、そのままにしておきましょう。
次に「データポート」のタブです。「RT-Component Data InPort Profile」には入力ポートの情報が入ります。まず表の右側にある「Add」ボタンをクリックして入力ポートを追加します。入力ポートは画像を受け取るポートです。
・Port Name……ポートの名前です。「in」としましょう。これでRT System Editor上で表示されるポートの名前が決まります。
・Data Type……ポートのデータ型です。「TimedOctetSeq」です。
・Var Name……ポートのデータが格納される変数の名前です。「in」とします。これでソースコード上のポートのデータを格納する変数は「m_in」となり、ポート自体を表す変数名は「m_inIn」になります。
・Disp. Position……RT System Editorで表示される位置です。変更する必要はありません。
同様に出力ポート(RT-Component Data OutPort Profile)も設定します。今回は出力ポートを2つ、用意します。
【Port Name】 【Data Type】 【Var Name】 【Disp. Position】
out TimedOctetSeq out right
pos TimedLongSeq pos right
さらに、「言語・環境」タブを開き、「C++」を選択し、さらに「OS」で「Windows」を選びます。これで準備OKです。
早速スケルトンコードを生成しましょう。「基本」タブに戻って、「Output Project」に開発プロジェクトの名前を入れます。ここでは「BinarizeCompProj」とします。
「generate」ボタンを押し、「Generate Success」と出ればワークスペースにプロジェクトのスケルトンが生成されています。このままワーススペース内でVC++を使って開発してもいいですが、私はいつもパッケージ・エクスプローラからドラッグ&ドロップでマイ・ドキュメントの中の適当なフォルダに移動させています。
VC++による開発の準備
生成されたプロジェクトのフォルダを見てみてください。「Binarize_vc9.sln」がVC++のソリューション・ファイルです。
と、ここで、VC++でソリューションを開く前に一仕事です。copyprops.batというバッチ処理を実行してください。これは、インストールされているRTミドルウエアの環境情報をコピーしてくる作業です。
VC++でソリューションを開くと、「Binarize」と「BinarizeComp」の2つのプロジェクトが結び付けられているのがわかります。BinarizeはRTCをDLLとして実装する場合ですが、本連載では扱いません。メニューの「ビルド > 構成マネージャ」で、「BinarizeComp」の「ビルド」チェックボックスにチェックを入れておくと便利でしょう。
またOpenCVを使うためにいくつか設定する必要があります。「BinarizeComp」プロジェクトを右クリックしてプロパティを開き、以下の設定をします。
1)OpenCV用のインクルードファイルの位置を指定します。
「構成プロパティ > C/C++ > 全般」の「追加のインクルード ディレクトリ」に「C:\Program Files\OpenCV\cv\include; C:\Program Files\OpenCV\cxcore\include; C:\Program Files\OpenCV\otherlibs\highgui;」を追加。
2)OpenCV用のライブラリの位置を指定します。
「構成プロパティ > リンカ > 全般」の「追加のライブラリ ディレクトリ」に「C:\Program Files\OpenCV\lib」を追加。
3)依存するライブラリを指定します。
「構成プロパティ > リンカ > 入力」の「追加の依存ファイル」に「cv.lib cxcore.lib highgui.lib」を追加。
以上です。設定項目が多いですがVC++で開発経験がある方なら特に問題なく進められると思います。