ABB is a leading supplier of industrial robots and robot software, equipment and complete application solutions.
When deploying ABB robots on a production chain, the programming of these robots by operators is key to the performance and the adaptability of the production lines. But the current programming device requires the operator to write complex lines of code on a 6 inch screen. Can you imagine how complex it is for operators to optimize the robot movements in such conditions? And how time consuming it is to adapt the production line to evolving demand?
Drag and drop production chain robots coding
Changing from a 6 inch device to a large tablet allows visual programming. But this hassle-free interface for the robot operator requires pretty advanced coding:
- Tens of “modules” for movement (circular, linear, fixed point, etc), sensors, conditionals, loops… are required to fully command the robot
- Each block of instruction has complex technical rules to pass the right parameters to the robots (e.g. control the speed of a linear movement cannot be simultaneously controlled in tension)
- … and all of this needs to work recursively (e.g. instruction loops within instruction loops and intricated conditional instructions)
To implement such complexity, we chose to encapsulate an Elm application with Electron to create a fluid and robust application.
We modeled the specifications of ABB robots programming in a complete and unambiguous manner. Each block of instruction is clearly defined, knows what parameters it can handle and validates the consistency of the combined value with the specifications. Thanks to the strongly typed functional programming language nature of Elm, the code is highly maintainable and allowed us to make incremental changes while ensuring all the parts of the program are consistent (complexity management).
Bug-free interface by design
Production-grade applications cannot have bugs. These robots weigh hundreds of kilograms and are extremely powerful. Can you imagine the impact of such robot tearing itself of the concrete ground because of wrong commands? … so the code needed to be bug-free, by design.
Thanks to our in-depth modeling of the possibilities of the robots and to the Elm compiler, we were able to:
- enforce mathematically that all the properties, parameters and values are always coherent and within the technical specifications of the robots
- ensure all mathematically possible cases are properly handled consistently