jsk-ros-pkg / jsk_recognition

JSK perception ROS packages
https://github.com/jsk-ros-pkg/jsk_recognition
271 stars 189 forks source link

organized_multi_plane_segmentation.launchに特定物体認識を加えたい #292

Closed YuOhara closed 10 years ago

YuOhara commented 10 years ago

jsk_recognitionのorganized_multi_plane_segmentation.launchで物体に対して、interactive_markerでタッチできるので、 そのときに送られてくる点群を登録して、再び見えたときに、それだよと教えてくれる 機能を追加したいです。

pclを使った認識がチュートリアル http://pointclouds.org/documentation/tutorials/correspondence_grouping.php#correspondence-grouping にあるので、それを組み込めばいいんじゃないかと思ってます。

あるいは、いい感じの方法や既存のプログラムなどがありますでしょうか

garaemon commented 10 years ago

さくっと実装して追加してみましょう

YuOhara commented 10 years ago

かしこまりました。やってみます

k-okada commented 10 years ago

@aginika が卒論でやっていたPFPHの認識のコードを見つけて使ってみてみましょう.

YuOhara commented 10 years ago

パラメータやプログラムのせいかもしれないですが、 ポイントクラウド上で認識が実装してもあまりうまくいかないので、 ひとまずjsk_perceptionのpoint_pose_extractionで認識を走らせる感じで、 organized_multiplane_segmentation.launchに特定物体認識を組み込もうと思います。

garaemon commented 10 years ago

平面抽出したあとにセグメンテーションかけて色のマッチングしたらそれっぽい感じの特定物体認識になるきもしますね。

セグメンテーション結果はorganizedなんちゃらで出ているので、ColorMatcher(だっけ?)の入力を変えるだけかも

YuOhara commented 10 years ago

確かに、それでいけてそうです。 recognition (※赤が見つかってるところ、青が見つかってないところです。)

garaemon commented 10 years ago

良い感じですね

garaemon commented 10 years ago

僕の方で形状ベースな認識を実装しようとしています。=認識対象のモデルが点群で与えられる

が、すでに悩むところはいっぱいあるので段階的にたくさん作って評価していく作戦にしようと思います。

整理しておくと問題は2種類有ります.

  1. リファレンスの点群の原点をどうするか
  2. どうやって位置姿勢を見つけるか

1にかんしては I. 何も考えずにセグメンテーション結果をリファレンスにする II. バウンディングボックスの中心とかを減点にする III. 事前に平面検出を走らせるなら、原点は平面の上に置く

2に関しては I. ICPでやるのか II. ParticleFitlerでやるのか III. 他の特徴量を使ってやるのか IV. 6自由度推定するのか V. 平面高速を入れて3自由度推定にするのか

という段階が有りそうです.

garaemon commented 10 years ago

また、ICPの場合は事前の位置合わせを3次元点群特徴量でやるというのがありますが、これを入れるべきかどうか、という選択肢もありますね。

garaemon commented 10 years ago

とりあえず最も簡単な組み合わせから始めると、、、

  1. 平面検出とか色々組み合わせてセグメンテーションをいいかんじにする
  2. バウンディングボックスをクリックしてreferenceを保存(pcdへ)
  3. 位置合わせの時もバウンディングボックスをクリックして、その中の点群とリファレンスをICPで6自由度の位置合わせ
garaemon commented 10 years ago

シンプル6DOF版 https://github.com/jsk-ros-pkg/jsk_recognition/pull/309

リファレンスとターゲットの点群の原点に脆弱。つまり、初期位置合わせが重要。

garaemon commented 10 years ago

ICPを使って物体の位置を合わせるコードをサラっと書いて見ました。

https://drive.google.com/a/jsk.imi.i.u-tokyo.ac.jp/file/d/0B4bnoIcbRJVudlV4aXNpX0pCMlk/view?usp=sharing

ドリルを見つけています。 左側の画面で僕がセグメンテーション結果をクリックして、その結果に対してリファレンスとして 予め登録しておいたドリルの点群を合わせています。その結果が赤です。

右側の画面はデバッグ用で、白がリファレンス、青がセンサ入力、赤が結果です。 簡単に言うと、青い点群を動かしてなるべく白い点群に合わせようとしていて、合わせた結果が赤い点群です。

結構良い感じだと思います。うまく行っている秘密は事前にPCAと平面検出を使って 初期位置をかなり良い感じに合わせているからですね。

garaemon commented 10 years ago

PCAの軸が反転する可能性を考慮するとかなり初期値がバッチリ合うようになりますね

k-okada commented 10 years ago

これでとりあえずドリルを掴んでみましょう @YuOhara

garaemon commented 10 years ago

タケノコドリル https://drive.google.com/a/jsk.imi.i.u-tokyo.ac.jp/file/d/0B4bnoIcbRJVueXdhVVczeHlMZDQ/view?usp=sharing

screenshot from 2014-09-27 12 35 04

garaemon commented 10 years ago

.ros以下に.pcdファイルができる

garaemon commented 10 years ago

点群のモデルを管理するシンプルなデータベース的なサーバーを作ろうと思います。

まずはそれでクリックした物体が何に近いかというのをICPで評価するのを今日の目標としておきます

k-okada commented 10 years ago

稲垣くんの卒論にそういうことが書いてあった気がします. 稲垣くん,僕のはたいしたことがないから,以外の返事をお願いします.

2014-10-01 12:58 GMT+09:00 Ryohei Ueda notifications@github.com:

点群のモデルを管理するシンプルなデータベース的なサーバーを作ろうと思います。

まずはそれでクリックした物体が何に近いかというのをICPで評価するのを今日の目標としておきます

— Reply to this email directly or view it on GitHub https://github.com/jsk-ros-pkg/jsk_recognition/issues/292#issuecomment-57416192 .

garaemon commented 10 years ago

プルリクエスト下さい

2014年10月1日水曜日、Kei Okadanotifications@github.comさんは書きました:

稲垣くんの卒論にそういうことが書いてあった気がします. 稲垣くん,僕のはたいしたことがないから,以外の返事をお願いします.

2014-10-01 12:58 GMT+09:00 Ryohei Ueda <notifications@github.com javascript:_e(%7B%7D,'cvml','notifications@github.com');>:

点群のモデルを管理するシンプルなデータベース的なサーバーを作ろうと思います。

まずはそれでクリックした物体が何に近いかというのをICPで評価するのを今日の目標としておきます

— Reply to this email directly or view it on GitHub < https://github.com/jsk-ros-pkg/jsk_recognition/issues/292#issuecomment-57416192>

.

— Reply to this email directly or view it on GitHub https://github.com/jsk-ros-pkg/jsk_recognition/issues/292#issuecomment-57416805 .

from iPhone

garaemon commented 10 years ago

https://drive.google.com/a/jsk.imi.i.u-tokyo.ac.jp/file/d/0B4bnoIcbRJVuVFBLeHFPYUtjZGc/view?usp=sharing

複数の物体モデルの中から探すようにしてみた。 ICPよりも僕のトラッカで見つけたほうが精度が出そうだが,,,

garaemon commented 10 years ago

チケットを切るときはもうちょっと細かいトピックで切ると良いですね