I helped create this project while working at IDL Industries. This project tended several different FANUC RoboDrill machines with Universal Robots cobots. The initial installation was created by an outside vendor, but I was tasked with making similar implementations on 4 additional machines. The result was a cell of 5 CNC machines tended by cobots. The full installation contained 4 UR5e and one 1 UR5-CB3 robot. This added to the complexity of code maintenance because the CB3 and E series robots supported different programming interfaces and capabilities. Most of the difficulty in project maintenance was in using two different generations for robot across several different CNC machines. Each installation required different programming or wiring to produce the same basic tending application.
The UR5e and UR5-CB3 robots had very different programming interfaces. Between generations UR greatly improved the usability of their interface and added force sensing capabilities. Some of the installations used this force sensing to help sense if a part was place properly, but on the CB3 robot I had to create a workaround that used a more roundabout set of steps to place material.
Because the different robot generations had vastly different programming interfaces and abilities, I spent a lot of time trying to homogenize the operator experience. It was not possible to make them the same because of some of the limitations presented, but I did create programs that followed the same basic logical order and asked the same questions of the operator. The result was a program that could recover itself from any potential crashed state by simply answering questions about the current state of the machine and work holding regardless of robot generation.