Robot software
Encyclopedia
Robot software is the coded commands
that tell a mechanical device
(known as a robot
) what tasks to perform and control its actions. Robot software is used to perform tasks and automate tasks to be performed. Programming robots is a non-trivial task. Many software systems and frameworks have been proposed to make programming robots easier.
Some robot software aims at developing intelligent mechanical devices. Though common in science fiction stories, such programs are yet to become common-place in reality and much development is yet required in the field of artificial intelligence before they even begin to approach the science fiction possibilities. Pre-programmed hardware may include feedback loops such that it can interact with its environment, but does not display actual intelligence.
's actions and provide information regarding required tasks. When a program is written using this software, the robot is able to execute commands and perform tasks. Programming robots can be a complex and challenging process, and while it has become easier over the years, the lack of cross-platform industry standards has affected the development of software tools for robots compared to other automated control systems such as programmable logic controllers(PLCs).
Dataflow
programming techniques are used by most robot manufacturers, and is based on the concept that when the value of a variable changes, the values of other variables affected should also change. A programming language
that incorporates dataflow principles is called a dataflow language
. In addition to numeric processing, dataflow languages also incorporate functional concepts. Unlike other programming languages which use imperative programming, dataflow programming is modeled as a sequence of functions.
With any programming software, the state of a program at any given time is an important consideration. The state provides an indication of the various conditions at a particular instant. In order to function properly, most programming languages require a significant amount of state information. This information is invisible to the programmer.
Another key concept – which is associated with any type of robot programming, is the concept of runtime. When a program is running, or executing, it is said to be in runtime. The term runtime is also used as a short form when referring to a runtime library
, which is a library of code instructions used by a computer language to manage a program written in the language. The term is also used by software developers to specify when errors in a program can occur. A runtime error is an error that happens while the program is executing. For example, if a robot arm was programmed to turn left, and it turned right, then that would be a runtime error.
The software architecture
of a system consists of the various software components used to design and operate the software. All programming methods rely on software architecture as a method of organizing a software system since it not only provides communication support but is also a critical component in hardware and software interfaces.
Go to Jig1
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 program which uses it.
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. Fortunately, 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.
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. 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
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
).
: PICKPLACE
P1
P3 GRIP WITHDRAW
P5 UNGRIP WITHDRAW
P1
;
(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.
NXT robots is worthy of mention. 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.
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.
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.
provides a higher level of abstraction by integrating parallelism and events in the core of the language semantics.
The above code will move the
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...
that tell a mechanical device
Machine
A machine manages power to accomplish a task, examples include, a mechanical system, a computing system, an electronic system, and a molecular machine. In common usage, the meaning is that of a device having parts that perform or assist in performing any type of work...
(known as a robot
Robot
A robot is a mechanical or virtual intelligent agent that can perform tasks automatically or with guidance, typically by remote control. In practice a robot is usually an electro-mechanical machine that is guided by computer and electronic programming. Robots can be autonomous, semi-autonomous or...
) what tasks to perform and control its actions. Robot software is used to perform tasks and automate tasks to be performed. Programming robots is a non-trivial task. Many software systems and frameworks have been proposed to make programming robots easier.
Some robot software aims at developing intelligent mechanical devices. Though common in science fiction stories, such programs are yet to become common-place in reality and much development is yet required in the field of artificial intelligence before they even begin to approach the science fiction possibilities. Pre-programmed hardware may include feedback loops such that it can interact with its environment, but does not display actual intelligence.
Introduction
Robot Software consists of the instructions that control a robotRobot
A robot is a mechanical or virtual intelligent agent that can perform tasks automatically or with guidance, typically by remote control. In practice a robot is usually an electro-mechanical machine that is guided by computer and electronic programming. Robots can be autonomous, semi-autonomous or...
's actions and provide information regarding required tasks. When a program is written using this software, the robot is able to execute commands and perform tasks. Programming robots can be a complex and challenging process, and while it has become easier over the years, the lack of cross-platform industry standards has affected the development of software tools for robots compared to other automated control systems such as programmable logic controllers(PLCs).
Dataflow
Dataflow
Dataflow is a term used in computing, and may have various shades of meaning. It is closely related to message passing.-Software architecture:...
programming techniques are used by most robot manufacturers, and is based on the concept that when the value of a variable changes, the values of other variables affected should also change. A programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
that incorporates dataflow principles is called a dataflow language
Dataflow language
In computer programming, dataflow programming is a programming paradigm that models a program as a directed graph of the data flowing between operations, thus implementing dataflow principles and architecture...
. In addition to numeric processing, dataflow languages also incorporate functional concepts. Unlike other programming languages which use imperative programming, dataflow programming is modeled as a sequence of functions.
With any programming software, the state of a program at any given time is an important consideration. The state provides an indication of the various conditions at a particular instant. In order to function properly, most programming languages require a significant amount of state information. This information is invisible to the programmer.
Another key concept – which is associated with any type of robot programming, is the concept of runtime. When a program is running, or executing, it is said to be in runtime. The term runtime is also used as a short form when referring to a runtime library
Runtime library
In computer programming, a runtime library is a special program library used by a compiler, to implement functions built into a programming language, during the execution of a computer program...
, which is a library of code instructions used by a computer language to manage a program written in the language. The term is also used by software developers to specify when errors in a program can occur. A runtime error is an error that happens while the program is executing. For example, if a robot arm was programmed to turn left, and it turned right, then that would be a runtime error.
The software architecture
Software architecture
The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both...
of a system consists of the various software components used to design and operate the software. All programming methods rely on software architecture as a method of organizing a software system since it not only provides communication support but is also a critical component in hardware and software interfaces.
Industrial Robot Software
Software for industrial robots consists of data objects and lists of instructions, known as program flow (list of instructions). For exampleGo to Jig1
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 program which uses it.
Examples of programming languages for Industrial Robots
Due to the highly proprietaryProprietary software
Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary...
nature of robot software, most manufacturers of robot hardware
Hardware
Hardware is a general term for equipment such as keys, locks, hinges, latches, handles, wire, chains, plumbing supplies, tools, utensils, cutlery and machine parts. Household hardware is typically sold in hardware stores....
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. Fortunately, 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.
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
Variable Assembly Language
Variable Assembly Language is a computer-based control system and language designed specifically for use with Unimation Inc. industrial robots....
was one of the first robot ‘languages’ and was used in Unimate
Unimate
Unimate was the first industrial robot,which worked on a General Motors assembly line at the Inland Fisher Guide Plant in Ewing Township, New Jersey, in 1961.It was created by George Devol in the 1950s using his original patents...
robots. Variants of VAL have been used by other manufacturers including Adept Technology
Adept Technology
Adept Technology, Inc. is a multinational corporation with headquarters in Pleasanton, California . The company focuses on industrial automation and robotics, including software and vision guidance. Adept has offices throughout the United States as well as in Dortmund, Germany, Paris, France, and...
. 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
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
Forth
Forth is a structured, imperative, reflective, concatenative, extensible, stack-based computer programming language and programming environment...
).
: PICKPLACE
P1
P3 GRIP WITHDRAW
P5 UNGRIP WITHDRAW
P1
;
(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.
Visual programming languages
The software system for the Lego MindstormsLego Mindstorms
The LEGO Mindstorm series of kits contain software and hardware to create small, customizable and programmable robots. They include a programmable 'Brick' computer that controls the system, a set of modular sensors and motors, and LEGO parts from the Technics line to create the mechanical...
NXT robots is worthy of mention. It is a graphical user interface (GUI) written with LabVIEW
LabVIEW
LabVIEW is a system design platform and development environment for a visual programming language from National Instruments. LabVIEW provides engineers and scientists with the tools needed to create and deploy measurement and control systems.The graphical language is named "G"...
. 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.
Scripting Languages
A scripting languageScripting language
A scripting language, script language, or extension language is a programming language that allows control of one or more applications. "Scripts" are distinct from the core code of the application, as they are usually written in a different language and are often created or at least modified by the...
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
RoboLogix
-Overview:RoboLogix is a robotics simulator which uses a physics engine to emulate real-world robotics applications. The advantages of using robotics simulation tools are that they save time in the design of robotics applications and they can also greatly increase the level of safety associated...
, have data objects residing in registers, and the program flow represents the list of instructions, or instruction set
Instruction set
An instruction set, or instruction set architecture , is the part of the computer architecture related to programming, including the native data types, instructions, registers, addressing modes, memory architecture, interrupt and exception handling, and external I/O...
, that is used to program the robot.
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.
Parallel languages
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 ressources. URBIURBI
Urbi is an open source cross-platform software platform in C++ used to develop applications for robotics and complex systems. Urbi is based on the UObject distributed C++ component architecture. It also includes the urbiscript orchestration language which is a parallel and event-driven script...
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.Robot application software
Regardless which language is used, the end 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.Safety Considerations
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 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/RIA 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.Robotics Software Projects
The following is a list of open source and free software for robotics projects.- CLARAty - Coupled-Layer Architecture for Robotic Autonomy. It is a collaborative effort among four institutions: NASA Jet Propulsion Laboratory, NASA Ames Research Center, Carnegie Mellon, and the University of Minnesota.
- Dave's Robotic Operating System (DROS) Free SoftwareFree softwareFree software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
for the robotics researcher or hobbyist. - dLife - Free/Open Source Java library for Robotics, AI and Vision. Supports Pioneer, Khepera II & II, Hemission, Aibo and Finch robots as well as Player/Stage simulations.
- emss iRobot Create Framework, Open Source C++ Programming Framework for iRobot CreateIRobot CreateiRobot Create is a hobbyist robot manufactured by iRobot that is based on the Roomba platform and was introduced in 2007. However, iRobot Create is explicitly designed for robotics development, rather than simply hacking the Roomba...
. - Experimental Robotics Framework - A software for making experiments with multiple robots in 3d, with support for the latest technologies, that sits on top of Player/Stage and Open/CV.
- MARIE - Mobile and Autonomous Robotics Integration Environment - is a Free SoftwareFree softwareFree software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
using a component-based approach to build robotics software systems by integrating previously-existing and new software components. - Microsoft - Microsoft Robotics Developer Studio
- MyRobotLab - An open-source service based Java framework. Supports Applets, distributed processing, and multiple communication protocols. Services include OpenCV (computer vision), Sphinx 4 (speech recognition), FreeTTS (text to speech), and other open source projects. Supports communication to micro-processors, such as Arduino.
- OpenRDK - An open-source software framework for robotics for developing loosely-coupled modules. It provides transparent concurrency management, inter-process (via sockets) and intra-process (via shared memory) blackboard-based communication and a linking technique that allows for input/output data ports conceptual system design. Modules for connecting to simulators and generic robot drivers are provided.
- OROCOS - the Open Robot Control Software project provides a Free Software toolkit for realtimeReal-time computingIn computer science, real-time computing , or reactive computing, is the study of hardware and software systems that are subject to a "real-time constraint"— e.g. operational deadlines from event to system response. Real-time programs must guarantee response within strict time constraints...
robot arm and machine toolMachine toolA machine tool is a machine, typically powered other than by human muscle , used to make manufactured parts in various ways that include cutting or certain other kinds of deformation...
control. - Player/Stage Project - A very popular Free SoftwareFree softwareFree software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
robot interface and simulation system, used for robotics research and teaching worldwide. - Pyro, Python Robotics - Popular robotics Free SoftwareFree softwareFree software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
used in universities and colleges. - RoboMind - Educational software to learn the basics of robotics and programming.
- ROS - Robot Operating System is an open-source platform for robot programming using Python and C++. Java, Lisp and Lua are supported but still in experimental stage.
- ScottsBots - An open source Java Based robotics API with examples in Java, JRuby, Arduino, and PBASIC. Examples of the code and more information can be found at the project owner's website www.scottsbots.com.
- Robot Intelligence Kernel
- Open Platform for Robotic Services (OPRoS) - A component-based platform for robotics. It is programmed in C++, and works in Linux, Windows, and RTOS. It has Eclipse-based GUI OPRoS editors: Component Editor, Component Composer, Task Editor, and Simulator etc. The source code of the framework ,the editors, and basic OPRoS Components are available in the homepage.
- Parallel Port PWM/Encoder Linux Driver - a poor-mans motor controller software driver.
See also
- Behavior based robotics and Subsumption architectureSubsumption architectureSubsumption architecture is a reactive robot architecture heavily associated with behavior-based robotics. The term was introduced by Rodney Brooks and colleagues in 1986...
- Developmental roboticsDevelopmental roboticsDevelopmental Robotics , sometimes called epigenetic robotics, is a methodology that uses metaphors from neural development and developmental psychology to develop the mind for autonomous robots. The focus is on a single or multiple robots going through stages of autonomous mental development...
- Epigenetic robotics
- Evolutionary roboticsEvolutionary roboticsEvolutionary robotics is a methodology that uses evolutionary computation to develop controllers for autonomous robots. Algorithms in ER frequently operate on populations of candidate controllers, initially selected from some distribution. This population is then repeatedly modified according to...
- Industrial RobotIndustrial robotAn industrial robot is defined by ISO as an automatically controlled, reprogrammable, multipurpose manipulator programmable in three or more axes...
- Cognitive roboticsCognitive roboticsa robot is a robot device that is built from inanimate matter. Its behavior in response to the environment is deterministic, based on how the robot was designed. Cognition is the process of acquiring and using knowledge about the world for goal-oriented purposes, such as survival...
- Robot controlRobot control-See also:* Control theory* Mobile robot navigation* Robot kinematics* Simultaneous localization and mapping* Robot locomotion* Motion planning* Robot learning* Vision Based Robot Control...
- RoboLogixRoboLogix-Overview:RoboLogix is a robotics simulator which uses a physics engine to emulate real-world robotics applications. The advantages of using robotics simulation tools are that they save time in the design of robotics applications and they can also greatly increase the level of safety associated...
- Automated planning and schedulingAutomated planning and schedulingAutomated planning and scheduling is a branch of artificial intelligence that concerns the realization of strategies or action sequences, typically for execution by intelligent agents, autonomous robots and unmanned vehicles. Unlike classical control and classification problems, the solutions are...
- CyberneticsCyberneticsCybernetics is the interdisciplinary study of the structure of regulatory systems. Cybernetics is closely related to information theory, control theory and systems theory, at least in its first-order form...
- Artificial intelligenceArtificial intelligenceArtificial intelligence is the intelligence of machines and the branch of computer science that aims to create it. AI textbooks define the field as "the study and design of intelligent agents" where an intelligent agent is a system that perceives its environment and takes actions that maximize its...
- TeleroboticsTeleroboticsTelerobotics is the area of robotics concerned with the control of robots from a distance, chiefly using wireless connections , "tethered" connections, or the Internet...
/ TelepresenceTelepresenceTelepresence refers to a set of technologies which allow a person to feel as if they were present, to give the appearance of being present, or to have an effect, via telerobotics, at a place other than their true location.... - Swarm roboticsSwarm roboticsSwarm robotics is a new approach to the coordination of multirobot systems which consist of large numbers of mostly simple physical robots. It is supposed that a desired collective behavior emerges from the interactions between the robots and interactions of robots with the environment...
External links
- "The Basics - Robot Software". Seattle Robotics Society.
- G.W. Lucas, "Rossum Project".
- "Mobile Autonomous Robot Software (MARS)". Georgia Tech Research CorporationGeorgia Tech Research CorporationThe Georgia Tech Research Corporation is an organization that supports research and technological development at Georgia Tech. It was founded in 1937 as the Industrial Development Council to be a contract organization for the Engineering Experiment Station...
. - "Tech Database". robot.spawar.navy.mil.
- Adaptive Robotics Software at the Idaho National Laboratory
- A review of robotics software platforms Linux Devices.
- ANSI/RIA R15.06-1999 American National Standard for Industrial Robots and Robot Systems - Safety Requirements (revision of ANSI/RIA R15.06-1992)