This solution is easy to maintain because there is no need to reteach object model if you change parts. It is also a light program with only 2 camlocate. You could even use only one camlocate to make it works.
How does it work ?
- The camera detect the position of a detection sheet where are printed picking position illustrated by cercles (It is possible to print up to 25 positions).
- The camera search picking cercles on the detection sheet. If one picking cercle is not detected, the robot consider that an object is placed above the picking cercle and dive to pick the object.
- A first camlocate locates the detection sheet position using the 4 small circles placed at each corner of the sheet.
- The robot move to fit the detection sheet in the field of view of the camera.
- A second camlocate node is used to detect the position of the large circles printed on the detection sheet. All object location are saved in a list.
- A UR palet node is used to check if the camera detected a picking cercle for each picking position. If the camera did not detect a picking circle the robot dive on the picking cercle and pick the object which hides the picking cercle. To know if a picking cercle have been detected, the program search in the list of cercle locations if a cercle is close to the pallet picking position.
- The object is dropped on the side.
A script function is used to check if a given point is near one of the points of a given point list.