- Robot software
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.
Currently, malicious programming of robots is of some concern, 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. One such incident occurred on 21 July 1984 when a man was crushed to death by an industrial robot. That incident was an accident, but shows the potential risks of working with robots. In science fiction, the
Three Laws of Robotics were developed for robots to obey and avoid malicious actions.Industrial Robot Software
Industrial robot software usually comprises two sections: data objects and program flow (list of instructions). For example
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.
Examples of programming languages for Industrial Robots
Most robot manufacturers keep their software hidden. It is impossible to find out how most robots are programmed. It is almost as if they had no software in many cases. This is because these companies do not intend their customers to do their own programming and they sell complete proprietary application packages rather than general purpose software.
However, here are some examples of published robot programming languages.
Using the example pick and place task on
Industrial Robot : 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 finishVAL 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 P5 UNGRIP 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.
Other robot programming languages
Visual programming languages
The software system for the
Lego Mindstorms NXT robots is worthy of mention. It is based on and written byLabview . 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.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.
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
andheadTilt
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.Robotics Software Projects
* [http://robots.mobilerobots.com/ARIA/ ARIA robot API libraries] Source available under GNU; compatible with pioneers, peoplebot, seekur, amigobot, powerbot and other robots; programmable with Java, C++, Python under WIN/Linux.
* [http://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://dros.org Dave's Robotic Operating System (DROS)]Free Software for the robotics researcher or hobbyist.
* [http://www.evolution.com/products/ersp/ ERSP] - A commercial robot software system byEvolution Robotics .
* [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 aFree Software using a component-based approach to build robotics software systems by integrating previously-existing and new software components.
*Microsoft Robotics Studio - Uses a component based approach. Each component is a service. Services are orchestrated through a concurrency library called the CCR. Current version (1.5) includes aMicrosoft XNA -Framework based simulator with physics simulation and a Visual Programming Language.
* MobileSIM, built on the Stage simulator platform. MobileSim provides access to simulated robots and their environment with ARIA programs.
* TheMobile Robot Programming Toolkit (MRPT) - An open-source set of C++ libraries and applications which cover grabbing, visualizing and manipulating datasets, particle filter and Kalman filter-based SLAM, linear algebra, robotics sensors and MATLAB-like plot rendering.
* [http://www.openjaus.com OpenJAUS] - An open-source component based approach that uses standarized messages and transport methods to create interoperable robotic systems.
* [http://orca-robotics.sourceforge.net Orca] - an open-source framework for developing component-based robotic systems. It provides the means for defining and developing the building-blocks which can be pieced together to form arbitrarily complex robotic systems, from single vehicles to distributed sensor networks. Inter-component communication is implemented using Ice middleware.
*Orchestra Control Engine - A suite of software components (based on Linux/RTAI) for realtime industrial robots and machines control.
* [http://www.orocos.org OROCOS] - the Open Robot Control Software project provides a Free Software toolkit forrealtime robot arm andmachine tool control.
*Player/Stage Project - A very popularFree Software robot interface and simulation system, used for robotics research and teaching worldwide.
* [http://www.programblue.com Programblue] - A growing project of 80's fans from the showbiz pizza era creating custom shows on their robot bands in their garages. See how music can be enjoyed visually through these robots using programblue software.
* [http://PyroRobotics.org Pyro, Python Robotics] - Popular roboticsFree Software used in universities and colleges. Easy to use, yet powerful, allows students and researchers to write high-level programs to exploreArtificial Intelligence and robotics without worrying about low-level details.
* [http://roboDNA.com roboDNA] - RoboDNA researches Dashboard technologies used to operate robots from a PC, including a free version for the Lego NXT.
* [http://www.robomind.net RoboMind] - Educational software to learn the basics of robotics and programming.
* [http://www.inl.gov/adaptiverobotics/robotintelligencekernel/index.shtml Robot Intelligence Kernel ]
* [http://www.skilligent.com Skilligent] - a commercial control system for autonomous service robots. The control system enables creation of robots which can be trained by end users - vs. programmed by a software engineer.
* [http://www.gostai.com/index-main.php URBI] - Universal Real-time Behavior Interface fromGostai .
*Webots - A commercial robot simulation package that allows physically realistic simulations and allows you to prototype your own robot. It also comes with a broad palette of predesigned robot models, e.g.Aibo , e-puck, khepera, hoap2, hemisson, pioneer, etc.Robotics Linux Kernel Drivers
* [http://cole.homedns.org/parallelport_pwm_driver.php Parallel Port PWM/Encoder Linux Driver] - a poor-mans motor controller software driver.
ee also
*
Behavior based robotics andSubsumption architecture
*Developmental robotics
*Epigenetic robotics
*Evolutionary robotics
*Cognitive robotics
*Robot control
*Automated planning and scheduling
*Cybernetics
*Artificial intelligence
*Telerobotics /Telepresence
*Swarm robotics External links
* "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]
* [http://www.linuxdevices.com/articles/AT5739475111.html A review of robotics software platforms] Linux Devices.
* [http://www.mobilerobots.com/TrainingFactoryUserGuide.pdf "MobileRobots Training Factory"] Robot software users guide for set-up, installation, tasking and control of autonomous robots without programming.
Wikimedia Foundation. 2010.