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 SoftwareIndustrial 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 RobotsMost 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 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 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 languagesVisual programming languagesThe software system for the Lego Mindstorms NXT robots is worthy of mention. It is based on and written by 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. Parallel languagesAnother 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.
The above code will move the Robotics Software Projects
Robotics Linux Kernel Drivers
See also
External links
| |