jsk-ros-pkg/jsk_recognition — pull request #425 by h-kamada (2014-11-15 08:19:07+00:00)
Title: servicecall

* 対象物の座標の受け取り方法を関数型からservicecall型へ変更
* 対象物の座標を/openni_rgb_optical_frame相対座標ではなく/map相対座標を基準に変更
* servicecallのための新しいsrvファイルの作成(posedetection_msgs下での変更)
* 信頼度を入れることを想定したObject6DPose.msgに関わる変更(posedetection_msgs下での変更)

元々のコードでは、関数型で、関数が呼ばれると認識結果のsubscribeを始め、結果が安定したら座標を返す、というような流れになっていた。
それを改め、認識に関わる部分を事前に立ち上げて認識結果を常に取得するようにしておき、servicecallとして認識結果が要求されると最新の認識結果を信頼度とともに返すという流れにした。

認識結果そのものはkinectから得られるものであるために、その座標は/openni_rgb_optical_frame基準になっている。
元のコードでは、これを/base_footprint基準に変更し、その座標を元にIKを解いてドアをつかんだりする仕様になっていた。
今回の変更で、/openni_rgb_optical_frameを/map基準に変更した状態で座標の結果を保存し、servicecallが呼ばれたら、/mapを/base_footprint基準に変換して座標を返り値にする形に変更した。
このようにすることで、認識結果を受け取ってからPR2が動いていたとしても、最新の位置情報を元にIKを解くことができるため、動きながら認識するといったことが可能になるはず。