ABB is a leading supplier of industrial robots and robot software, equipment, and complete application solutions.
On a production line, the way operators program these robots is key to the performance and adaptability of the whole line. Yet the existing programming device makes operators write complex code on a six-inch screen. Optimizing robot movements under those constraints is hard, and adapting the line to changing demand is slow.
Drag-and-drop programming for production-line robots

Moving from a six-inch device to a large tablet enables visual programming. But a hassle-free interface for the operator demands sophisticated engineering underneath:
- dozens of modules — movement (circular, linear, fixed-point, and so on), sensors, conditionals, loops — are needed to fully command the robot,
- each instruction block has intricate rules for passing the right parameters (for example, a linear movement’s speed and tension cannot both be controlled at once), and
- all of it has to work recursively, with instruction loops nested inside loops and intricate conditional logic.
To manage that complexity, we wrapped an Elm application in Electron to build a fluid, robust tool.

We modeled the specification of ABB robot programming completely and unambiguously. Each instruction block is clearly defined, knows which parameters it accepts, and validates that the combined values stay within spec. Because Elm is a strongly typed functional language, the code is highly maintainable: we could make incremental changes while the compiler guaranteed that the whole program stayed consistent.
Bug-free interface by design

Production-grade software cannot afford bugs. These robots weigh hundreds of kilograms and are extremely powerful; a wrong command could tear one off the concrete floor. The code had to be correct by design.
Thanks to our in-depth modeling of what the robots can do, combined with the Elm compiler, we could:
- guarantee that every property, parameter, and value stays coherent and within the robots’ technical specifications, and
- ensure that every possible case is handled consistently.