Setup a system that uses the detected table boundary from the calibration sequence to generate a 2.5D occupancy grid of fixed step size that gets populated from the pointcloud data. Each cell will store the max height of a pixel contained in that space and unpopulated spaces will be set to zero. This grid can then be used to calculate a better trajectory through the most densely populated part of the grid and pull in the actual cup height instead of using a hard coded value.
One way to do this is to implement it as a separate detector node that can be loaded in a launchfile, there can be different detectors that employ different algorithms.
Setup a system that uses the detected table boundary from the calibration sequence to generate a 2.5D occupancy grid of fixed step size that gets populated from the pointcloud data. Each cell will store the max height of a pixel contained in that space and unpopulated spaces will be set to zero. This grid can then be used to calculate a better trajectory through the most densely populated part of the grid and pull in the actual cup height instead of using a hard coded value.
One way to do this is to implement it as a separate detector node that can be loaded in a launchfile, there can be different detectors that employ different algorithms.
This will depend on #4 and #5