SlideShare a Scribd company logo
画像処理コンポーネントの作成


  (独)産業技術総合研究所
   知能システム研究部門
      宮本晴美


                 1
この実習では…
●   デモストレーションで使用したFlipコン
    ポーネントを、インストールしたソフト
    ウェア・ツールを用いて、一から開発しま
    す。
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             3
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             4
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             5
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             6
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             7
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             8
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             9
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             10
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             11
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             12
動作環境・開発環境についての確認
●   OS: Windows XP SP3 (Vista, 7でも可能)
●   コンパイラ: Visual C++ 2010 Express Edition 日本語版
●   OpenRTM-aist-1.1.0-RELEASE (C++版), Win32 VC2010
●   OpenRTP 1.1.0-RC4
    –   RTSystemEditor 1.1
    –   RTCBuilder 1.1
●   Eclipse 3.8.1 (OpenRTP 1.1.0-RC4) Windows用全部入り
●   Doxygen ドキュメント生成に必要
●   CMake
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             14
OpenCVとcvFlip関数についての確認
    void cvFlip(IplImage* src,
               IplImage* dst=NULL,
               int flipMode=0);
●   src     入力配列
●   dst 出力配列。もしdst=NULLであれば、srcが上書き
    されます。
●   flipMode 配列の反転方法の指定内容:
     –    flipMode = 0: X軸周りでの反転(上下反転)
     –    flipMode > 0: Y軸周りでの反転(左右反転)
     –    flipMode < 0: 両軸周りでの反転(上下左右反転)
130329 04
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             17
データポートの仕様



●   OpenRTM-aistには OpenCVを使用したビジョ
    ン関連のコンポーネントがサンプルとして付属
    しています。これらのコンポーネントのデータ
    ポートは画像の入出力に以下のような
    CameraImage 型を使用しています。
    詳細はwebページを確認してください。
struct CameraImage {

       /// Time stamp.

       Time tm;

       /// Image pixel width.

       unsigned short width;

       /// Image pixel height.

       unsigned short height;

       /// Bits per pixel.

       unsigned short bpp;

       /// Image format (e.g. bitmap, jpeg, etc.).

       string format;

       /// Scale factor for images, such as disparity maps,

       /// where the integer pixel value should be divided

       /// by this factor to get the real pixel value.

       double fDiv;

       /// Raw pixel data.

       sequence<octet> pixels;

  };
コンフィギュレーションの仕様
    void cvFlip(IplImage* src,
               IplImage* dst=NULL,
               int flipMode=0);
●   src     入力配列
●   dst 出力配列。もしdst=NULLであれば、srcが上書き
    されます。
●   flipMode 配列の反転方法の指定内容:
     –    flipMode = 0: X軸周りでの反転(上下反転)
     –    flipMode > 0: Y軸周りでの反転(左右反転)
     –    flipMode < 0: 両軸周りでの反転(上下左右反転)
コンフィギュレーションの仕様




●   ひとつのコンポーネントで3つの変換がで
    きると、ユーザーも便利だし、管理する
    ほうも楽チンですよね。
仕様まとめ



●   InPort
    –   ポート名・・・・・    originalImage
    –   型 ・・・・・    CameraImage
    –   意味 ・・・・・  入力画像
仕様まとめ



●   OutPort
    –   ポート名・・・・・    flippedImage
    –   型 ・・・・・    CameraImage
    –   意味 ・・・・・  反転された画像
仕様まとめ



●   Configuration
    –   パラメータ名 flipMode
    –   型 int
    –   意味 反転モード
        ●   上下反転: 0
        ●   左右反転: 1
        ●   上下左右反転: -1
アクティビティ処理の実装
アクティビティ処理の実装
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             27
RTCBuilderを用いた
    ソースコードのひな形の作成・手順

●   eclipseを起動し、RTCBuilderを表示する
●   新規プロジェクトの作成
●   コンポーネント情報を入力し生成する
    –   XMLをインポートする、または、情報を入力
        する。
     ※この章の実習は、初めてEclipseを起動した場合、
    または新しいワークスペースを使用した場合を想定し
    ております。一緒に実習をする方は、新しいワークス
    ペースを使用してください。
入力に必要なコンポーネントの詳細情報は
   Webページをご覧ください。
最後に生成されたファイルを確認します。
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             30
CMakeを使ったプロジェクトの作成
●   CMakeを起動し、ディレクトリを設定する
●   Configureボタンを押下し、コンフィギュアす
    る。
