Can anyone explain me in detail, what a industrial robotic arm controller does? What are its components? Does the industry use the opensource controllers like Arduino? I saw most of industrial controllers look very big whereas the hobby robot arms are having small controllers mostly made from arduino? Also, if I were to reconstruct it, what are the topics that I need to learn?
Industrial robots (e.g. Kuka, ABB, Fanuc) use a control cabinet which has the following main components:
Drive amplifiers (controllers): The drive amplifiers are responsible for the closed loop control of the motors in the structure of the robot (and the external axes, if present). The number of drive amplifiers usually matches the number of motors. Their main function is to receive the position (and/or velocity) commands from the robot controller and to control the motors to execute the commands. In most cases some kind of communication protocol (mostly Ethernet based) is used to transmit these commands. In some cases the drive amps have additional safety functions (e.g. Safe Torque Off and Safe Brake Control) to enable a limited human robot interaction. When compared to "hobby" robots, the drive amplifiers offer much more functionality for smooth motions (e.g. jerk limiting, filtering) and motor protection (e.g. current limiting, voltage limiting) furthermore, in many cases these have thousands (!) of parameters to fine tune their performance.
Robot controller: the main function of the robot controller is to interpret the robot application program and convert the commands in the source code to motion or other commands given to the IOs or to the drive amplifiers. The robot controller has an internal model of the kinematic (and dynamic) structure of the robot and has advanced trajectory planning and synchronization capabilities. It can synchronize the motions commanded by each individual drive amplifier in a precise manner. A robot controller also has thousands (!) of parameters to make sure the robot can be set up according to the requirements of its task.
HMI: Industrial robots usually have some sort of pendant or HMI useful for programming the robot. During operation the application program will be displayed here. Also different setting are available on the HMI (e.g. teach in of a new task).
Application program: Hobby robots usually have a "firmware" running on the arduino which determines their behavior. Robot controllers are more like a PC. They have an operating system and only execute something if somebody writes a program that is called. That program is the application program and is written in a robot manufacturer specific language (e.g. KRL for KUKA, Rapid for ABB, Java language can be used to program the Kuka iiwa, their light weight robot arm).
Tech support: one feature that hobby robots do not have is tech support. Industrial robot manufacturers offer courses, hotline telephone support in case there are difficulties in using/programming their robot. Furthermore, industrial robots come with necessary certificates (CE, UL, etc.) for industrial use.
If you would like to build a robot controller which is at least comparable to today's industrial robot controllers, starting from scratch, you would need:
- select industrial motors and drive amplifiers (e.g. from Rexroth, Siemens, etc.)
- select an industrial PC and a real-time operating system (or extension, e.g. WindRiver, QNX, RTLinux) and a non-real time OS (.g. Windows or Linux)
- design and build a control cabinet
- develop your control architecture (which module communicates with what, how are they interfaced, what needs to run in real-time what not)
- develop/implement a trajectory planning module
- develop/implement an IO handling module
- develop/implement an interpreter for the application programming language you have selected (or define a new language and an interprtere for it), complete with variable stacks (global and local), (soft and hard) interrupts, subroutines, timers and counters, coordinate system transformations, motion commands, flow control commands, basic types, math library, etc.
- "glue" together the interpreter with the motion module and the IO module
- develop/implement (or buy) a communication stack to communicate with the drive amplifier
- develop/implement an HMI that can be used for parameterizing the drives, the motion module, the IO module, and can be used for writing and executing application programs with the defined language
- document everything (!)
- test test test and test even more
- get the whole thing certified by a certification body
- market and sell it
- offer tech support, warranty, etc.