jsk-ros-pkg / jsk_demos

JSK demo programs
https://github.com/jsk-ros-pkg/jsk_demos
25 stars 88 forks source link

2018ゼミ, 春休み中のTODOリスト #1255

Open ykawamura96 opened 5 years ago

ykawamura96 commented 5 years ago

河村です。 期末試験も終わり春休みにはいりましたので、ゼミ活動を再開したいと思います。 自分が担当する箇所ですが

です。現状、荷物の認識までできているので、残りの3つを春休み中に行いたいと思います

ストーリー

ストーリ全体の残り

708yamaguchi commented 5 years ago

@ykawamura96

河村くん

山口です。 僕は2/24以降はかなり暇になるので、手伝えると思います。

k-okada commented 5 years ago

@ykawamura96 上の4つについてそれぞれ,どういうプログラムが必要か,それはどこにありそうかリストを拡張してもらえればとおもいます.特に認識周りはjsk_recognitionなどから似たようなものがあるはずで,なければなにかおかしいので,自分で作る前に,聞いてみましょう.

また,ストーリー全体で何が残っているか書いてみましょう.

ykawamura96 commented 5 years ago

@k-okada https://github.com/jsk-ros-pkg/jsk_demos/issues/1255#issue-409160468 のリストを拡張して, ストーリー部分を追加しました.

また, 今日は

  1. 拾い上げた荷物の各面を目視する動作 (上)
  2. 拾い上げた荷物をカゴに落とす動作を作りました (下) @708yamaguchi さんに手伝って頂きました semi_3 semi_5
ykawamura96 commented 5 years ago

1) ハンドで持った荷物周辺のpoint cloudを抽出するためには, Attention Clipperを使うと良いということを @pazeshun 先輩に教えていただきました.

collision

YS-KID commented 5 years ago

戒田です。 自分の担当するところですが、

1:部屋までの移動
2:かごを持ち上げる

です。 これまでにできていることは

「1:部屋までの移動」
「2:かごを持ち上げる」の1つ目のかごにアームを伸ばす

です。 かごを持ち上げるためには、「指先を工夫する」か「持つ時のアームの角度を調整する」かが必要そうなので、まずそこを解決したいと思います。

708yamaguchi commented 5 years ago

ROSをインストールする方法 http://wiki.ros.org/kinetic/Installation/Ubuntu

JSKのFetchを使う方法 https://github.com/jsk-ros-pkg/jsk_robot/tree/master/jsk_fetch_robot#setup-environment

Fetchで地図を作る方法 http://docs.fetchrobotics.com/navigation.html

catkin build出来ない場合 sudo apt install python-catkin-tools

708yamaguchi commented 5 years ago

@YutoUchimi @Yu1313321 LineSegmentDetectorを使おうと思って、jsk_pcl_ros/sample/sample_line_segment_detector.launchを立ちあげたのですが、/line_segment_detector/debug/line_markerというtopicの中身が空(?)です。どうしたらいいでしょうか。

Markerが見えず、pointcloudしか見えない図。 line_segmentation_

rostopic echoのログ

$ rostopic echo /line_segment_detector/debug/line_marker
header: 
  seq: 5407
  stamp: 
    secs: 1486279001
    nsecs:  53697817
  frame_id: right_hand_camera_rgb_optical_frame
ns: ''
id: 0
type: 5
action: 0
pose: 
  position: 
    x: 0.0
    y: 0.0
    z: 0.0
  orientation: 
    x: 0.0
    y: 0.0
    z: 0.0
    w: 1.0
scale: 
  x: 0.01
  y: 0.0
  z: 0.0
color: 
  r: 1.0
  g: 0.0
  b: 0.0
  a: 1.0
lifetime: 
  secs: 0
  nsecs:         0
frame_locked: False
points: []
colors: []
text: ''
mesh_resource: ''
mesh_use_embedded_materials: False
---
708yamaguchi commented 5 years ago

@ykawamura96

毎回fetchの実機で認識をするのは大変だし、rosbagを撮って自分のPCでplayするのもめんどくさいことがあると思います。 そういうときは、dump-loadable-structureという関数を使うと、euslispの変数をファイルに保存できます。 例:

(setq cube (make-cube 100 100 100))
(dump-loadable-structure "cube.l" cube)
nakaotatsuya commented 5 years ago

中尾です。帰省中でゼミになかなか行けていなくてすいません。 自分の担当するところですが、

の予定です。 また、ドアをノックして、留守の場合に何か別の動作をするのも面白いかなと思い、時間があれば行いたいと思います。 2月27日あたりから復帰できそうです。

YutoUchimi commented 5 years ago

@Yu1313321 @708yamaguchi 報告ありがとうございます。 線検出を行った結果、もしその線をサポートする点の数が少なすぎると線としての信頼度が低いので、LineSegmentDetectorでは線を構成する点の数がある一定数min_indicesより少ない時は除外するという仕組みになっています。

sample_line_segment_detector.launchを読むと、RGB-Dカメラから得られる点群(トピックで言うと/right_hand_camera/depth_registered/points)をvoxelgridというノードによって間引いてから線検出を行っているようですね。 つまり、線検出の入力に使う点群の点の数がそもそも少なくなっていて、線を構成する点の数がmin_indicesを下回りやすくなっています。

で、どうやったら線がちゃんと出てくるのかという話ですが、

roslaunch jsk_pcl_ros sample_line_segment_detector.launch

を起動した後、別のターミナルで

rosrun rqt_reconfigure rqt_reconfigure

としてline_segment_detectorのパラメータを変更してみるといいと思います。 たぶんmin_inliersを小さくするとrvizでマーカーが見えるようになると思います。 他のパラメータもぜひいじってみてください。 line_segment_detector_sample_params