●   Generate ボタンを押下し、プロジェクトを生成
    する。


    ※この章の実習も、初めてCMakeを起動した場合、
     を想定しております。
最後に生成されたプロジェクトを
VC++でビルドして確認します。
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             33
ヘッダ、ソースの編集
ヘッダ、ソースの編集
ヘッダの編集
●   OpenCVのインクルード文を追加する。
●   イメージ用メモリ変数を宣言する。
    –   m_imageBuff
    –   m_flipImageBuff


    入力に必要なコンポーネントの詳細情報
             は
      Webページをご覧ください。
ソースの編集
●   onActivated()
    –   イメージ用メモリの初期化と、outportの画
        面サイズの初期化を行います。
●   onDeactivated()
    –   イメージ用メモリを開放します。
●   onExecute()
    –インポートの確認・読み込み、vcFlip関数の
     処理、アウトポートのデータ送信などを行い
    入力に必要なコンポーネントの詳細情報
     ます。
                は
         Webページをご覧ください。
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             38
CMakeを使ったプロジェクトの変更
●   OpenCVを使う為に、インクルード文のほかに次
    の設定が必要です。
    –   インクルードパス
    –   ライブラリ
    –   ライブラリパス
●   CMakeLists.txtを修正して、OpenCVの設定が
    入ったCMakeを実行しプロジェクトを再生成し
    ます。
●   完了したらVC++でビルドします。
修正内容はWebページをご覧ください。


   ではCMakeを修正します。
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    OpenCVとcvFlip関数についての確認
●
    コンポーネントの仕様を決める
●
    RTCBuilderを用いたソースコードのひな形の作成
●
    CMakeを使ったプロジェクトの作成
●
    ヘッダ、ソースの編集
●
    CMakeを使ったプロジェクトの変更
●
    コンポーネントの動作確認

                             41
コンポーネントの動作確認
●   NameServiceの起動
●   Flipコンポーネントの起動
●   その他のコンポーネントの起動
    –   OpenCVCameraComp, またはDirectShowCamComp
    –   CameraViewerComp
●   RTSystemEditerでコンポーネントを確認・接続する
●   コンポーネントをActivateし、動作確認を行う
隣の人のコンポーネントと通信する




            43
隣の人のコンポーネントと通信す
       る
●
    操作手順
    –   rtc.confを作成する
    –   ネームサービス、RTコンポーネント、を起
        動する
    –   RTSystemEditerを起動する
    –   ネームサービスビューに、隣の人のネーム
        サービスを登録する
    –   システムダイアログに表示し、データポート
        をリンクする
                              44
隣の人のコンポーネントと通信する
●   操作手順
    –   ネットワークを確認し、rtc.confを作成する
    –   RTコンポーネントを再起動する
    –   RTSystemEditerを起動する
    –   ネームサービスビューに、隣の人のネーム
        サービスを登録する
    –   システムダイアログに表示し、データポート
        をリンクする
隣の人のコンポーネントと通信する
●   ネットワークの確認
    –   無線LANは通信量が増えると通信速度が遅く
        なることがあるため、有線LANを使います。
隣の人のコンポーネントと通信する
●   rtc.confの準備
    –   有線LANと無線LANを使用すると、ネット
        ワークインタフェースが二つになりま
        す。rtc.confを作成し、コルバエンドポインツ
        を設定します。
    –   rtc.conf
        ●   corba.nameservers: localhost
        ●   naming.formats: %n.rtc
        ●   corba.endpoints: localhost,192.168.XXX.XXX:
IPアドレスの確認方法
●   コマンドプロンプトで確認する
    –   「スタートボタン」の「プログラムとファイルの
        検索」に「cmd.exe」と入力し「Enter」を押下
        し、コマンドプロンプトを表示します。
    –   コマンドプロンプトに「ipconfig」と入力しIPア
        ドレスを確認します。
IPアドレスの確認方法
●   コマンドプロンプトで確認する(続き)
    –   「192.168.XXX.XXX」を使用します。有線LANで
        接続したルータのDHCP機能で配布されたアドレ
        スです。
    –   ちなみに「150.29.97.XXX」は産総研の無線LAN
        で配布されたアドレスでインターネットに接続で
        きます。
    –   rtc.conf
        ●   corba.nameservers: localhost
        ●   naming.formats: %n.rtc
        ●   corba.endpoints: localhost,192.168.XXX.XXX:
