Robot software: Difference between revisions

Content deleted Content added
+Robotic automation software, Swarm robotics platforms, moved ext. links and their section, +wls to the lead
 
(48 intermediate revisions by 38 users not shown)
Line 1:
{{Cleanup|date=November 2009}}
'''Robot software''' is the set of [[Computer programming|coded commands]] or instructions that tell a [[Machine|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.
 
Line 5 ⟶ 4:
 
==Introduction==
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.
 
==Industrial robot software==
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.
Line 20:
==Examples of programming languages for industrial robots==
 
Due to the highly [[Proprietary software|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. Fortunately, thereThere 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.<ref>{{Cite news|url=http://coro.etsmtl.ca/blog/?p=529|title=The future of robot off-line programming|date=2015-10-25|newspaper=CoRo Blog|access-date=2017-01-03}}</ref>
 
ByOne usingmethod 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)]].<ref>{{Cite web|url=https://www.robodk.com/offline-programming|title=Offline programming - RoboDK|last=RoboDK|website=www.robodk.com|access-date=2017-01-03}}</ref> 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.
Line 37:
Move to P1 and finish
 
[[Variable Assembly Language|VAL]] was one of the first robot ‘languages’ and was used in [[Unimate]] robots.<ref>{{cite book|last1=O. Nnaji|first1=Bartholomew|title=Theory of Automatic Robot Assembly and Programming|publisher=Springer|isbn=978-0412393105|page=5|edition=1993|url=https://books.google.plcom/books?id=poAIavAqj68C&lpg=PA5&dqq=robot%20programming%20VAL&hl=pl+programming+VAL&pg=PA5#v=onepage&q=robot%20programming%20VAL&f=false|accessdateaccess-date=8 February 2015|year=1993}}</ref> Variants of VAL have been used by other manufacturers including [[Adept Technology]]. [[Stäubli]] currently use VAL3.
 
Example program:
Line 65:
end
 
trAppro is cartesian transformation variable. If we use in with appro command, we do not need to teach P2 andland P4 point, but we dynamically transform an approach to position of pick and place for trajectory generation.
 
Epson RC+ (example for a vacuum pickup)
Line 83:
 
ROBOFORTH (a language based on [[FORTH]]).
<syntaxhighlight lang="forth">
 
: PICKPLACE
P1
P3 GRIP WITHDRAW
P5 UNGRIP WITHDRAW
P1
;
</syntaxhighlight>
(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.
 
== Other robot programming languages ==
 
===Visual programming language===
 
The software system for the [[LegoLEGO Mindstorms EV3]] EV3programming robotslanguage is worthya ofsimple mentionlanguage 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.
 
===Scripting languages===
 
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.
{| class="wikitable"
|+Programming languages in industrial robotics<ref>{{cite web|title=Robot programming languages|url=http://fabryka-robotow.pl/2015/01/programming-languages-to-control-robot/|website=Fabryka robotów|accessdateaccess-date=8 February 2015|ref=Robotics_languages}}</ref>
!Robot brand
!Language name
|-
|ABB
|[[RAPID (programming language)|RAPID]]
|RAPID
|-
|Comau
Line 135 ⟶ 136:
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.
 
<syntaxhighlight lang="urbiscript">
<code>
whenever(face.visible)
{
Line 142 ⟶ 143:
headTilt.val += camera.yfov * face.y
}
</syntaxhighlight>
</code>
 
The above code will move the <code>headPan</code> and <code>headTilt</code> 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 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/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==
{{advert|date=December 2010}}
{{See also|Open-source robotics}}
The following is a list of open source and free software for robotics projects.
* [https://claraty.jpl.nasa.gov/ 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.
* [http://users.dickinson.edu/~braught/dlife 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.
* [http://miarn.sf.net 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.
* [http://marie.sf.net MARIE] - Mobile and Autonomous Robotics Integration Environment - is a [[Free Software]] using a [[Software componentry|component-based approach]] to build robotics software systems by integrating previously existing and new software components.
* [http://msdn.microsoft.com/en-us/robotics/aa731517/ Microsoft] - Microsoft Robotics Developer Studio
* [http://openrdk.sf.net 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.
* [[OpenRTM-aist]] - a software platform developed on the basis of the [[RT middleware]] standard. It is developed by National Institute of Advanced Industrial Science and Technology in Japan.
* [http://www.orocos.org OROCOS] - the Open Robot Control Software project provides a Free Software toolkit for [[Real-time computing|realtime]] robot arm and [[machine tool]] control.
* [http://www.opros.or.kr OPRoS] - Open Platform Robotic Services is an open source project for robot development. It provides a solution including robot platform and GUI developing tools with the source code of robot device components.
* [https://www.robodk.com/ RoboDK] - A robot development kit platform to simulate industrial robots. RoboDK allows you to program any robot using [https://www.python.org/ Python] and handles brand-specific syntax depending on your robot controller.
* [http://www.roboticslibrary.org/ Robotics Library] is an open-source C++ library covering kinematics, planning, visualization, and hardware drivers for several robots.
* [[Robotics Toolbox for MATLAB]] - this is [[Free Software]] that provides functionality for representing pose (homogeneous transformations, Euler and RPY angles, quaternions), arm robots (forward/inverse kinematics and dynamics) and mobile robots (control, localisation and planning)
* [[Player/Stage Project]] - A very popular [[Free Software]] robot interface and simulation system, used for robotics research and teaching worldwide.
* [http://pyrorobotics.com/ Pyro, Python Robotics] - Popular robotics [[Free Software]] used in universities and colleges.
* [http://www.robomind.net RoboMind] - Educational software to learn the basics of robotics and programming.
* [[Robot Operating System]] - Robot Operating System is an open-source platform for robot programming using Python and C++. Java, Lisp, Lua and [http://car.mines-douai.fr/category/pharos/ Pharo] are supported but still in experimental stage.
* [http://www.inl.gov/adaptiverobotics/robotintelligencekernel/index.shtml Robot Intelligence Kernel ]
 
==See also==
 
{{Portal|Robotics|Software}}
* [[Behavior-based robotics]] and [[Subsumption architecture]]
* [[Developmental robotics]]
Line 198 ⟶ 178:
 
==External links==
* {{webarchive |date=2013-01-27 |url=httphttps://archive.istoday/20130127182004/http://www.linuxdevices.com/articles/AT5739475111.html |title=A review of robotics software platforms}} Linux Devices.
* "''The Basics - [http://www.seattlerobotics.org/encoder/aug97/basics.html Robot Software]''". Seattle Robotics Society.
* G.W. Lucas, "''[http://rossum.sourceforge.net/ Rossum Project]''".
* "''[http://www-static.cc.gatech.edu/ai/robot-lab/MARS/ Mobile Autonomous Robot Software]'' (MARS)". [[Georgia Tech Research Corporation]].
* "''[http://robot.spawar.navy.mil/home.asp?item=robotsoftware Tech Database]''". robot.spawar.navy.mil.
* [http://www.inl.gov/adaptiverobotics Adaptive Robotics Software at the Idaho National Laboratory]
* {{webarchive |date=2013-01-27 |url=http://archive.is/20130127182004/http://www.linuxdevices.com/articles/AT5739475111.html |title=A review of robotics software platforms}} Linux Devices.
* [http://www.robotics.org/bookstore-prod.cfm?category_id=118&product_id=269/ ANSI/RIA R15.06-1999 American National Standard for Industrial Robots and Robot Systems - Safety Requirements (revision of ANSI/RIA R15.06-1992)]
* [http://www.octopuz.com OCTOPUZ] OCTOPUZ provides cutting-edge offline robot programming and simulation software designed to simplify advanced industrial automation.
* [http://www.robotmaster.com Robotmaster] Robotmaster CAD/CAM for robots seamlessly integrates off-line programming, simulation and code generation, delivering quick, error-free robot programs.
* [http://www.sprutcam.com SprutCAM Robot] [[SprutCAM]] Robot single environment for the rapid creation of complex collision-free 3D movements in native 6 or more axes code for [[Off-line programming (robotics)]].
 
{{Robotics}}