robot_calibration icon indicating copy to clipboard operation
robot_calibration copied to clipboard

Allow PlaneFinder to find planes in complex frames

Open mikeferguson opened this issue 6 years ago • 2 comments

Right now, the plane finder assumes that all visible points, that are within the bounding box, are part of the plane. This works fine for things like "robot views the ground" -- but if anything else enters the frame, it's problematic. It also doesn't let us handle frames with other items/clutter in them, or do more interesting things like find the face plane of the gripper (which has long been something I've wanted to be able to do).

Proposed improvements to PlaneFinder:

  • Actually have it "find planes" by segmenting the image into N planes, each of which are larger than some minimum_points_per_plane (a new parameter).
  • Provide a new set of parameters that allow you to specify reference point & normal vector, in an arbitrary frame, that you would like to find the "closest" plane to. If these parameters are not set, the largest plane will be selected (which is basically backwards compatible with today). For something like "find the ground", you could specify a plane in the base_link. For gripper calibration, you could specify the plane to be nearest the center of the gripper, and provide the normal so we can't pick up the "side" of the gripper.

mikeferguson avatar Apr 07 '18 22:04 mikeferguson

A first pass of this is in https://github.com/mikeferguson/robot_calibration/pull/109 - where we at least find the plane and only sample from points in that plane - this really only works when > 75-80% of the frame is the plane of interest

mikeferguson avatar Mar 12 '22 20:03 mikeferguson

#124 implements the normal vector alignment - although not in an arbitrary frame.

mikeferguson avatar Apr 20 '22 13:04 mikeferguson