隣の人のコンポーネントと通信する
●   操作手順
    –   ネットワークを確認し、rtc.confを作成する
    –   RTコンポーネントを再起動する
    –   RTSystemEditerを起動する
    –   ネームサービスビューに、隣の人のネーム
        サービスを登録する
    –   システムダイアグラムに表示し、データポー
        トをリンクする
隣の人のコンポーネントと通信する
●   操作手順
    –   ネットワークを確認し、rtc.confを作成する
    –   RTコンポーネントを再起動する
    –   RTSystemEditerを起動する
    –   ネームサービスビューに、隣の人のネーム
        サービスを登録する
    –   システムダイアグラムに表示し、データポー
        トをリンクする
隣の人のコンポーネントと通信する
●   操作手順
    –   ネットワークを確認し、rtc.confを作成する
    –   RTコンポーネントを再起動する
    –   RTSystemEditerを起動する
    –   ネームサービスビューに、隣の人のネーム
        サービスを登録する
    –   システムダイアグラムに表示し、データポー
        トをリンクする
隣の人のコンポーネントと通信する
●   操作手順
    –   ネットワークを確認し、rtc.confを作成する
    –   RTコンポーネントを再起動する
    –   RTSystemEditerを起動する
    –   ネームサービスビューに、隣の人のネーム
        サービスを登録する
    –   システムダイアグラムに表示し、データポー
        トをリンクする
☆お疲れ様でした☆

More Related Content

PDF
qmake入門
PDF
130710 02
PDF
Qt Creator を拡張する
PDF
QtでC++開発環境構築
PDF
Nodejuku01 ohtsu
PDF
Grailsのススメ(仮)
PDF
Qt5 の新機能 2012/12/15
PDF
Improvement future api
qmake入門
130710 02
Qt Creator を拡張する
QtでC++開発環境構築
Nodejuku01 ohtsu
Grailsのススメ(仮)
Qt5 の新機能 2012/12/15
Improvement future api

What's hot (13)

PPTX
node-gypを使ったネイティブモジュールの作成
PDF
How to Make Own Framework built on OWIN
PDF
基礎からのCode Contracts
PDF
Gradle a new Generation Build Tool
PDF
20210515 cae linux_install_vb
PPTX
Pub/Sub model, msm, and asio
PDF
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
PPTX
C# 8.0 非同期ストリーム
PPTX
Javaで簡単にgpgpu aparapi
KEY
JJUG CCC 2012 Real World Groovy/Grails
PPTX
async/await のしくみ
PDF
Qt5 の Input Method
PDF
Unit testing JavaScript with JUnit/JavaFX
node-gypを使ったネイティブモジュールの作成
How to Make Own Framework built on OWIN
基礎からのCode Contracts
Gradle a new Generation Build Tool
20210515 cae linux_install_vb
Pub/Sub model, msm, and asio
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
C# 8.0 非同期ストリーム
Javaで簡単にgpgpu aparapi
JJUG CCC 2012 Real World Groovy/Grails
async/await のしくみ
Qt5 の Input Method
Unit testing JavaScript with JUnit/JavaFX
Ad

Viewers also liked (18)

PPT
130329 01
PDF
20130329 rtm3
PDF
20130329 rtm2
PDF
160608 02
PDF
160608 01
PDF
130710 01
PDF
Robomec2014 rtm講習会第3部
PDF
Robomec2014 rtm講習会第1部(その2)
PDF
Robomec2014 rtm講習会第2部
PDF
130522 01
PDF
130522 rt講習会(説明用)
PDF
130522 00
PDF
Robomec2014 rtm講習会第1部(その1)
PPTX
自動アングル機能を有したロボットカメラSi
PDF
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
PPTX
Japan Robot Week 2016 RTM講習会 第1部
PDF
Japan Robot Week 2016 RTM講習会 第2部
PDF
Japan Robot Week 2016 RTM講習会 第3部
130329 01
20130329 rtm3
20130329 rtm2
160608 02
160608 01
130710 01
Robomec2014 rtm講習会第3部
Robomec2014 rtm講習会第1部(その2)
Robomec2014 rtm講習会第2部
130522 01
130522 rt講習会(説明用)
130522 00
Robomec2014 rtm講習会第1部(その1)
自動アングル機能を有したロボットカメラSi
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
Japan Robot Week 2016 RTM講習会 第1部
Japan Robot Week 2016 RTM講習会 第2部
Japan Robot Week 2016 RTM講習会 第3部
Ad

