start-jsk / jsk_apc

Other
36 stars 35 forks source link

jsk_apc の認識プログラムをマスターする #2007

Closed k-okada closed 7 years ago

k-okada commented 7 years ago

@itohdak @Affonso-Gui @YutoUchimi @708yamaguchi がマスターしたいです. 作戦はみんなと使っている環境が被らないように、fetch とどこからかデスクトップを調達して

  1. どこかの計算機に jsk_apc -> jsk_recognition まわりをセットアップする
  2. その計算機のマスターをfetchにして、認識プログラムをlaunchする
  3. 机の上においたAPC物品を認識してboundigboxを出す、

というところができたら、あとは演習と同じようにsubscribeしてikといてつかむことができるはず、ということで、計算機候補として、@pazeshunの机の下のデスクトップを3月までかりれないかな.代替品はz800とかがあるようです by @mmurooka

pazeshun commented 7 years ago

はい、大丈夫です。 色々あって、そのデスクトップにはubuntuが2個、別々のHDDに入っている状態なのですが、その内の一個を使いますか? それとも、HDD入れ直しますか? ubuntuインストールしなおしますか?

pazeshun commented 7 years ago

あと、グラボが古いやつなんですが、それでもjsk_apcの認識プログラムって動きましたっけ

pazeshun commented 7 years ago

いつから使いますか?

wkentaro commented 7 years ago

あと、グラボが古いやつなんですが、それでもjsk_apcの認識プログラムって動きましたっけ

FCNのためにはTitanあたりがほしいですね。そうでないとCPUモードになると思います。

k-okada commented 7 years ago

なるほど

以下の2つは同じものかな?

https://www.amazon.co.jp/gp/aw/d/B01M0C8QXE/ref=mp_s_a_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&qid=1486601582&sr=8-1&pi=AC_SX236_SY340_QL65&keywords=titan+x&dpPl=1&dpID=41S2F9zYnnL&ref=plSrch

https://www.amazon.co.jp/gp/aw/d/B01JLKP3IS/ref=mp_s_a_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&qid=1486601641&sr=8-2&pi=AC_SX236_SY340_QL65&keywords=titan+x&dpPl=1&dpID=41WfkzHAXxL&ref=plSrch

2017年2月8日(水) 22:36 Kentaro Wada notifications@github.com:

あと、グラボが古いやつなんですが、それでもjsk_apcの認識プログラムって動きましたっけ

FCNのためにはTitanあたりがほしいですね。そうでないとCPUモードになると思います。

— You are receiving this because you authored the thread.

Reply to this email directly, view it on GitHub https://github.com/start-jsk/jsk_apc/issues/2007#issuecomment-278330354, or mute the thread https://github.com/notifications/unsubscribe-auth/AAeG3A_fbs8DL3OOiqZHAi0kLqvNeZ6yks5racTagaJpZM4L6u7M .

--

◉ Kei Okada

knorth55 commented 7 years ago

以下の2つは同じものかな? https://www.amazon.co.jp/gp/aw/d/B01M0C8QXE/ref=mp_s_a_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&qid=1486601582&sr=8-1&pi=AC_SX236_SY340_QL65&keywords=titan+x&dpPl=1&dpID=41S2F9zYnnL&ref=plSrch https://www.amazon.co.jp/gp/aw/d/B01JLKP3IS/ref=mp_s_a_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&qid=1486601641&sr=8-2&pi=AC_SX236_SY340_QL65&keywords=titan+x&dpPl=1&dpID=41WfkzHAXxL&ref=plSrch

調べた限り、上の2つは同じものだと思います

ざっくりとした手順としては

  1. グラフィックカードを使う
  2. nvidia-driver, CUDA, chainerの導入(難関)
  3. ソースでPCLを入れる
  4. catkin_wsの構築、ビルド となるかとおもいます
knorth55 commented 7 years ago

大会で使っていたstow taskのlaunchはグラフィックカードなしで走ってセグメンテーションができるのでそれを試してみてもいいと思います。

https://github.com/start-jsk/jsk_apc/blob/master/jsk_2016_01_baxter_apc/launch/segmentation_in_tote.launch

k-okada commented 7 years ago

とりあえず4年生のほうで1−4まで準備してみるといいともいます. カードは買うとして、とどくまで余っているのは無いかな.HDDは新品をみつけてインストールしましょう.@furushchev が持っていなければ、生協にあるとおもいます. nvidia-driverはhttps://github.com/ros/rosdistro/pull/13782 をよく読めば行けると思う.CUDAは落とすだけ.chainerはrosdep installではいるはず. PCLは.rosinstall に書いてcatkin_wsにいれましょう. https://github.com/k-okada/pcl_1_8-release/blob/master/indigo/package.xml を持ってきてcatkin bでいけるはず.

-- ◉ Kei Okada

