jsk-ros-pkg / jsk_recognition

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

[jsk_pcl_ros] OrganizedMultiPlaneSegmentationの使い方についてのご相談 #1717

Closed kochigami closed 8 years ago

kochigami commented 8 years ago

Pepperで机の平面を認識したいのですが,認識することができません. 机からは60cm~1mくらい離れて斜め方向に机が見えます.

pepper_sees_three_objects

平面に対して直角に顔が向かないと,認識できないのでしょうか. 他のロボットで,覗きこむようにしなくても机が認識できるのか知りたいです.

床だと認識ができます. pepper_plane_extraction pepper_sees_pepper_box

このようなプログラムでOrganizedMultiPlaneSegmentation, PlaneExtractionを試しています. パラメータのうち min_size: 200 max_curvature: 0.3 など変えてみたけれど,認識はできませんでした.

<!-- -*- mode: xml -*- -->
<launch>
  <arg name="INPUT" default="/pepper_robot/camera/depth/points"/>
  <arg name="FILTER_NAME_SUFFIX" default=""/>
  <arg name="create_manager" default="true" />
  <arg name="manager" default="plane_extraction_manager" />

  <node if="$(arg create_manager)"
        pkg="nodelet" type="nodelet" name="$(arg manager)"
        args="manager" output="screen"/>

  <node name="input_relay" pkg="nodelet" type="nodelet"
        args="load jsk_topic_tools/Relay $(arg manager)">
      <remap from="~input" to="$(arg INPUT)" />
  </node>

  <node pkg="nodelet" type="nodelet" name="multi_plane_estimate"
        args="load jsk_pcl/OrganizedMultiPlaneSegmentation $(arg manager)"
        output="screen">
    <remap from="~input" to="/input_relay/output" />
    <rosparam>
      use_async: true
      min_size: 2000
      max_curvature: 0.01 
      estimate_normal: true
      publish_normal: true  
    </rosparam>
  </node>

  <node pkg="nodelet" type="nodelet" name="plane_extraction" args="load jsk_pcl/MultiPlaneExtraction $(arg manager)" output="screen">
    <rosparam>
      use_async: true
      max_height: 1.0
      use_indices: false
    </rosparam>
    <remap from="~input" to="/input_relay/output" />
    <remap from="~indices" to="/multi_plane_estimate/output_refined" />
    <remap from="~input_polygons" to="/multi_plane_estimate/output_refined_polygon" />
    <remap from="~input_coefficients" to="/multi_plane_estimate/output_refined_coefficients" />
  </node> 

</launch>

kinectで一様同じプログラムが動きました. plane_extraction_kinect

k-okada commented 8 years ago

これは,キネクトのカメラだと平面がでているけど,Pepper備え付けのカメラだと平面が出ないということを言っている? となると,平面性が足りない,ということになりますね.おそらくカメラ−のデータの質があまり良くない.(僕は圧縮しているんじゃないかと穿っている部分)

min_size: 200 を可能な限り小さくして max_curvature: 0.3 を可能な限り大して,

正解を含んでいるけど,不正解が大量にはいっている平面候補が出るか調べてみてください.

◉ Kei Okada

2016-05-31 21:39 GMT+09:00 Kanae Kochigami notifications@github.com:

Pepperで机の平面を認識したいのですが,認識することができません. 机からは60cm~1mくらい離れて斜め方向に机が見えます.

[image: pepper_sees_three_objects] https://cloud.githubusercontent.com/assets/7259671/15673761/ba583e4a-2773-11e6-9276-f615f5bdb256.png

平面に対して直角に顔が向かないと,認識できないのでしょうか. 他のロボットで,覗きこむようにしなくても机が認識できるのか知りたいです.

床だと認識ができます. [image: pepper_plane_extraction] https://cloud.githubusercontent.com/assets/7259671/15673977/2db849ce-2775-11e6-9c36-d82388fbaca9.png [image: pepper_sees_pepper_box] https://cloud.githubusercontent.com/assets/7259671/15674460/c7fb14a6-2777-11e6-83b7-4269bffc5889.png

このようなプログラムでOrganizedMultiPlaneSegmentation, PlaneExtractionを試しています. パラメータのうち min_size: 200 max_curvature: 0.3 など変えてみたけれど,認識はできませんでした.

use_async: true min_size: 2000 max_curvature: 0.01 estimate_normal: true publish_normal: true use_async: true max_height: 1.0 use_indices: false

kinectで一様同じプログラムが動きました. [image: plane_extraction_kinect] https://cloud.githubusercontent.com/assets/7259671/15674492/fb24add8-2777-11e6-8f5a-03ae0e4fd8cd.png

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/jsk-ros-pkg/jsk_recognition/issues/1717, or mute the thread https://github.com/notifications/unsubscribe/AAeG3K81okQ_LhJkGKqcPHUpuZRldYxQks5qHCwXgaJpZM4IqfJM .

kochigami commented 8 years ago

ペッパーが見えている範囲は一般のxtionの1/4なので, (pepper: height * width = 240 * 320に対し,xtion: 480 * 640) 物にできるだけ近づくと平面性が保たれることが分かりました. きちんと理解しておらずすみません.データシートを見直してみます. パラメータはかなりminを小さく,curvatureを大きくしないと駄目でした. 他のロボットと同じようにはいかないみたいです.

遠視用でなく,実は近視用のカメラを新たにつける必要があるかもしれません. ご教示ありがとうございました.

60cm 机から離れて首ピッチ角0度(まっすぐの姿勢)で見た時 min_size: 20 curvature: 1.0 認識されません. pepper_plane_extraction_min_20_curvature_1 0_neck-p_30

40cm 机から離れて首ピッチ角30度(机を覗きこむ姿勢)で見た時 min_size: 50 curvature: 2.5 きれいに認識されました. pepper_plane_extraction_min_50_curvature2 5_neck-p_30

40cm 机から離れて首ピッチ角30度(机を覗きこむ姿勢)で見た時 ぬいぐるみを並べた状態で min_size: 50 curvature: 2.5 認識されませんでした. pepper_plane_extraction_min_50_curvature_2 5_neck-p_30_with_toys

k-okada commented 8 years ago

2016-06-02 19:14 GMT+09:00 Kanae Kochigami notifications@github.com:

ペッパーが見えている範囲は一般のxtionの1/4なので, (pepper: height_width = 240_320に対し,xtion: 480*640)

これは確認して欲しいんだけど,間引いたら画像サイズは小さくなるけど,画角は同じ,というのはでいるんだけど,ちがうかな.

◉ Kei Okada

kochigami commented 8 years ago

これは確認して欲しいんだけど,間引いたら画像サイズは小さくなるけど,画角は同じ,というのはでいるんだけど,ちがうかな.

アドバイスありがとうございます.xtion pro live (QVGA 320*240, 30fps)で見てみたら, サイズは小さくなり,画角は変わりませんでした.

見える面積は1/4になったが,ペッパーみたいな点群の凸凹はないことから可能性は次の2つかなと思いました.

xtion pro live QVGA (320*240) 30fps の画像 (ペッパーはQVGA 20fps): 正面 xtion

screenshot from 2016-06-06 17 59 20