How to check why picking stopped?

When a robot is emptying a bin, or depalletizing, ideally one expects picking to continue until the bin or pallet is empty. However, it can be the case that picking stops for other reasons, like:

  • Parts being unpickable due to, for instance, potential collisions of the robot tool.

  • Parts being unreachable by the robot.

  • The ROI not being empty, but Pickit is not detecting the requested part. This can be due to the part being there and Pickit not detecting it, or due to an unexpected foreign part in the picking region.

An application might be interested in identifying the reason and taking an appropriate action in each case. To this end, there are two things you should take into account:

  1. On the Pickit side, make sure an empty ROI is correctly detected.

  2. On the robot side, use the helper functions provided by your robot integration to query the reason why picking stopped. The bin picking program implements these checks in its after_end() hook.


If you observe that picking stops and the bin or pallet is not empty as expected, you can make the robot automatically save a snapshot for later inspection, and see if you can optimize your settings to get more detections or more pickable parts.

In pseudo-code, automatic snapshot saving can take place in the after_end() hook, and look like this:

def after_end():
  if not pickit_object_found():
    if pickit_empty_roi():
      print("The ROI is empty.")
      print("The ROI is not empty, but the requested object was not found or is unreachable.")
      subfolder_id = 1

Notice that snapshots are saved to a specific subfolder, so they don’t get mixed with all other snapshots in the Pickit system.