画像処理コンポーネントの作成


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


                 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: 両軸周りでの反転(上下左右反転)
20130329 rtm4
コンポーネント作成手順
●
    動作環境・開発環境についての確認
●
    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 (9)

PDF
パートナーシップ資料(産総研諏訪:倫理審査) Web用
PDF
20130329 rtm1
PDF
Robomec2014 rtm講習会第3部
PDF
20130329 rtm01
PDF
131017 cnr研究会 ando
PPT
130329 01
PDF
I rex2013 rtミドルウェア講習会ー原
PDF
Rtm講習会 140626 01
PDF
Rtm講習会 140626 02
パートナーシップ資料(産総研諏訪:倫理審査) Web用
20130329 rtm1
Robomec2014 rtm講習会第3部
20130329 rtm01
131017 cnr研究会 ando
130329 01
I rex2013 rtミドルウェア講習会ー原
Rtm講習会 140626 01
Rtm講習会 140626 02
Ad

Similar to 20130329 rtm4 (20)

PPT
170622 02
PDF
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
PDF
160705-w03 RTミドルウエア講習会・早稲田大
PDF
3.RTCプログラミング演習
PPTX
Operator reading and writing ( Operator SDK 編 )
PDF
Rtミドルウェア講習会@名城大学 20140624 2
PDF
Container Storage Interface のすべて
PPTX
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
PDF
OpenShiftでJBoss EAP構築
PDF
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
PDF
Spring3.1概要x di
PDF
201110 03
PDF
はてなにおける継続的デプロイメントの現状と Docker の導入
PDF
4.総合演習(1)
PPTX
WebRTC on Native App
PDF
SICE 2020 Rtm tutorial 2_online_en
PPTX
Klocwork C/C++解析チューニング 概要
PDF
Kubernetes Operator for vSphere VM
PDF
Ec cube開発合宿 プラグインセミナー
170622 02
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
160705-w03 RTミドルウエア講習会・早稲田大
3.RTCプログラミング演習
Operator reading and writing ( Operator SDK 編 )
Rtミドルウェア講習会@名城大学 20140624 2
Container Storage Interface のすべて
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
OpenShiftでJBoss EAP構築
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
Spring3.1概要x di
201110 03
はてなにおける継続的デプロイメントの現状と Docker の導入
4.総合演習(1)
WebRTC on Native App
SICE 2020 Rtm tutorial 2_online_en
Klocwork C/C++解析チューニング 概要
Kubernetes Operator for vSphere VM
Ec cube開発合宿 プラグインセミナー

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
2.プログラミングの基礎
PDF
1.コース概要
PDF
OpenRTM概要
PDF
Slam実習
PDF
Rtshell入門
PDF
Rtコンポーネント作成入門
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)
2.プログラミングの基礎
1.コース概要
OpenRTM概要
Slam実習
Rtshell入門
Rtコンポーネント作成入門
Rtミドルウェアサマーキャンプ2021_宮本信彦
RTミドルウェアサマーキャンプ2021_坂本武志_1
Rtミドルウェアサマーキャンプ資料2021_坂本武志_2
Rtミドルウェアサマーキャンプ資料2021_菅佑樹

20130329 rtm4

  • 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を起動する – ネームサービスビューに、隣の人のネーム サービスを登録する – システムダイアグラムに表示し、データポー トをリンクする