One of my first Projects at Harvest Robotics was automated harvesting of mushrooms. With a top down picture of a mushroom bed, the software would have to locate(and size) all the mushrooms, select a few of them ready for harvesting then direct an industrial robot(Adept s650).
The location was done by taking advantage of the fact that the mushrooms were brighter in the middle and that the soil was in contrast with it. Once centers were found, a ray-tracing like algorithm found points on the wall. Then i would fit those points to a circle resulting in the center and radius of each mushroom. I mainly used simplecv and numpy for this part.
The selection was done on the basis of size and agglomeration. I used a numpy to speed up distances from all to all mushrooms.
Once the set of mushrooms to harvest was found I would send them to the robot using a trivial tcp protocol.
The project scope of this one was to plant tulip bulbs in soil. The software would have to determine bulb position and orientation from the incoming conveyor. I used 6 cameras for this purpose.
From each of these perspectives the software would have to determine the centroid of the bulb and possibly the tip. Given the 6 projections of those 2 points I was able to triangulate the position of them in 3d space. Resulting in the position(triangulated centroids) and orientation(centroid-tip).
I was also able to test this whole setup by visualizing the scene in blender.