Blog | 18-11-2021

Application Decision Engine for better cobot performance

written by: Sjoerd van den Dries

When developing a cobot application, a program is needed to determine how the robot behaves. For robots executing the same task over and over again, this is quite easy. But what if it has to deal with many product variations and unexpected situations? To improve our cobots’ performance, we have developed the Application Decision Engine.

Traditional robot programming is complex

Traditional robot programming involves giving the robot a list of commands it has to follow in a loop. For 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

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 the robot continuously asks itself these types of questions, it will always know the corresponding command. This brings several advantages:

  • The 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, 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

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 robot programming 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.

Want to know more about the intelligent software behind our cobot solutions?