########################################
# HumanDetecLRFコンポーネントの使い方  #
#                                      #
#Yuta Kimura, TUS                 #
#                                      #
# 2011/12/2  (openRTM1.0対応)　　　 #
########################################

1.概要
　本プログラムはLRFセンサからの情報を基にした対人追従コンポーネントです．
　GLによるLRF描写画面上の四角い枠を,マウスドラック(右クリック)の状態で追従したい対象上に移動させると対象を追従します．
　ロボット(センサ)を用いたローカル座標系での対象の座標([m]単位)を出力します．
　対象を見失った場合visionからの追従結果を利用して再度追従を試みます．その場合入力に出力と同型の座標データをつなげてください．
　出力の型は自己定義のTimedXYDouble,TimedOdometryなどを使用しています．ご利用の際はご注意ください．


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


2.依存ライブラリ
  描写にGLUT(openGL)を利用しているためインストールが必要です．
  また描写のためにX系統とSDLのライブラリーも必要になります．
  
  このライブラリーはオープンソースなのでライセンスなどは必要ありません．
  具体的な依存ライブラリー[-lglut -lGLU -lGL -lXi -lXmu -lXext -lX11]
                          SDL/SDL.h SDL/SDL_thread.h
  インストール手順
  　　　　　　　　　　　#apt-get install freeglut*
                    #apt-get install libglu-dev
                    #apt-get install libglui-dev
                    #apt-get install libxi-dev
                    #apt-get install libxmu-dev
                    #apt-get install libxext-dev
                    #apt-get install libx11-dev
                    #apt-get install libsdl1.2-dev libsdl1.2debian

  その他のOSの場合は『glut　インストール』で検索してください．

  コンポーネント起動時に出るopenGLのwindowに枠がない場合は
  	システム->設定->外観の設定->視覚効果->効果なしを選択

3.コンパイル
　cd src/
　make

4.実行
　./HumanDetecLRFComp

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

5.操作方法
  このコンポーネントを使用する際は最低限Top-URGのコンポーネントも使用しないと追従を実現することはできません.
  1.コンポーネント起動(Initialize)した後,Top-URGのコンポーネントの出力ポート(Scan)とHumanDetecLRFの入力ポート(UrgData)を接続します.
  2.サービスポート(LRFInfo)を接続します.接続しない場合デフォルトでTop-URG用になっているのでTop-URGを使用する場合は接続しなくても使用可能です.
  3.両コンポーネントをアクティブ(Activated)にします.この時Top-URGからデータが受け取れている場合openGLのwindowに点群として表示されます.
  4.openGLのwindow上でマウスの右クリックを押したまま動かすことで中心に表示されている矩形枠を動かすことができる.この矩形枠をwindowに表示されている点群(取得距離データ)の中から追従したい対象を選び対象上に移動させるとその点群に対する追従が開始される.
  5.TimedOdometry型でローカル座標([m]単位)のDataを入力すると矩形枠がその座標に移動する.その座標上に点群が存在している場合追従が開始される.
  6.対象をtrackingできていない場合lostと言うメッセ−ジが端末上に表示される.

6.設定
　コンフィギュレーションセットはありません．

7.入出力仕様
　7.1 入力ポート
　　- UrgData (TimedLongSeq): LRF(北陽電機のTOP-URGを使用)からの距離データの入力
    - VisonPos (TimedXYDouble): 他の追従アルゴリズムからの追従結果(対象を見失った場合使用)
    - TargetOdometry (TimedOdometry): 追従対象の座標指定の為の入力

　7.2 出力ポート
　　- HumanPosXY (TimedXYDouble): 追従対象座標([m]単位)．(MyDataType.idl参照)
　　- HumanPos  (TimedOdometry): 追従対象座標([m]単位)．

8.開発環境
　- ubuntu 10.04
　- OpenRTM-aist-1.0.0-RELEASE

9.動作確認環境
  - Eclipse 3.4.2
　
10.ディレクトリ構成
　- doc：ドキュメント
　- src：ソースコード