2017年2月9日 17:50 Shingo Kitagawa notifications@github.com:

以下の2つは同じものかな? https://www.amazon.co.jp/gp/aw/d/B01M0C8QXE/ref=mp_s_a_1_ 1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&qid= 1486601582&sr=8-1&pi=AC_SX236_SY340_QL65&keywords=titan+x& dpPl=1&dpID=41S2F9zYnnL&ref=plSrch https://www.amazon.co.jp/gp/aw/d/B01JLKP3IS/ref=mp_s_a_1_ 2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&qid= 1486601641&sr=8-2&pi=AC_SX236_SY340_QL65&keywords=titan+x& dpPl=1&dpID=41WfkzHAXxL&ref=plSrch

調べた限り、上の2つは同じものだと思います

ざっくりとした手順としては

  1. グラフィックカードを使う
  2. nvidia-driver, CUDA, chainerの導入(難関)
  3. ソースでPCLを入れる
  4. catkin_wsの構築、ビルド となるかとおもいます

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/start-jsk/jsk_apc/issues/2007#issuecomment-278581681, or mute the thread https://github.com/notifications/unsubscribe-auth/AAeG3GwmNZYHz_KHqCgYYMb8muIuCO45ks5ratM7gaJpZM4L6u7M .

knorth55 commented 7 years ago

グラボが届き次第に用意したいと思います 4年生というとぼくと長谷川ですか?

k-okada commented 7 years ago

4年生というとぼくと長谷川ですか?

そうなりますね.グラボは1,2週間かかるので、それまでにできるところをすすめましょう. TITANが必要だとすると、古いTITANをもているひとからかりて、おいて、あとで届いた新しいTITANを返す、というふうにするとみんなハッピーだと思います.

-- ◉ Kei Okada

2017-02-09 21:44 GMT+09:00 Shingo Kitagawa notifications@github.com:

グラボが届き次第に用意したいと思います 4年生というとぼくと長谷川ですか?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/start-jsk/jsk_apc/issues/2007#issuecomment-278630486, or mute the thread https://github.com/notifications/unsubscribe-auth/AAeG3GxZn_xvluWv-0i3Fq5HfVHOWoMXks5rawoXgaJpZM4L6u7M .

pazeshun commented 7 years ago

とりあえず、明日、足元のデスクトップからデータ退避して、HDDをセットします

yuyu2172 commented 7 years ago

すいません、z620は強化学習をやっている@ioryと僕が使いたいと思っていたので、そのために使わせてもらってもいいでしょうか?強化学習ではXeonのCPUが搭載されているPCが必要になり、現状では足りていないです。

かわりに、僕が使っているCore i7のPCの1つを使ってもらえたらと思います。 また、今年卒業される鎌田さんのPCもCore i7が入っているのですが、それも使って良いと思います。

ちなみに、どちらのPCにもTitan Xは入っていないので、GPUは追加で購入が必要になるかと思います。

pazeshun commented 7 years ago

わかりました。それでお願いします。

knorth55 commented 7 years ago

今日PCを用意してROSとpclをいれました グラボが手に入り次第cudaなどを入れて行きたいと思います

knorth55 commented 7 years ago

【報告】 今週の月曜日には、B3がROS, PCL, GPU, cuda, chainer周りの環境は整えられていてfcnを使って認識プログラムを試していました 認識したあとのピッキングまで動作はしていたかはその時掃除をしていたので知りません

Affonso-Gui commented 7 years ago

【報告】【追加】 月曜日は認識プログラムを試した後、実行、操作や設定で気になった点をまとめた(~/notes)だけで、ピッキングまでは至らなかった。時間ができ次第試しに行こうと思っています。

因みに研究室は土日でも行けたりするんですか。

pazeshun commented 7 years ago

大丈夫ですよ

k-okada commented 7 years ago

@itohdak @Affonso-Gui @YutoUchimi @708yamaguchi

時間がある人がいたら、新しい物品が届いたので、以下を試してみるといいと思います.

  1. 今のDepthカメラでどういう画像がとれるか
  2. Kinect 2だとどういう画像がとれるか
  3. レーザセンサだとどいう画像が取れるか (multi sense を利用.multi sense は @knorth55 / @pazeshun にききながら、3号館地下か8号館3Fにあるロボットでとってみましょう)
  4. ステレオセンサだとどういう画像がとれるか (これもmulti senseを利用.うまく行きそうなら、ps4とかzedを使う)

https://github.com/start-jsk/jsk_apc/issues/2018#issuecomment-281724594

wkentaro commented 7 years ago

@Affonso-Gui Where's the sample programs in b4apc PC?

wkentaro commented 7 years ago

@Affonso-Gui We found it, thank you.

708yamaguchi commented 7 years ago

