start-jsk / jsk_apc

Other
36 stars 35 forks source link

物体をもった状態で判別する #91

Closed k-okada closed 9 years ago

k-okada commented 9 years ago
k-okada commented 9 years ago

dataset -> http://rll.berkeley.edu/amazon_picking_challenge/ histgram matcher -> https://github.com/jsk-ros-pkg/jsk_recognition/blob/master/jsk_pcl_ros/src/color_histogram_matcher_nodelet.cpp

k-okada commented 9 years ago

cameras -> https://www.youtube.com/watch?v=_CZZjStPckM

garaemon commented 9 years ago

perception out of box

wkentaro commented 9 years ago

@iory gui作るとかというのはどうなった?

wkentaro commented 9 years ago

シンプルなgui作りました。 https://github.com/start-jsk/2014-semi/pull/110

wkentaro commented 9 years ago

color histogram matcherは実行してもinputトピックが表れず使い方が分からないので、とりあえずsiftでやってみようと思います。

k-okada commented 9 years ago

@aginika 稲垣くん.説明してあげてください.

◉ Kei Okada

2015-03-01 18:46 GMT+09:00 Kentaro Wada notifications@github.com:

color histogram matcherは実行してもinputトピックが表れず使い方が分からないので、とりあえずsiftでやってみようと思います。

— Reply to this email directly or view it on GitHub https://github.com/start-jsk/2014-semi/issues/91#issuecomment-76589952.

aginika commented 9 years ago

@wkentaro どのように使おうとしましたか? launchファイルかコマンドかを張ってもらえると助かります。

wkentaro commented 9 years ago

よろしくお願いします。

$ roscore
$ rosrun jsk_pcl_ros color_histogram_matcher
$ rostopic list
/color_histogram_matcher/best_match
/color_histogram_matcher/coefficient_points
/color_histogram_matcher/output
/color_histogram_matcher/output_histograms
/color_histogram_matcher/output_reference
/color_histogram_matcher/parameter_descriptions
/color_histogram_matcher/parameter_updates
/rosout
/rosout_agg

ソースを見た感じではinputなどがあるはずだとあるはずだと思ったのですが、color_histogram_matcherがsubscribeしているtopicが見あたらないので、使い方がわかりません。どこを調べたらよいのかなど教えていただけると助かります。

garaemon commented 9 years ago

outputをsubscribeしないとinputが出て来ませんね

残念ながらドキュメントがないコードにあたってしまっていますね. https://github.com/jsk-ros-pkg/jsk_recognition/tree/master/jsk_pcl_ros

rostopic echo /color_histogram_matcher/outputとかやると良いかと思います

wkentaro commented 9 years ago

できました。ありがとうございます。 https://github.com/jsk-ros-pkg/jsk_recognition/blob/master/jsk_pcl_ros/src/color_histogram_matcher_nodelet.cpp#L69 がsubscribe用のメソッドだと思うのですが、これはどこで呼んでいますか? main関数はどこかにまとめて書いているんでしょうか。

garaemon commented 9 years ago

nodeletなので,普通の実行プログラムとちょっと違います.

外部にmain関数があって,そこでros::spin()が呼ばれているので,コールバック関数を登録することしかしていません.

このsubscribeメソッドは https://github.com/jsk-ros-pkg/jsk_common/blob/master/jsk_topic_tools/include/jsk_topic_tools/connection_based_nodelet.h#L73 の実装になっていて, https://github.com/jsk-ros-pkg/jsk_common/blob/master/jsk_topic_tools/include/jsk_topic_tools/connection_based_nodelet.h#L87 によってpublisherを監視していて必要に応じて呼び出されます.

https://github.com/jsk-ros-pkg/jsk_recognition/blob/master/jsk_pcl_ros/src/color_histogram_matcher_nodelet.cpp#L129 これがcallbackとして呼ばれます.

wkentaro commented 9 years ago

なるほど、そして https://github.com/jsk-ros-pkg/jsk_common/blob/master/jsk_topic_tools/src/connection_based_nodelet.cpp が雛形になっているということですね。

wkentaro commented 9 years ago

ソースの見方が大体わかりました。ありがとうございます。 color_histogramでも判別をやってみようと思います。

garaemon commented 9 years ago

