Robot development languages are generally C, C++, C++Builder, VB, VC, etc., mainly depending on the development language of the actuator (servo system). Robot programming is divided into three levels: teach pendant, motion-level robot programming languages, and task-level programming languages. Robot programming languages are further categorized into three types: dedicated operating languages (such as VAL, AL, SLIM, etc.), robot program libraries using existing computer languages (such as Pascal, JARS, AR-BASIC, etc.), and robot program libraries using new general-purpose languages (such as RAPID, AML, KAREL, etc.). Currently, the SLIM language is the most widely used.
Robot languages can be classified into three categories according to the level of their task description: action-level programming languages, object-level programming languages, and task-level programming languages.
Robot Programming Languages (Part 1): Action-Level Programming Languages
Action-level programming languages are the lowest-level robot languages. They primarily describe the robot's motion, with each instruction typically corresponding to a single action, representing a movement from one pose to another. The advantages of action-level programming languages are their simplicity and ease of programming. Their disadvantages include limited functionality, inability to perform complex mathematical operations, rejection of floating-point numbers and strings, and the absence of independent variables in subroutines. They also cannot accept complex sensor information, only sensor on/off information, and have poor communication capabilities with computers. A typical action-level programming language is VAL, such as the AVL statement "MOVETO(destination)", which means the robot moves from its current pose to its destination pose.
Action-level programming languages are divided into two types: joint-level programming and end effector-level programming.
Joint-level programming
Joint-level programming is a programming method that uses the robot's joints as objects, providing a time sequence of joint positions within a joint coordinate system. This method is suitable for Cartesian and cylindrical coordinate robots because the representation of Cartesian and cylindrical joints is relatively simple. However, it is not suitable for articulated robots with rotary joints because representing the time sequence of joint positions is difficult, requiring many complex calculations even for a simple movement.
Joint-level programming can be achieved through simple programming instructions, or through teach pendant teaching and key-based teaching.
End-effector level programming
End effector-level programming is performed in a Cartesian coordinate system within the robot's workspace. This Cartesian coordinate system provides a time series of poses for the robot's end effector, along with time series of other auxiliary functions such as force, touch, and vision. Simultaneously, the workload and tools are determined to coordinate and control the robot's movements.
This programming approach allows for simple conditional branching, awareness capabilities, the ability to select and configure tools, and sometimes parallel processing capabilities, as well as strong real-time data processing capabilities.
Robot Programming Languages (Part 2): Object-Level Programming Languages
The term "object" refers to the task and the object being performed. Object-level programming languages are a higher level than action-level programming languages. They do not require describing the movement of the robot's gripper; instead, programmers provide a programmatic description of the sequential process of the task and a description of the environmental model, that is, a description of the relationships between the manipulated objects. By compiling the program, the robot can then understand how to perform its actions.
Typical examples of such languages include AML and AUTOPASS, which are characterized by: (1) having all the action functions of action-level programming languages; (2) having strong perception capabilities, being able to process complex sensor information, and being able to use sensor information to modify and update the description and model of the environment, as well as to use sensor information for control, testing and supervision; (3) having good openness, with the language system providing a development platform, allowing users to add instructions and expand language functions as needed; and (4) having strong digital computing and data processing capabilities, being able to process floating-point numbers and communicate with computers in real time. Object-level programming languages describe the changes of objects in a way that is close to natural language. The operation functions of object-level programming languages, the pose and timing of the work object, the workload, the force and torque borne by the work object, etc., can all appear in the form of expressions. In the system, the robot size parameters, work object and tool parameters generally exist in the form of knowledge base and database. When the system compiles the program, it obtains this information and then simulates the robot's action process, and then performs tasks such as realizing the appropriate pose of the work object, obtaining and processing sensor information, avoiding obstacles and communicating with other devices.
Robot Programming Languages (Part 3): Task-Level Programming Languages
Task-level programming languages are a higher-level language than the previous two types and are the most ideal high-level languages for robots. These languages do not require describing the task using the robot's actions, nor do they require describing the intermediate state processes of the robot object. They only need to describe the initial state and final target state of the robot object according to certain rules. The robot language system can then automatically perform reasoning and calculation using existing environmental information, knowledge bases, and databases, thereby automatically generating detailed robot actions, sequences, and data.
For example, an assembly robot wants to assemble a screw. The initial position of the screw and its target position after assembly are known. When a command to grasp the screw is issued, the language system searches for a path from the initial position to the target position. In a complex working environment, it finds a suitable path that will not collide with surrounding obstacles. At the initial position, it selects an appropriate posture to grasp the screw and moves along this path to the target position. During this process, a series of issues, such as the design of the intermediate work state plan, the selection of procedures, and the arrangement of actions, are all automatically handled by the computer. Task-level programming languages have a very complex structure, requiring a theoretical foundation in artificial intelligence and the support of large knowledge bases and databases. Currently, they are not yet fully perfect and represent an ideal state of language, requiring further research. However, it is believed that with the continuous development of artificial intelligence and database technologies, task-level programming languages will inevitably replace other languages and become the mainstream robot language, making robot programming applications much simpler.
The languages that general users encounter are user-defined language platforms developed by the robotics companies themselves. These are easy to understand. At this level, each robotics company has its own syntax rules and language forms, but these are not important because this layer is for user-instructed programming. Following this language platform is a hardware-related high-level language platform, such as C, C++, or languages based on the IEC 61131 standard. These languages are used by robotics companies when developing robot systems. This level of language platform can write translation and interpretation programs to translate and interpret the programs written in the user-instructed language platform into instructions that this layer of language can understand. This layer of language platform mainly handles kinematics and control programming. Below this level are hardware languages, such as assembly instructions based on Intel hardware.
Commercial robot companies typically provide users with their own simple teach-in programming language systems, such as KUKA and ABB. Robot control system providers generally offer a second-layer language platform. At this layer, the control system supplier may provide robot kinematics algorithms and core multi-axis interpolation algorithms. Users can freely perform secondary development for their own designed product applications. This layer of the language platform has good openness, but the workload for users also increases accordingly. This layer of the platform is mainly for robot development manufacturers; for example, some European robot control system suppliers use programming language platforms based on the IEC 61131 standard. We generally don't need to focus too much on the lowest-level assembly language programming environment; this is the responsibility of the control system chip hardware manufacturers. Different industrial robot companies use different robot programming languages; each company has its own proprietary programming language.
However, regardless of the variations, their key characteristics remain similar. For example, Staubli robots use VAL3, a programming language similar in style to Basic; ABB uses RAPID, similar in style to C; and AdeptRobotics' V+, Fanuc, KUKA, and MOTOMAN all have their own dedicated programming languages, but they are mostly similar. Since Unimation, the company that invented robots, initially used VAL, these languages share similar structures. VAL is a robot programming language introduced by Unimation in 1979, primarily used in robots like PUMA and Unimation, and is a dedicated motion description language. VAL was developed based on BASIC, hence its similar structure. Unimation then introduced VALII based on VAL; later, after Staubli acquired Unimation, it developed the VAL3 robot programming language. Generally, the official websites of various robot manufacturers provide introductory materials, but detailed information is often lacking.