Traditional robot programming is complex
Traditional robot programming involves giving a robot or cobot a list of commands it has to follow in a loop. Take a look at this palletizing example: ‘move to pick location – pick a box – move to pallet – place on pallet – move to pick location’, etc. But what if the robot moves to the pick location and there is no box available? It would continue to blindly follow commands: try to pick a box – which fails because the box is not there – move to the pallet, and place … nothing!
Now, you could add a condition check to avoid this situation. However, if you want to avoid all things that can go wrong, you need a lot of conditions, which results in the robot’s programming being cluttered with exceptions: ‘wait for’, ‘if this… then’. The program becomes too complex and harder to maintain
Always check conditions of the robot
A solution is to turn it around. Instead of following a list of commands and sometimes check a condition, always check conditions and sometimes follow a list of commands. Confusing, right? Let us take a look at an example:
The robot’s first step is to move to the pick position and pick a box. But first, it asks itself a question: ‘Am I holding a box?’. If ‘yes’, the robot can move to the pallet. If ‘no’, the robot moves to the pick position to pick one, after which it will ask itself again ‘Am I holding a box?’. Now, the answer is ‘yes’, so it will move to the pallet again.
If a pick and place robot continuously asks itself these types of questions, it will always know the corresponding command. This brings several advantages:
- The pick and place robot does not have to keep track of the command it is currently executing and what comes next. This means the program can be stopped and resumed at any time.
- Errors and mistakes have less impact. If the robot accidentally drops a box or item, it would move back to grab a new one instead of placing ‘nothing’.
- Adding exceptions becomes easier; want the robot to wait until a box is available? Simply add an extra condition; ‘is a box available?’. If not, the robot will wait until it is instead of already executing a next step.
Application Decision Engine for improved pick & place performance
This type of program is called a ‘decision tree’: the robot decides upon an action based on a series of questions. At Smart Robotics, we have built a complete framework around the ‘decision tree’ concept to make the programming of our pick and place robots such as the Smart Palletizer, Smart Item Picker and Smart Parcel Picker even easier by reusing software across applications. This is called the Application Decision Engine. For us, creating more intelligence is like growing another branch to the tree.