YS-KID commented 5 years ago

担当しているところの詳細を考えました。

まず箱を取る動作ですが、これは箱の位置が決まっているため、認識を用いる必要もなく、決め打ちの制御で事足りると思います。 ただ今の状態では箱の手を伸ばして縁をつかめても、うまく持ち上げることができないので、fetchの指か箱に細工をしないといけません。(指の方を変えると他の人の影響がありそうなのでおそらく箱をいじります。)

次に部屋の前までの移動は既に完成しています。

最後にドアを開ける動作を追加の課題で行おうと思います。 ドアノブを認識して、そこに手を伸ばしてドアノブを掴み、ドアノブを回して、ドアを引くという動作をすればいいと考えており、とりあえずドアノブの認識について調べています。 jsk_pcl_rosからいくつかのパッケージを候補にあげており、現在それらを@708yamaguchi さんや @YutoUchimi さんに手伝っていただきながら、動作確認をしている状況です。

また学科PCを返却してしまったため、新しいPCのセットアップも行いました。 以下のURLに沿うとうまくいきました。 https://github.com/jsk-ros-pkg/jsk_demos/issues/1255#issuecomment-465892831

nakaotatsuya commented 5 years ago

僕の担当するところですが、

708yamaguchi commented 5 years ago

@nakaotatsuya fetchの中では/speech_to_text_googleというtopicが出てて、これをsubscribeすれば手軽に音声認識できるのですが、単純にrostopic echoすると表示がおかしくなる(rostopic echoはstring[]型のトピックを表示できない)ので、以下のプログラムを使ってtopicを出し直すといいと思います。

https://gist.github.com/708yamaguchi/b2d82fc7557ba5fc3512c9427df32be2

708yamaguchi commented 5 years ago

fetchでwrench controlを使いました。 人間とハイタッチするときには手を止めて、人間が手を離すと再びfetchが手を動かし出すデモ動画です。

fetch_wrench_control

708yamaguchi commented 5 years ago

撮影したビデオは、gifファイルに変換するとgithubに投稿できます。以下のプログラムを見てもらって、

./convert_to_gif.sh video.mp4

のようにしてもらうと出来ます。 https://gist.github.com/708yamaguchi/d0fbf5a670060bffc865d1bc68d94b67

708yamaguchi commented 5 years ago

gifファイルを回転したいときは、

convert -rotate 90 input.gif output.gif

のようにすると良いです。

ykawamura96 commented 5 years ago
708yamaguchi commented 5 years ago

@ykawamura96 動画、良い感じだと思います。 動画と一緒にrosbagも撮っていたと思うので、自分への備忘録も兼ねてリンクを貼っておきましょう。

k-okada commented 5 years ago

箱を取り上げて色を確認し、カゴに入れる動作が一応完成しました

ikが解けないことが多いので、いい感じの初期位置を与えたり、箱の持つ向きを変の長さに応じて変えるなど、工夫するべきところはまだ残っています

ikが解けない==ハードウェア的に手が届かない,かどうかはよく確認しないと,もしかしたら

(:inverse-kinematics (&rest args) nil)

みたいなプログラムになっているのを中身見ずに使って,ikが解けません,といっているとかっこわるいので,解けない時には

  1. jskeus がログをダンプしているから,それを取り出しておく
  2. ハードウェア的に届かない位置なのか考えてみる
  3. 手先の拘束を6軸にする必要があるか,よく考える.(ここは大きな研究のチャンスあり!)
  4. fetchの場合は基本moveitを使っているので,eusのIKに依存しなくてよいはず
  5. 最近の新しいeusのikを勉強してみる.https://github.com/jsk-ros-pkg/jsk_control/tree/master/eus_qp/optmotiongen

ぐらいは視野に入れておきましょう.

ykawamura96 commented 5 years ago

@k-okada @708yamaguchi 適当な初期値を与え、角度の制限を緩めることで、ikを解きやすくしてデモの動画をとりましした。 デモの動画は以下です。 robugfileは、

 roslaunch jsk_2018_10_semi play.launch bagfile:=/home/mech-user/.ros/2019-03-14-19-23-01.bag
(bugfileの場所は適当な場所を指定する)

別のターミナルで

roslaunch jsk_2018_10_semi delivery_box_detection.launch 

別のターミナルで

roscd jsk_2018_10_semi/
rviz -d ./rviz/fetch_config.rviz 

とすれば見れると思います。 rviz : https://drive.google.com/open?id=1Jsq49kxQSDwiapBp6op9HENgM6Lhx23i カメラ : https://drive.google.com/open?id=1Pf0DzdilXCnfmzHdY82-IHnhgLfykJzi rosbug: https://drive.google.com/open?id=19ES85EJFZkEjj6u2Ldz6mgTGmsQgVyrK

708yamaguchi commented 5 years ago

物品2つでデモが出来てよかったですね。

ちょっと気になったんだけど、rvizの動画とカメラの動画は違う実験のものかな? できれば同じ実験のrviz動画とカメラ動画があるといいですね。

最後に、(もうしてるかもしれないけど)デモをした時のコードをpull request(https://github.com/jsk-ros-pkg/jsk_demos/pull/1252 )に追加しておくと良いと思います。

ghost commented 5 years ago

幕内です。 ゼミに全く参加をしておらず、本当に申し訳ありません。

僕の担当する箇所ですが

となっています。 また、部活動の関係で春休み中での今後の参加もかなり厳しいです。 せっかくゼミに参加させてもらっているのにこのような事になってしまい、申し訳ありません。