はい、jsk_perceptionとjsk_pcl_rosは大体のプログラムがこの書き方で実装されています

wkentaro commented 9 years ago

jsk_pcl_ros/color_histogram_matcherを使ってみて、color_histogramでの判別は以下の理由で https://github.com/jsk-ros-pkg/jsk_recognition/blob/master/jsk_perception/src/color_histogram.cpp の方が適しているのではと思うのですが、解釈が間違っているでしょうか?

  1. stlデータ・セットには色がついていないため画像を使う必要がある。
  2. color_histogram_matcherはソースを読んで姿勢を判別するものだと思ったので、物体判別にはそのままは使えない。色のヒストグラムを出すだけ(matchは別で書く)であればcolor_histogramの方が使いやすい。(1の理由から)
garaemon commented 9 years ago

color_histogram_matcherはソースを読んで姿勢を判別するものだと思ったので

入力が点群か画像か、というような違いだった気がします。

色のヒストグラムを出すなら、おすすめは jsk_perceptoin/rgb_decomposerやjsk_perception/hsv_decomposerで画像をそれぞれの色チャンネルごとに分解して、jsk_perception/signle_channel_histogramでいろヒストグラムを計算するのが良い。

マッチングはcolor_histogram_label_matchかcolor_histogram_sliding_matcherが使えるかな。

https://github.com/jsk-ros-pkg/jsk_recognition/pull/618

サンプルはどこにあるかちょっとすぐには思い出せません.

wkentaro commented 9 years ago

ありがとうございます。 画像の色のヒストグラムを比較して、物体を判別したいのでそれでやってみようと思います。

garaemon commented 9 years ago

サンプルが何もありませんが、ひょっとしたら日曜くらいに追加されるかもしれません

wkentaro commented 9 years ago

了解です。codeを読んで少しずつ進めておきます。

wkentaro commented 9 years ago

このような感じでしょうか。 これだと場所までわかりますが、物体を持ったい状態であれば既知なので、今回はhistogram値をベクトルとして距離で物体を判別するという方針でいいでしょうか。 screenshot from 2015-03-06 04 20 37

https://github.com/wkentaro/2014-semi/blob/color-histogram-matcher-135/jsk_2014_picking_challenge/launch/color_histogram_matcher.launch

garaemon commented 9 years ago

今回はhistogram値をベクトルとして距離で物体を判別するという方針でいいでしょうか。

それでもいいし,とりあえずならやってみたらいいと思います. ヒストグラムの距離は結構奥が深くて,color_histogram_label_matchはいろいろなパターンが試せるようになっています https://github.com/jsk-ros-pkg/jsk_recognition/blob/master/jsk_perception/src/color_histogram_label_match.cpp#L255

wkentaro commented 9 years ago

了解です。ありがとうございます。

wkentaro commented 9 years ago

色ヒストグラムが上手く行っていないので、比較的上手く行っているsift_matcherの改良としてbof_object_matcherを作りました。 https://github.com/start-jsk/2014-semi/pull/202

25クラス判別でバークレーの画像内での判別では90%行きますが、テスト画像(data/raw_img以下)だと30%程度です。 https://github.com/wkentaro/2014-semi/blob/bag-of-features/jsk_2014_picking_challenge/data/test_result/test_bof_matching_result.csv (各整数値はロジスティック回帰による判別の確率) Bag of Featuresの頑強性の問題だと思うので、必要であれば実際の環境で撮り直してみようと思います。

実際には4か5クラス判別が最大だと考えられ、テスト結果でFalseでも判別の確率で2番から5番目くらいには入っているので、この判別器を使ってかなり絞れるとは思います。

つぎは実際の環境で試したいと思います。

chiwunau commented 9 years ago

@iory 今日岡田先生がおしゃったPR2が使っている関節トルクから手先力推定するlaunchです。 https://github.com/jsk-ros-pkg/jsk_common/blob/master/virtual_force_publisher/launch/virtual_force_publisher.launch

root、tip、inputを適宜にbaxterに合わせたら動くはずです すごく適当なLPFしかかけていないので、安定していなければパラメータを変えてみるといいです

iory commented 9 years ago

ありがとうございます。 やってみます。

wkentaro commented 9 years ago