﻿#########################################
# HumanDetecCameraコンポーネントの使い方#
#                                       #
# Yuta Kimura, TUS                      #
#                                       #
# 2011/11/29                            #
#########################################

1.概要
　本プログラムはステレオカメラからの情報を基にした対人追従コンポーネントです.
　ColorImageウィンドウには入力された画像が表示されます.Enterキーを入力することでウィンドウの画像が固定されます.
　画像を固定した状態で,マウスドラッグ(左クリック)で追跡対象者の領域を選択することで,ロボットのローカル座標系での対象の位置を出力します.
　選択された領域はtempウィンドウに表示されます.
　入力画像のサイズは320x240pixelです.
　出力の型は自己定義のTimedXYDouble,TimedOdometryなどを使用しています．ご利用の際はご注意ください．


<ロボット(センサ)を用いたローカル座標系>
Y（正面）
↑
＋→X


2.依存ライブラリ
　openCV

3.コンパイル
　cd src/
　make

4.実行
　./HumanDetecCameraComp -f ./rtc.conf

  コンポーネントの実行(Activate),DataPortの接続などの操作はeclipse及びRTSystemEditorを用いて動作確認を行っております.その他の環境ではまだ確認をしておりませんのでご了承ください.

5.操作方法
  このコンポーネントを使用する際は最低限視差画像の取得できるステレオカメラのコンポーネントも使用しないと追従を実現することはできません.
  1.コンポーネント起動(Initialize)した後,ステレオカメラのコンポーネントの出力ポート(Color)とHumanDetecCameraの入力ポート(Color),ステレオカメラのコンポーネントの出力ポート(XYZData)とHumanDetecCameraの入力ポート(XYZData)を接続します.雲台を使用する場合HumanDetecCameraの入力ポート(HeadAngle)に雲台のPanTilt角を接続すると雲台を中心とするローカル座標系での追従対象座標を取得することが出来る．
  2.サービスポート(CameraInfo)を接続します.接続しない場合デフォルト(channels=3,height=240,width=320)との一致判断を行えませんステレオカメラのDataが事前に一致していると判断した場合接続しなくても使用可能です.
  3.両コンポーネントをアクティブ(Activated)にします.この時ステレオカメラからデータが受け取れている場合生成されたwindowに画像が表示されます.
  4.ColorImageのwindow上で一度Enterを押し左クリックで矩形を選択し再度Enterを押す．これにより矩形内の色情報のヒストグラムを生成でき追従が開始される.
  5.選択した矩形の画像はtempのwindowに表示され，追従結果はColorImageのwindowでヒストグラムの判断結果として矩形で囲まれた中心の座標データとして出力される．

6.設定
　BackGround_Disp: 視差画像における背景領域の閾値
　BackGround_XYZ: ３次元点群における背景領域の閾値

7.入出力仕様
　7.1 入力ポート
　　- Color (TimedOctetSeq): 色情報
    - Disparity (TimedOctetSeq): 視差画像
    - XYZData (TimedXYZLong): ３次元点群[mm]
    - HeadAngle (TimedPanTilt): 雲台のパンチルト角度

　7.2 出力ポート
　　- PosOnImg (TimedDoubleSeq): 画像上の対象人物の位置
　　- AreaOnImg (TimedDoubleSeq): 画像上の対象人物の領域
　　- TargetPos (TimedOdometry): 対象人物の２次元位置[m]
　　- Target3DPos (TimedXYZDouble): 対象人物の３次元位置[m]
　　- TargetAngle (TimedPanTilt): 対象人物のパンチルト角度
　　- UpdateHSHist (TimedOctetSeq): 更新されたHSヒストグラム
　
　7.3 サービスポート
　　- CapPORT (CameraInfo): カメラ情報

8.開発環境
　- gcc 4.3.2
　- ubuntu 10.04
　- OpenRTM 1.0.0
　- ACE 5.4.7-13
　- omniORB 4.1.1-2
　- OpenCV 1.0
　
9.動作確認環境
  - Eclipse 3.4.2
　
10.ディレクトリ構成
　- doc：ドキュメント
　- src：ソースコード