テーブルの上の物体を掴むとき、普通に逆運動学を解いて手を伸ばすとテーブルと干渉してしまいます。 全体の点群から掴みたい物体のbounding boxの部分を除いた点群をCollision objectとしてMoveitに送ればテーブルと干渉しなくなると思うのですが、Moveitの使い方はどこを参考にすればよいでしょうか。 @knorth55

knorth55 commented 7 years ago

@708yamaguchi Moveit!のplanning sceneにテーブルを追加することでそれを避けた動作計画を行ってくれます。 http://docs.ros.org/indigo/api/moveit_tutorials/html/doc/pr2_tutorials/planning/src/doc/planning_scene_tutorial.html

点群をCollision Objectとする場合はOctomapとして登録するのがいいと思いますが、これはぼくはやったことがないので詳しくないです。 机の環境が既知なのであればEuslispのCubeなどのobjectでそれを再現してSceneに追加することは可能です。 これは https://github.com/jsk-ros-pkg/jsk_pr2eus/blob/master/pr2eus_moveit/euslisp/collision-object-publisher.l を参考にして下のようにcollision-object-publisherで追加することができます

(setq *co* (instance collision-object-publisher :init))
(setq cube (make-cube 30 30 30))
(send *co* :add-object  cube :frame-id 'base' :relative-pose (make-coords :pos #f(0 0 0) :rpy #f(0 0 0))

sceneの削除は

;; delect one object
(send *co* :delete-object cube)
;; delete all objects
(send *co* :wipe-all)

で削除することができます

708yamaguchi commented 7 years ago

@knorth55 丁寧に答えてくださってありがとうございます。まずはsceneの追加・削除をやってみようと思います。

YutoUchimi commented 7 years ago

@knorth55 以下のように立方体をfetchの目の前において逆運動学を解いて(立方体を避けるつもりで)アームを動かしてみましたが、立方体の内部を通過してしまいます。どうすれば避けられるか教えてください。 fetch_and_cube

実行したのは以下のプログラムです。

#!/usr/bin/env roseus

(ros::load-ros-manifest "jsk_recognition_msgs")
(ros::load-ros-manifest "geometry_msgs")
(ros::load-ros-manifest "jsk_pcl_ros")
(ros::load-ros-manifest "std_msgs")
(ros::load-ros-manifest "roseus")

(require "package://fetcheus/fetch-interface.l")

(fetch-init t)

(setq *co* (instance collision-object-publisher :init))
(setq cube (make-cube 800 800 800))
(send cube :locate #f(1000 0 400))
(send cube :set-color :green)
(objects (list cube *fetch*))
(send *co* :add-object  cube
           :frame-id 'base'
       :relative-pose (make-coords :pos #f(0 0 0) :rpy #f(0 0 0))
       )

(send *ri* :angle-vector (send *fetch* :inverse-kinematics (make-coords :pos (float-vector 1000 0 1000))) 5000)
knorth55 commented 7 years ago

まずrvizでmoveit!のプラグインからsceneにこのcubeが追加されているかを見てみてください。 sceneが正しくaddされている場合は以下のようなcubeがrviz上でもみえるはずです(デフォルトは緑色でこの画像は色を変更しています)

YutoUchimi commented 7 years ago

@knorth55 原因がわかりました。ありがとうございました。 https://github.com/jsk-ros-pkg/jsk_robot/issues/756

knorth55 commented 7 years ago

これは今どんな感じですか? @YutoUchimi @Affonso-Gui

708yamaguchi commented 7 years ago

@knorth55 OrganizedMultiPlaneSegmentationで平面検出をして、その平面の各頂点の情報から平面を直方体に近似してsceneに送ることで机の認識をしてみました。 https://github.com/708yamaguchi/jsk_apc/blob/develop/jsk_apc2016_common/node_scripts/polygon_array_to_collision_object.py

スマホの写真で申し訳ないのですが、認識結果は以下のようになりました。

wkentaro commented 7 years ago

物体の位置を認識するためのデータセットを作るプログラムをマージしたので、 時間があるときに試してみてください。 やり方はここ: https://github.com/start-jsk/jsk_apc/issues/2028 Tutorial動画がここ: https://drive.google.com/open?id=0B9P1L--7Wd2vNVZPdnpzdllRamc にあります。

プロセスとしては、以下の2つで、

  1. Baxterで画像データを集める。
  2. アノテーションをする。

「認識システムをマスターする」ためには一度試してもらうといいかと思います。

knorth55 commented 7 years ago

Fetchで認識からピッキングまで一連の流れは実現できていると思います。 (#2045) https://drive.google.com/file/d/0BxzzMEwOXXe9SXVZT1pHc1lCMDg/view

次はARCの設定のように色々な物品がある中から、指定された1つをとれるようにしたらいいのではないでしょうか? テーブルトップでもいいですが棚でもいいとおもいます。 次に考えるべきことは

wkentaro commented 7 years ago

Please reopen if you need.