PR

RTコンポーネント開発を始めよう

2009年6月9日(火)
菅 佑樹

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++で開発経験がある方なら特に問題なく進められると思います。

早稲田大学
早稲田大学創造理工学部総合機械工学科助手。博士(工学)。人間とロボットとの物理的な相互作用と飽きに関する研究に従事。その他に木登り・枝打ちロボットや、車椅子搭載型ロボットアームの開発などに携わる。計測自動制御学会RTミドルウェア賞受賞(2008年)。http://www.ysuga.net

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています