Robot software is the set of coded commands or instructions that tell a mechanical device and electronic system, known together as a robot, what tasks to perform. Robot software is used to perform autonomous tasks. Many software systems and frameworks have been proposed to make programming robots easier.
Some robot software aims at developing intelligent mechanical devices. Common tasks include feedback loops, control, pathfinding, data filtering, locating and sharing data.
While it is a specific type of software, it is still quite diverse. Each manufacturer has their own robot software. While the vast majority of software is about manipulation of data and seeing the result on-screen, robot software is for the manipulation of objects or tools in the real world.
Software for industrial robots consists of data objects and lists of instructions, known as program flow (list of instructions). For example,
Go to Jig1
It is an instruction to the robot to go to positional data named Jig1. Of course, programs can also contain implicit data for example
Tell axis 1 move 30 degrees.
Data and program usually reside in separate sections of the robot controller memory. One can change the data without changing the program and vice versa. For example, one can write a different program using the same Jig1 or one can adjust the position of Jig1 without changing the programs that use it.
Due to the highly proprietary nature of robot software, most manufacturers of robot hardware also provide their own software. While this is not unusual in other automated control systems, the lack of standardization of programming methods for robots does pose certain challenges. For example, there are over 30 different manufacturers of industrial robots, so there are also 30 different robot programming languages required. There are enough similarities between the different robots that it is possible to gain a broad-based understanding of robot programming without having to learn each manufacturer's proprietary language. [1]
One method of controlling robots from multiple manufacturers is to use a Post processor and Off-line programming (robotics) software. With this method, it is possible to handle brand-specific robot programming language from a universal programming language, such as Python (programming language). [2] however, compiling and uploading fixed off-line code to a robot controller doesn't allow the robotic system to be state aware, so it cannot adapt its motion and recover as the environment changes. Unified real-time adaptive control for any robot is currently possible with a few different third-party tools.
Some examples of published robot programming languages are shown below.
Task in plain English:
Move to P1 (a general safe position) Move to P2 (an approach to P3) Move to P3 (a position to pick the object) Close gripper Move to P4 (an approach to P5) Move to P5 (a position to place the object) Open gripper Move to P1 and finish
VAL was one of the first robot ‘languages’ and was used in Unimate robots. [3] Variants of VAL have been used by other manufacturers including Adept Technology. Stäubli currently use VAL3.
Example program:
PROGRAM PICKPLACE 1. MOVE P1 2. MOVE P2 3. MOVE P3 4. CLOSEI 0.00 5. MOVE P4 6. MOVE P5 7. OPENI 0.00 8. MOVE P1 .END
Example of Stäubli VAL3 program:
begin movej(p1,tGripper,mNomSpeed) movej(appro(p3,trAppro),tGripper,mNomSpeed) movel(p3,tGripper,mNomSpeed) close(tGripper) movej(appro(p5,trAppro),tGripper,mNomSpeed) movel(p5,tGripper,mNomSpeed) open(tGripper) movej(p1,tGripper,mNomSpeed) end
trAppro is cartesian transformation variable. If we use in with appro command, we do not need to teach P2 land P4 point, but we dynamically transform an approach to position of pick and place for trajectory generation.
Epson RC+ (example for a vacuum pickup)
Function PickPlace Jump P1 Jump P2 Jump P3 On vacuum Wait .1 Jump P4 Jump P5 Off vacuum Wait .1 Jump P1 Fend
ROBOFORTH (a language based on FORTH).
:PICKPLACEP1P3GRIPWITHDRAWP5UNGRIPWITHDRAWP1;
(With Roboforth you can specify approach positions for places so you do not need P2 and P4.)
Clearly, the robot should not continue the next move until the gripper is completely closed. Confirmation or allowed time is implicit in the above examples of CLOSEI and GRIP whereas the On vacuum command requires a time delay to ensure satisfactory suction.
The LEGO Mindstorms EV3 programming language is a simple language for its users to interact with. It is a graphical user interface (GUI) written with LabVIEW. The approach is to start with the program rather than the data. The program is constructed by dragging icons into the program area and adding or inserting into the sequence. For each icon, you then specify the parameters (data). For example, for the motor drive icon you specify which motors and by how much they move. When the program is written it is downloaded into the Lego NXT 'brick' (microcontroller) for test.
A scripting language is a high-level programming language that is used to control the software application, and is interpreted in real-time, or "translated on the fly", instead of being compiled in advance. A scripting language may be a general-purpose programming language or it may be limited to specific functions used to augment the running of an application or system program. Some scripting languages, such as RoboLogix, have data objects residing in registers, and the program flow represents the list of instructions, or instruction set, that is used to program the robot.
Robot brand | Language name |
---|---|
ABB | RAPID |
Comau | PDL2 |
Fanuc | Karel |
Kawasaki | AS |
Kuka | KRL |
Stäubli | VAL3 |
Yaskawa | Inform |
Programming languages are generally designed for building data structures and algorithms from scratch, while scripting languages are intended more for connecting, or “gluing”, components and instructions together. Consequently, the scripting language instruction set is usually a streamlined list of program commands that are used to simplify the programming process and provide rapid application development.
Another interesting approach is worthy of mention. All robotic applications need parallelism and event-based programming. Parallelism is where the robot does two or more things at the same time. This requires appropriate hardware and software. Most programming languages rely on threads or complex abstraction classes to handle parallelism and the complexity that comes with it, like concurrent access to shared resources. URBI provides a higher level of abstraction by integrating parallelism and events in the core of the language semantics.
whenever(face.visible){headPan.val+=camera.xfov*face.x&headTilt.val+=camera.yfov*face.y}
The above code will move the headPan
and headTilt
motors in parallel to make the robot head follow the human face visible on the video taken by its camera whenever a face is seen by the robot.
Regardless which language is used, the result of robot software is to create robotic applications that help or entertain people. Applications include command-and-control and tasking software. Command-and-control software includes robot control GUIs for tele-operated robots, point-n-click command software for autonomous robots, and scheduling software for mobile robots in factories. Tasking software includes simple drag-n-drop interfaces for setting up delivery routes, security patrols and visitor tours; it also includes custom programs written to deploy specific applications. General purpose robot application software is deployed on widely distributed robotic platforms.
Programming errors represent a serious safety consideration, particularly in large industrial robots. The power and size of industrial robots mean they are capable of inflicting severe injury if programmed incorrectly or used in an unsafe manner. Due to the mass and high-speeds of industrial robots, it is always unsafe for a human to remain in the work area of the robot during automatic operation. The system can begin motion at unexpected times and a human will be unable to react quickly enough in many situations, even if prepared to do so. Thus, even if the software is free of programming errors, great care must to be taken to make an industrial robot safe for human workers or human interaction, such as loading or unloading parts, clearing a part jam, or performing maintenance. The ANSI/RIA R15.06-1999 American National Standard for Industrial Robots and Robot Systems - Safety Requirements (revision of ANSI/ R15.06-1992) book from the Robotic Industries Association is the accepted standard on robot safety. This includes guidelines for both the design of industrial robots, and the implementation or integration and use of industrial robots on the factory floor. Numerous safety concepts such as safety controllers, maximum speed during a teach mode, and use of physical barriers are covered .
Pascal is an imperative and procedural programming language, designed by Niklaus Wirth as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named after French mathematician, philosopher and physicist Blaise Pascal.
An industrial robot is a robot system used for manufacturing. Industrial robots are automated, programmable and capable of movement on three or more axes.
VMEbus is a computer bus standard physically based on Eurocard sizes.
In computer architecture, cache coherence is the uniformity of shared resource data that ends up stored in multiple local caches. When clients in a system maintain caches of a common memory resource, problems may arise with incoherent data, which is particularly the case with CPUs in a multiprocessing system.
In phonetics, a diphone is an adjacent pair of phones in an utterance. For example, in [daɪfəʊn], the diphones are [da], [aɪ], [ɪf], [fə], [əʊ], [ʊn]. The term is usually used to refer to a recording of the transition between two phones.
The CDC Cyber range of mainframe-class supercomputers were the primary products of Control Data Corporation (CDC) during the 1970s and 1980s. In their day, they were the computer architecture of choice for scientific and mathematically intensive computing. They were used for modeling fluid flow, material science stress analysis, electrochemical machining analysis, probabilistic analysis, energy and academic computing, radiation shielding modeling, and other applications. The lineup also included the Cyber 18 and Cyber 1000 minicomputers. Like their predecessor, the CDC 6600, they were unusual in using the ones' complement binary representation.
Cornish wrestling is a form of wrestling that has been established in Cornwall for many centuries and possibly longer. It is similar to the Breton Gouren wrestling style. It is colloquially known as "wrasslin’" in the Cornish dialect of English; historically, this usage is attested by Chaucer, Shakespeare and Drayton.
FANUC is a Japanese group of companies that provide automation products and services such as robotics and computer numerical control wireless systems. These companies are principally FANUC Corporation of Japan, Fanuc America Corporation of Rochester Hills, Michigan, USA, and FANUC Europe Corporation S.A. of Luxembourg.
A "production system" is a computer program typically used to provide some form of artificial intelligence, which consists primarily of a set of rules about behavior, but it also includes the mechanism necessary to follow those rules as the system responds to states of the world. Those rules, termed productions, are a basic representation found useful in automated planning, expert systems and action selection.
APT is a high-level computer programming language most commonly used to generate instructions for numerically controlled machine tools. Douglas T. Ross is considered by many to be the father of APT: as head of the newly created Computer Applications Group of the Servomechanisms Laboratory at MIT in 1956, he led its technical effort. APT is a language and system that alleviates the tedious mathematics of writing toolpaths for numerically controlled equipment. This early language was used widely through the 1970s and is still a standard internationally. Derivatives of APT were later developed.
A binary multiplier is an electronic circuit used in digital electronics, such as a computer, to multiply two binary numbers.
The P series is a series of prototype humanoid robots developed by Honda between 1993 and 2000. They were preceded by the Honda E series and followed by the ASIMO series, then the world's most advanced humanoid robots. Honda Motor's President and CEO Hiroyuki Yoshino, at the time, described Honda's humanoid robotics program as consistent with its direction to enhance human mobility.
The Integrated Truss Structure (ITS) of the International Space Station (ISS) consists of a linear arranged sequence of connected trusses on which various unpressurized components are mounted such as logistics carriers, radiators, solar arrays, and other equipment. It supplies the ISS with a bus architecture. It is approximately 110 meters long and is made from aluminium and stainless steel.
Advanced process monitor (APMonitor) is a modeling language for differential algebraic (DAE) equations. It is a free web-service or local server for solving representations of physical systems in the form of implicit DAE models. APMonitor is suited for large-scale problems and solves linear programming, integer programming, nonlinear programming, nonlinear mixed integer programming, dynamic simulation, moving horizon estimation, and nonlinear model predictive control. APMonitor does not solve the problems directly, but calls nonlinear programming solvers such as APOPT, BPOPT, IPOPT, MINOS, and SNOPT. The APMonitor API provides exact first and second derivatives of continuous functions to the solvers through automatic differentiation and in sparse matrix form.
QorIQ is a brand of ARM-based and Power ISA–based communications microprocessors from NXP Semiconductors. It is the evolutionary step from the PowerQUICC platform, and initial products were built around one or more e500mc cores and came in five different product platforms, P1, P2, P3, P4, and P5, segmented by performance and functionality. The platform keeps software compatibility with older PowerPC products such as the PowerQUICC platform. In 2012 Freescale announced ARM-based QorIQ offerings beginning in 2013.
DR Radio was a division of Danish Broadcasting Corporation - DR - concerned with radio programming. The radio stations are now part of several divisions: DR Medier (P1), DR Ung (P3), DR Musik, DR Danmark.
ST Robotics is a company based in Cambridge, England, and Princeton, New Jersey, United States. The company designs and manufactures low-cost bench-top industrial robot arms and purpose built Cartesian robots. The company has no sales force and sells their robotic arm products mainly through the Internet as "boxed robots" with distributors around the world.
PackML is an industry technical standard for the control of packaging machines, as an aspect of industrial automation.
A cobot, or collaborative robot, also known as a companion robot, is a robot intended for direct human-robot interaction within a shared space, or where humans and robots are in close proximity. Cobot applications contrast with traditional industrial robot applications in which robots are isolated from human contact or the humans are protected by robotic tech vests. Cobot safety may rely on lightweight construction materials, rounded edges, and inherent limitation of speed and force, or on sensors and software that ensure safe behavior.
Road signs in Ecuador are regulated in Manual Básico de Señalización Vial and Reglamento Técnico Ecuatoriano. RTE INEN 004-1:2011. Señalización vial, which is based on the United States' Manual on Uniform Traffic Control Devices (MUTCD) originally developed by the Federal Highway Administration (FHWA). Thus, road signs in Ecuador are similar in design to road signs used in the United States. One of the differences is that Ecuador uses the metric system, for example, vehicle speed is measured in km/h.