Similar to 130329 04 (20)

PDF
Rtm講習会 140626 02
PDF
Rtミドルウェア講習会@名城大学 20140624 2
PDF
プログラミング実習
PDF
200527 ur
PDF
RTミドルウェアによるロボットプログラミング技術 3. RTMによるプログラミング
PDF
181106 03
PDF
3.RTCプログラミング演習
PDF
130711 02
PPTX
OpenCVを用いた画像処理入門
PPT
170622 02
PDF
201110 03
PDF
160705-w03 RTミドルウエア講習会・早稲田大
PDF
SICE 2020 Rtm tutorial 2_online_en
PDF
160705-w02 RTミドルウエア講習会・早稲田大
PDF
Rtミドルウェア講習会@名城大学 20140624 3
PDF
OpenCVをAndroidで動かしてみた
PPTX
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
PDF
Rtコンポーネント作成入門
PDF
SICE 2020 Rtm tutorial 2_online_ja
PDF
RTコンポーネント作成入門
Rtm講習会 140626 02
Rtミドルウェア講習会@名城大学 20140624 2
プログラミング実習
200527 ur
RTミドルウェアによるロボットプログラミング技術 3. RTMによるプログラミング
181106 03
3.RTCプログラミング演習
130711 02
OpenCVを用いた画像処理入門
170622 02
201110 03
160705-w03 RTミドルウエア講習会・早稲田大
SICE 2020 Rtm tutorial 2_online_en
160705-w02 RTミドルウエア講習会・早稲田大
Rtミドルウェア講習会@名城大学 20140624 3
OpenCVをAndroidで動かしてみた
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Rtコンポーネント作成入門
SICE 2020 Rtm tutorial 2_online_ja
RTコンポーネント作成入門

More from openrtm (20)

PDF
ROBOMECH2023 RTミドルウェア講習会 第1部
PPTX
ピッキングシステム
PPTX
GNGを使った未知環境における経路計画
PPTX
まねっこロボット
PDF
商品自動補充ロボットシステム
PPTX
RTサマーキャンプ2022最終発表_都立大.pptx
PDF
SysML実習20220822SC_GA.pdf
PDF
RTミドルウェアサマーキャンプ資料2022.pdf
PDF
NEDO講座 MoveIt! チュートリアル 第1部
PDF
5.総合演習(2)
PDF
4.総合演習(1)
PDF
2.プログラミングの基礎
PDF
1.コース概要
PDF
OpenRTM概要
PDF
Slam実習
PDF
Rtshell入門
PDF
Rtミドルウェアサマーキャンプ2021_宮本信彦
PDF
RTミドルウェアサマーキャンプ2021_坂本武志_1
PPTX
Rtミドルウェアサマーキャンプ資料2021_坂本武志_2
PDF
Rtミドルウェアサマーキャンプ資料2021_菅佑樹
ROBOMECH2023 RTミドルウェア講習会 第1部
ピッキングシステム
GNGを使った未知環境における経路計画
まねっこロボット
商品自動補充ロボットシステム
RTサマーキャンプ2022最終発表_都立大.pptx
SysML実習20220822SC_GA.pdf
RTミドルウェアサマーキャンプ資料2022.pdf
NEDO講座 MoveIt! チュートリアル 第1部
5.総合演習(2)
4.総合演習(1)
2.プログラミングの基礎
1.コース概要
OpenRTM概要
Slam実習
Rtshell入門
Rtミドルウェアサマーキャンプ2021_宮本信彦
RTミドルウェアサマーキャンプ2021_坂本武志_1
Rtミドルウェアサマーキャンプ資料2021_坂本武志_2
Rtミドルウェアサマーキャンプ資料2021_菅佑樹

130329 04

  • 2. この実習では… ● デモストレーションで使用したFlipコン ポーネントを、インストールしたソフト ウェア・ツールを用いて、一から開発しま す。
  • 3. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 3
  • 4. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 4
  • 5. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 5
  • 6. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 6
  • 7. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 7
  • 8. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 8
  • 9. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 9
  • 10. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 10
  • 11. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 11
  • 12. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 12
  • 13. 動作環境・開発環境についての確認 ● OS: Windows XP SP3 (Vista, 7でも可能) ● コンパイラ: Visual C++ 2010 Express Edition 日本語版 ● OpenRTM-aist-1.1.0-RELEASE (C++版), Win32 VC2010 ● OpenRTP 1.1.0-RC4 – RTSystemEditor 1.1 – RTCBuilder 1.1 ● Eclipse 3.8.1 (OpenRTP 1.1.0-RC4) Windows用全部入り ● Doxygen ドキュメント生成に必要 ● CMake
  • 14. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 14
  • 15. OpenCVとcvFlip関数についての確認 void cvFlip(IplImage* src,   IplImage* dst=NULL,   int flipMode=0); ● src 入力配列 ● dst 出力配列。もしdst=NULLであれば、srcが上書き されます。 ● flipMode 配列の反転方法の指定内容: – flipMode = 0: X軸周りでの反転(上下反転) – flipMode > 0: Y軸周りでの反転(左右反転) – flipMode < 0: 両軸周りでの反転(上下左右反転)
  • 17. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 17
  • 18. データポートの仕様 ● OpenRTM-aistには OpenCVを使用したビジョ ン関連のコンポーネントがサンプルとして付属 しています。これらのコンポーネントのデータ ポートは画像の入出力に以下のような CameraImage 型を使用しています。 詳細はwebページを確認してください。
  • 19. struct CameraImage { /// Time stamp. Time tm; /// Image pixel width. unsigned short width; /// Image pixel height. unsigned short height; /// Bits per pixel. unsigned short bpp; /// Image format (e.g. bitmap, jpeg, etc.). string format; /// Scale factor for images, such as disparity maps, /// where the integer pixel value should be divided /// by this factor to get the real pixel value. double fDiv; /// Raw pixel data. sequence<octet> pixels; };
  • 20. コンフィギュレーションの仕様 void cvFlip(IplImage* src,   IplImage* dst=NULL,   int flipMode=0); ● src 入力配列 ● dst 出力配列。もしdst=NULLであれば、srcが上書き されます。 ● flipMode 配列の反転方法の指定内容: – flipMode = 0: X軸周りでの反転(上下反転) – flipMode > 0: Y軸周りでの反転(左右反転) – flipMode < 0: 両軸周りでの反転(上下左右反転)
  • 21. コンフィギュレーションの仕様 ● ひとつのコンポーネントで3つの変換がで きると、ユーザーも便利だし、管理する ほうも楽チンですよね。
  • 22. 仕様まとめ ● InPort – ポート名・・・・・ originalImage – 型 ・・・・・    CameraImage – 意味 ・・・・・  入力画像
  • 23. 仕様まとめ ● OutPort – ポート名・・・・・ flippedImage – 型 ・・・・・    CameraImage – 意味 ・・・・・  反転された画像
  • 24. 仕様まとめ ● Configuration – パラメータ名 flipMode – 型 int – 意味 反転モード ● 上下反転: 0 ● 左右反転: 1 ● 上下左右反転: -1
  • 27. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 27
  • 28. RTCBuilderを用いた ソースコードのひな形の作成・手順 ● eclipseを起動し、RTCBuilderを表示する ● 新規プロジェクトの作成 ● コンポーネント情報を入力し生成する – XMLをインポートする、または、情報を入力 する。 ※この章の実習は、初めてEclipseを起動した場合、 または新しいワークスペースを使用した場合を想定し ております。一緒に実習をする方は、新しいワークス ペースを使用してください。
  • 29. 入力に必要なコンポーネントの詳細情報は Webページをご覧ください。 最後に生成されたファイルを確認します。
  • 30. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 30
  • 31. CMakeを使ったプロジェクトの作成 ● CMakeを起動し、ディレクトリを設定する ● Configureボタンを押下し、コンフィギュアす る。 ● Generate ボタンを押下し、プロジェクトを生成 する。 ※この章の実習も、初めてCMakeを起動した場合、  を想定しております。
  • 33. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 33
  • 36. ヘッダの編集 ● OpenCVのインクルード文を追加する。 ● イメージ用メモリ変数を宣言する。 – m_imageBuff – m_flipImageBuff 入力に必要なコンポーネントの詳細情報 は Webページをご覧ください。
  • 37. ソースの編集 ● onActivated() – イメージ用メモリの初期化と、outportの画 面サイズの初期化を行います。 ● onDeactivated() – イメージ用メモリを開放します。 ● onExecute() –インポートの確認・読み込み、vcFlip関数の 処理、アウトポートのデータ送信などを行い 入力に必要なコンポーネントの詳細情報 ます。 は Webページをご覧ください。
  • 38. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 38
  • 39. CMakeを使ったプロジェクトの変更 ● OpenCVを使う為に、インクルード文のほかに次 の設定が必要です。 – インクルードパス – ライブラリ – ライブラリパス ● CMakeLists.txtを修正して、OpenCVの設定が 入ったCMakeを実行しプロジェクトを再生成し ます。 ● 完了したらVC++でビルドします。
  • 40. 修正内容はWebページをご覧ください。 ではCMakeを修正します。
  • 41. コンポーネント作成手順 ● 動作環境・開発環境についての確認 ● OpenCVとcvFlip関数についての確認 ● コンポーネントの仕様を決める ● RTCBuilderを用いたソースコードのひな形の作成 ● CMakeを使ったプロジェクトの作成 ● ヘッダ、ソースの編集 ● CMakeを使ったプロジェクトの変更 ● コンポーネントの動作確認 41
  • 42. コンポーネントの動作確認 ● NameServiceの起動 ● Flipコンポーネントの起動 ● その他のコンポーネントの起動 – OpenCVCameraComp, またはDirectShowCamComp – CameraViewerComp ● RTSystemEditerでコンポーネントを確認・接続する ● コンポーネントをActivateし、動作確認を行う
  • 44. 隣の人のコンポーネントと通信す る ● 操作手順 – rtc.confを作成する – ネームサービス、RTコンポーネント、を起 動する – RTSystemEditerを起動する – ネームサービスビューに、隣の人のネーム サービスを登録する – システムダイアログに表示し、データポート をリンクする 44
  • 45. 隣の人のコンポーネントと通信する ● 操作手順 – ネットワークを確認し、rtc.confを作成する – RTコンポーネントを再起動する – RTSystemEditerを起動する – ネームサービスビューに、隣の人のネーム サービスを登録する – システムダイアログに表示し、データポート をリンクする
  • 46. 隣の人のコンポーネントと通信する ● ネットワークの確認 – 無線LANは通信量が増えると通信速度が遅く なることがあるため、有線LANを使います。
  • 47. 隣の人のコンポーネントと通信する ● rtc.confの準備 – 有線LANと無線LANを使用すると、ネット ワークインタフェースが二つになりま す。rtc.confを作成し、コルバエンドポインツ を設定します。 – rtc.conf ● corba.nameservers: localhost ● naming.formats: %n.rtc ● corba.endpoints: localhost,192.168.XXX.XXX:
  • 48. IPアドレスの確認方法 ● コマンドプロンプトで確認する – 「スタートボタン」の「プログラムとファイルの 検索」に「cmd.exe」と入力し「Enter」を押下 し、コマンドプロンプトを表示します。 – コマンドプロンプトに「ipconfig」と入力しIPア ドレスを確認します。
  • 49. IPアドレスの確認方法 ● コマンドプロンプトで確認する(続き) – 「192.168.XXX.XXX」を使用します。有線LANで 接続したルータのDHCP機能で配布されたアドレ スです。 – ちなみに「150.29.97.XXX」は産総研の無線LAN で配布されたアドレスでインターネットに接続で きます。 – rtc.conf ● corba.nameservers: localhost ● naming.formats: %n.rtc ● corba.endpoints: localhost,192.168.XXX.XXX:
  • 50. 隣の人のコンポーネントと通信する ● 操作手順 – ネットワークを確認し、rtc.confを作成する – RTコンポーネントを再起動する – RTSystemEditerを起動する – ネームサービスビューに、隣の人のネーム サービスを登録する – システムダイアグラムに表示し、データポー トをリンクする
  • 51. 隣の人のコンポーネントと通信する ● 操作手順 – ネットワークを確認し、rtc.confを作成する – RTコンポーネントを再起動する – RTSystemEditerを起動する – ネームサービスビューに、隣の人のネーム サービスを登録する – システムダイアグラムに表示し、データポー トをリンクする
  • 52. 隣の人のコンポーネントと通信する ● 操作手順 – ネットワークを確認し、rtc.confを作成する – RTコンポーネントを再起動する – RTSystemEditerを起動する – ネームサービスビューに、隣の人のネーム サービスを登録する – システムダイアグラムに表示し、データポー トをリンクする
  • 53. 隣の人のコンポーネントと通信する ● 操作手順 – ネットワークを確認し、rtc.confを作成する – RTコンポーネントを再起動する – RTSystemEditerを起動する – ネームサービスビューに、隣の人のネーム サービスを登録する – システムダイアグラムに表示し、データポー トをリンクする