This document summarizes the current state of robot programming systems. It distinguishes between manual programming systems, which require directly writing robot programs, and automatic programming systems, which generate programs through interaction. For manual systems, it describes text-based languages like controller-specific languages and generic procedural languages, as well as graphical/icon-based languages. It also reviews trends in programming paradigms like behaviour-based languages. The document aims to determine advances in robot programming since the last review and identify next steps to provide more convenient programming for general users.
If you are interested in industrial robot controllers, this site is the right place for you. You can find out the every aspect of robot controllers and figure out how to design and implement robot controllers. http://open-robotics.com/
This document provides an introduction and overview of robotics. It discusses the timeline of robotics development. It describes different types of robots based on their classification and configuration. It also covers robot components like manipulators, end effectors, actuators, sensors, and controllers. The document discusses robot programming methods, reference frames, work envelopes, and control methods.
This document discusses robot programming methods. It describes different types of robot programming including joint-level, robot-level, and high-level programming. It also covers various robot programming methods such as manual, walkthrough, leadthrough, and offline programming. Specific programming languages and their applications are also summarized.
Top three robot programming methods (teaching)Tumul Ozha
The three main robot programming methods are teach pendants, offline programming through simulation, and teaching by demonstration. Teach pendants allow precise positioning through numerical coordinates but disrupt production. Offline programming reduces downtime but the simulation may not perfectly model reality. Teaching by demonstration is intuitive like moving the robot manually but is not as precise as teach pendants or good for algorithmic tasks. The best method depends on the specific task, robot, and programming needs.
This document discusses robot programming methods. It describes leadthrough programming where the robot is taught motions by physically moving it through the required cycles. It also discusses using textual programming languages to enter commands into the robot controller. Additionally, it explains simulation and off-line programming where the program is prepared remotely and downloaded to the robot without using leadthrough methods. Finally, it provides examples of motion commands, interlock/sensor commands, and coordinate systems used in robot programming.
To make it serve itself for performing useful functions like approaching to work piece, automatic motion in workspace, robot programming is very important. Robot programming is important to coordinate various tasks & activities that needed in workspace. Coordination of robot is done by using various sensors & end effectors which can be coordinated by programs and simulation software’s.
Simulation of robotic positions and programmingRachit Laharia
This document discusses simulation and programming of robotic positions. It describes using simulation software to test robotic systems virtually before implementing them in the real world. This allows exploring design options while avoiding risks to the physical robot. The document also covers different types of robotic programming including joint-level, robot-level, and high-level programming. It compares online and offline programming methods and discusses advantages and disadvantages of techniques like teach pendants and lead-through programming.
The document discusses industrial robot applications and programming. It describes how robots are used for material handling, assembly, processing and inspection operations that are hazardous, repetitive or difficult for humans. It then covers various types of material handling applications including pick and place, palletizing, machine loading/unloading and stacking operations. The document also discusses robot programming methods, languages, accuracy, repeatability and resolution.
If you are interested in industrial robot controllers, this site is the right place for you. You can find out the every aspect of robot controllers and figure out how to design and implement robot controllers. http://open-robotics.com/
This document provides an introduction and overview of robotics. It discusses the timeline of robotics development. It describes different types of robots based on their classification and configuration. It also covers robot components like manipulators, end effectors, actuators, sensors, and controllers. The document discusses robot programming methods, reference frames, work envelopes, and control methods.
This document discusses robot programming methods. It describes different types of robot programming including joint-level, robot-level, and high-level programming. It also covers various robot programming methods such as manual, walkthrough, leadthrough, and offline programming. Specific programming languages and their applications are also summarized.
Top three robot programming methods (teaching)Tumul Ozha
The three main robot programming methods are teach pendants, offline programming through simulation, and teaching by demonstration. Teach pendants allow precise positioning through numerical coordinates but disrupt production. Offline programming reduces downtime but the simulation may not perfectly model reality. Teaching by demonstration is intuitive like moving the robot manually but is not as precise as teach pendants or good for algorithmic tasks. The best method depends on the specific task, robot, and programming needs.
This document discusses robot programming methods. It describes leadthrough programming where the robot is taught motions by physically moving it through the required cycles. It also discusses using textual programming languages to enter commands into the robot controller. Additionally, it explains simulation and off-line programming where the program is prepared remotely and downloaded to the robot without using leadthrough methods. Finally, it provides examples of motion commands, interlock/sensor commands, and coordinate systems used in robot programming.
To make it serve itself for performing useful functions like approaching to work piece, automatic motion in workspace, robot programming is very important. Robot programming is important to coordinate various tasks & activities that needed in workspace. Coordination of robot is done by using various sensors & end effectors which can be coordinated by programs and simulation software’s.
Simulation of robotic positions and programmingRachit Laharia
This document discusses simulation and programming of robotic positions. It describes using simulation software to test robotic systems virtually before implementing them in the real world. This allows exploring design options while avoiding risks to the physical robot. The document also covers different types of robotic programming including joint-level, robot-level, and high-level programming. It compares online and offline programming methods and discusses advantages and disadvantages of techniques like teach pendants and lead-through programming.
The document discusses industrial robot applications and programming. It describes how robots are used for material handling, assembly, processing and inspection operations that are hazardous, repetitive or difficult for humans. It then covers various types of material handling applications including pick and place, palletizing, machine loading/unloading and stacking operations. The document also discusses robot programming methods, languages, accuracy, repeatability and resolution.
In terms of robotic movement capabilities, there are several common robotic configurations: vertically articulated, cartesian, SCARA, cylindrical, polar and delta.
The document discusses different methods of NC part programming including manual part programming, computer-assisted part programming, manual data input, NC programming using CAD/CAM, and computer automated part programming. It also provides details on punched tape formats, G-codes and M-codes used in NC part programming.
Software architecture of wheeled mobile robotsDmitry Suvorov
This document summarizes the key aspects of software architecture for wheeled mobile robots. It discusses common architectures including those without an OS, with a real-time OS, and with an embedded OS. It also covers important components like motion control using PID regulators, localization using odometry and lidar, and motion planning algorithms like A* and RRT Connect. The document provides advantages and disadvantages of the different approaches.
This document contains information about computer-assisted part programming using APT (Automatically Programmed Tool) language. It discusses the tasks divided between the human programmer and computer, including input translation, arithmetic computations, editing, and post processing. It also describes defining part geometry, specifying tool paths and operations, and includes examples of part programs for drilling and milling operations.
NC part programming: part programming fundamentals - manual programming – NC coordinate
systems and axes – tape format – sequence number, preparatory functions,
dimension words, speed word, feed world, tool world, miscellaneous functions –
programming exercises.
Computer aided part programming: concept and need of CAP – CNC languages – APT
language structure: geometry commands, motion commands, postprocessor commands,
compilation control commands – programming exercises – programming with interactive
graphics.
This document is a thesis submitted by Kalpitkumar Thakar to the University of Wollongong for the degree of Master of Professional Engineering in Electrical Engineering. The thesis investigates controlling a 2 DOF robotic arm using fuzzy logic control. The robotic arm has 2 revolute joints connected by cylindrical rods. The arm is interfaced to a PC through USB and can operate in position, velocity and torque modes. The thesis aims to model the arm, develop a fuzzy logic controller to control the 2 DOF motion, and test the controller in simulation and experiments. Literature on robotic arm control and fuzzy logic control is reviewed. The kinematics and dynamics of the 2 DOF arm are also derived and explained.
Software Architecture for (Robot-Sense, Think and Act ). It is general architecture for mobile robots for performing tasks.
A Layered architecture, use to build standard software by integrating robot subsystems and user logic.
Introduction to embedded computing and arm processorsSiva Kumar
This document provides an introduction to embedded computing and ARM processors. It discusses complex systems and microprocessors, embedded system design processes, and provides an example design of a model train controller. It introduces instruction sets and describes the ARM processor, including its CPU, programming input/output, supervisor mode, exceptions and traps, co-processors, and memory system mechanisms. It also discusses CPU performance and power consumption considerations for embedded systems.
An introduction to PLC languages - Instruction Language (IL) , Functional Block Diagram (FBD) , Ladder Logic Diagram (LD) and Sequential Function Chart (SFC).
(Download and open with Adobe Reader to see animations)
L4MS - Benefits, OPIL, use cases and Open Call 2019 processL4MS
This extensive package describes what are the common challenges smaller companies face when automating internal logistics. Industrial IoT platform OPIL can help connect different factory equipment under one platform, and with a 3D simulation tool, testing and optimizing the desired solution virtually before final investment decision. Also they key steps and FAQ's of the Open Call process for potential applicants.
This document provides an overview of programmable logic controller (PLC) architecture. It discusses PLC components like the memory unit and input/output modules. It describes different PLC types including fixed, modular, and rack PLCs. The document also covers the PLC scan cycle involving input scanning, program execution, and output scanning. Common PLC programming methods like ladder logic and structured text are introduced. Key concepts such as latching and unlatching in PLC programs are defined.
IRJET- Pick and Place Robot for Color based SortingIRJET Journal
This document describes the design and implementation of a pick and place robot system for color-based sorting. The system uses a webcam to capture images of objects on a conveyor belt. MATLAB image processing techniques are applied to the images to detect color. The color detection information is sent to a microcontroller which controls servo motors to pick and place the objects into the appropriate sorting bins based on color. The system is intended to improve production quality and reduce errors compared to manual sorting. Key aspects include image acquisition, preprocessing, color detection algorithms in MATLAB, microcontroller control of servo motors, and a sorting mechanism.
An Integrated Prototyping Environment For Programmable AutomationMeshDynamics
The document describes an integrated prototyping environment for rapidly designing robotic systems that includes a library of hardware and software modules. The environment aims to automate parts of the robot programming process through the use of software advisors and critics to help select appropriate modules and generate robot programs. It is intended to allow users to quickly generate and evaluate different approaches to designing automation systems in order to reduce the costs and lead times of developing robotic applications.
This document provides an overview of computer programming including:
- The process of writing source code, testing, and refining programs with other programmers.
- Common programming paradigms like imperative and declarative programming.
- The history of early programmable machines and the development of computer programming.
- Key aspects of the programming process like defining problems, planning solutions, coding, testing, and documenting programs.
- Different types of programming languages and the considerations in choosing a language.
- Modern requirements for efficient, reliable, robust, usable, and portable programs.
The document describes recent advances in the Jderobot framework for robot programming. Jderobot is an open-source robotic software framework that uses a component-oriented architecture and Ice middleware. It includes tools for robot programming, libraries for controllers and sensors, and supports the Gazebo simulator. Recent updates include improved project management with CMake and easier installation via Debian packages.
The document provides information on computer software, types of software including system software and application software, programming languages including object-oriented, structured, and procedural languages, and assemblers, compilers, and interpreters. It also discusses operating systems, types of operating systems including batch processing, multi-tasking, real-time, single user, multi-user, and distributed operating systems. Finally, it covers database management systems including components, data definition language, data manipulation language, and data control language.
Automated Java Code Generation (ICDIM 2006)IT Industry
Rule based Production Systems for Automatic Code Generation in Java
This document describes a system that can automatically generate UML diagrams and code from natural language requirements. It analyzes text written in English to extract objects, classes, attributes and methods. It then generates UML class, activity, sequence and use case diagrams based on the analysis. Finally, it produces code in languages like Java, C# and VB.NET corresponding to the diagrams. The system aims to save time and costs by automating modeling and a significant portion of coding based on input requirements. It provides a more efficient alternative to traditional manual modeling and coding approaches.
Software engineering deals with building large, complex software systems through a team-based approach. It aims to clearly define problems, use standard tools and techniques, and approach development like engineering disciplines such as building construction. Key aspects include requirements analysis, system design, coding, testing, and maintenance. Tools and environments support software engineering activities and have evolved from basic editors and compilers to integrated development environments. Specifications are precise statements of what a system must do and are used to define requirements, design interfaces, and module behaviors.
1) System programming aims to produce software that provides services to computer hardware and requires an awareness of hardware.
2) Early system programs like assemblers and loaders were developed to translate programs into machine code and load them into memory for execution as hardware needs and programs grew more complex.
3) Additional system programs like macros and compilers were later created to make programming more efficient and allow programmers to write in higher-level languages as applications became more specialized.
Robot programming has largely moved away from low-level coding to more intuitive methods to make programming easier for operators. The three most popular robot programming methods are:
1. Teaching pendant - Operators move the robot point-to-point using buttons to save positions and play back the full program. Most traditional industrial robots use this method.
2. Simulation/offline programming - Programs are developed virtually to reduce downtime and test ideas without interfering with production. Some simulators can automatically generate robot trajectories.
3. Teaching by demonstration - Operators move the robot using a force sensor or joystick to store positions, similar to physical manipulation. This is intuitive for operators but does not reduce downtime like offline
The document discusses various functions of robot software including offline programming, robot simulation and visualization, robotic middleware, mobile robot planning, and real-time path planning. Offline programming allows creating robot programs without being physically connected to the robot. Simulation and visualization tools enable testing robot movements and programs virtually. Robotic middleware facilitates communication between different robot components. Mobile robot planning finds optimal paths while avoiding obstacles. And real-time path planning allows robots to safely navigate dynamic environments and adjust motions in real-time.
Report about Software Architecture for Robotics, for class of Introduction to Robotics of Prof. Sukhan Lee, of department of computer engineering of Sungkyunkwan University.
Student: Lorran Pegoretti.
Suwon, South Korea, December 2013
In terms of robotic movement capabilities, there are several common robotic configurations: vertically articulated, cartesian, SCARA, cylindrical, polar and delta.
The document discusses different methods of NC part programming including manual part programming, computer-assisted part programming, manual data input, NC programming using CAD/CAM, and computer automated part programming. It also provides details on punched tape formats, G-codes and M-codes used in NC part programming.
Software architecture of wheeled mobile robotsDmitry Suvorov
This document summarizes the key aspects of software architecture for wheeled mobile robots. It discusses common architectures including those without an OS, with a real-time OS, and with an embedded OS. It also covers important components like motion control using PID regulators, localization using odometry and lidar, and motion planning algorithms like A* and RRT Connect. The document provides advantages and disadvantages of the different approaches.
This document contains information about computer-assisted part programming using APT (Automatically Programmed Tool) language. It discusses the tasks divided between the human programmer and computer, including input translation, arithmetic computations, editing, and post processing. It also describes defining part geometry, specifying tool paths and operations, and includes examples of part programs for drilling and milling operations.
NC part programming: part programming fundamentals - manual programming – NC coordinate
systems and axes – tape format – sequence number, preparatory functions,
dimension words, speed word, feed world, tool world, miscellaneous functions –
programming exercises.
Computer aided part programming: concept and need of CAP – CNC languages – APT
language structure: geometry commands, motion commands, postprocessor commands,
compilation control commands – programming exercises – programming with interactive
graphics.
This document is a thesis submitted by Kalpitkumar Thakar to the University of Wollongong for the degree of Master of Professional Engineering in Electrical Engineering. The thesis investigates controlling a 2 DOF robotic arm using fuzzy logic control. The robotic arm has 2 revolute joints connected by cylindrical rods. The arm is interfaced to a PC through USB and can operate in position, velocity and torque modes. The thesis aims to model the arm, develop a fuzzy logic controller to control the 2 DOF motion, and test the controller in simulation and experiments. Literature on robotic arm control and fuzzy logic control is reviewed. The kinematics and dynamics of the 2 DOF arm are also derived and explained.
Software Architecture for (Robot-Sense, Think and Act ). It is general architecture for mobile robots for performing tasks.
A Layered architecture, use to build standard software by integrating robot subsystems and user logic.
Introduction to embedded computing and arm processorsSiva Kumar
This document provides an introduction to embedded computing and ARM processors. It discusses complex systems and microprocessors, embedded system design processes, and provides an example design of a model train controller. It introduces instruction sets and describes the ARM processor, including its CPU, programming input/output, supervisor mode, exceptions and traps, co-processors, and memory system mechanisms. It also discusses CPU performance and power consumption considerations for embedded systems.
An introduction to PLC languages - Instruction Language (IL) , Functional Block Diagram (FBD) , Ladder Logic Diagram (LD) and Sequential Function Chart (SFC).
(Download and open with Adobe Reader to see animations)
L4MS - Benefits, OPIL, use cases and Open Call 2019 processL4MS
This extensive package describes what are the common challenges smaller companies face when automating internal logistics. Industrial IoT platform OPIL can help connect different factory equipment under one platform, and with a 3D simulation tool, testing and optimizing the desired solution virtually before final investment decision. Also they key steps and FAQ's of the Open Call process for potential applicants.
This document provides an overview of programmable logic controller (PLC) architecture. It discusses PLC components like the memory unit and input/output modules. It describes different PLC types including fixed, modular, and rack PLCs. The document also covers the PLC scan cycle involving input scanning, program execution, and output scanning. Common PLC programming methods like ladder logic and structured text are introduced. Key concepts such as latching and unlatching in PLC programs are defined.
IRJET- Pick and Place Robot for Color based SortingIRJET Journal
This document describes the design and implementation of a pick and place robot system for color-based sorting. The system uses a webcam to capture images of objects on a conveyor belt. MATLAB image processing techniques are applied to the images to detect color. The color detection information is sent to a microcontroller which controls servo motors to pick and place the objects into the appropriate sorting bins based on color. The system is intended to improve production quality and reduce errors compared to manual sorting. Key aspects include image acquisition, preprocessing, color detection algorithms in MATLAB, microcontroller control of servo motors, and a sorting mechanism.
An Integrated Prototyping Environment For Programmable AutomationMeshDynamics
The document describes an integrated prototyping environment for rapidly designing robotic systems that includes a library of hardware and software modules. The environment aims to automate parts of the robot programming process through the use of software advisors and critics to help select appropriate modules and generate robot programs. It is intended to allow users to quickly generate and evaluate different approaches to designing automation systems in order to reduce the costs and lead times of developing robotic applications.
This document provides an overview of computer programming including:
- The process of writing source code, testing, and refining programs with other programmers.
- Common programming paradigms like imperative and declarative programming.
- The history of early programmable machines and the development of computer programming.
- Key aspects of the programming process like defining problems, planning solutions, coding, testing, and documenting programs.
- Different types of programming languages and the considerations in choosing a language.
- Modern requirements for efficient, reliable, robust, usable, and portable programs.
The document describes recent advances in the Jderobot framework for robot programming. Jderobot is an open-source robotic software framework that uses a component-oriented architecture and Ice middleware. It includes tools for robot programming, libraries for controllers and sensors, and supports the Gazebo simulator. Recent updates include improved project management with CMake and easier installation via Debian packages.
The document provides information on computer software, types of software including system software and application software, programming languages including object-oriented, structured, and procedural languages, and assemblers, compilers, and interpreters. It also discusses operating systems, types of operating systems including batch processing, multi-tasking, real-time, single user, multi-user, and distributed operating systems. Finally, it covers database management systems including components, data definition language, data manipulation language, and data control language.
Automated Java Code Generation (ICDIM 2006)IT Industry
Rule based Production Systems for Automatic Code Generation in Java
This document describes a system that can automatically generate UML diagrams and code from natural language requirements. It analyzes text written in English to extract objects, classes, attributes and methods. It then generates UML class, activity, sequence and use case diagrams based on the analysis. Finally, it produces code in languages like Java, C# and VB.NET corresponding to the diagrams. The system aims to save time and costs by automating modeling and a significant portion of coding based on input requirements. It provides a more efficient alternative to traditional manual modeling and coding approaches.
Software engineering deals with building large, complex software systems through a team-based approach. It aims to clearly define problems, use standard tools and techniques, and approach development like engineering disciplines such as building construction. Key aspects include requirements analysis, system design, coding, testing, and maintenance. Tools and environments support software engineering activities and have evolved from basic editors and compilers to integrated development environments. Specifications are precise statements of what a system must do and are used to define requirements, design interfaces, and module behaviors.
1) System programming aims to produce software that provides services to computer hardware and requires an awareness of hardware.
2) Early system programs like assemblers and loaders were developed to translate programs into machine code and load them into memory for execution as hardware needs and programs grew more complex.
3) Additional system programs like macros and compilers were later created to make programming more efficient and allow programmers to write in higher-level languages as applications became more specialized.
Robot programming has largely moved away from low-level coding to more intuitive methods to make programming easier for operators. The three most popular robot programming methods are:
1. Teaching pendant - Operators move the robot point-to-point using buttons to save positions and play back the full program. Most traditional industrial robots use this method.
2. Simulation/offline programming - Programs are developed virtually to reduce downtime and test ideas without interfering with production. Some simulators can automatically generate robot trajectories.
3. Teaching by demonstration - Operators move the robot using a force sensor or joystick to store positions, similar to physical manipulation. This is intuitive for operators but does not reduce downtime like offline
The document discusses various functions of robot software including offline programming, robot simulation and visualization, robotic middleware, mobile robot planning, and real-time path planning. Offline programming allows creating robot programs without being physically connected to the robot. Simulation and visualization tools enable testing robot movements and programs virtually. Robotic middleware facilitates communication between different robot components. Mobile robot planning finds optimal paths while avoiding obstacles. And real-time path planning allows robots to safely navigate dynamic environments and adjust motions in real-time.
Report about Software Architecture for Robotics, for class of Introduction to Robotics of Prof. Sukhan Lee, of department of computer engineering of Sungkyunkwan University.
Student: Lorran Pegoretti.
Suwon, South Korea, December 2013
This document provides an overview of computer software and its development. It begins with definitions of software and different types including system software (operating systems, utilities), language translators (compilers, interpreters), and application software. It then discusses programming languages at different levels from machine to natural languages. The document outlines the software development life cycle and common models like waterfall and agile. It also summarizes key aspects of operating systems and general software trends regarding features, hardware requirements, and capabilities.
1. The document describes an automatic graphical design generator system that takes a program file as input and generates a graphical design of the program without requiring the user to have knowledge of the program.
2. It aims to reduce the time and effort required to manually create graphical designs by dragging and dropping symbols. The proposed system can generate designs for programs written in languages like Java as long as the program is logically and syntactically correct.
3. Graphical designs provide an easy way to understand complex programs for students and software testers. The automatic generation of designs from code can also assist with reverse engineering programs where the code is available but a design is needed.
The document provides an overview of a feasibility study for a software engineering project. It discusses the technical, economic, and operational feasibility aspects that should be analyzed. The technical feasibility section examines the system requirements and configuration. The economic feasibility section describes cost-benefit analysis to determine if the benefits outweigh the costs. The operational feasibility section considers the organizational impacts and changes, including changes to skills needed and staffing requirements.
IRJET - Survey Paper on Tools Used to Enhance User's Experience with Cons...IRJET Journal
The document discusses and compares different tools that can be used to develop cross-platform mobile applications for enhancing the user experience of consumer real estate applications. It analyzes native mobile development, hybrid applications, and compiled applications like React Native and Flutter. Key criteria for comparison include code reusability, ecosystem support, performance, and accessing native device features. The goal is to identify the best tools for implementing features like 3D walkthroughs, chatbots, and optical character recognition in a real estate mobile app.
Computer software, or just software, is a set of data or computer instructions that tell a computer how to work. In computing and software engineering , computer software is all the information processed by computer systems , programs and data . Computer software includes computer programs , libraries, and related non-executable data , such as digital media . Computer hardware and software are closely connected, and cannot be used alone.
This document provides an introduction to computer software. It discusses system software, which assists users to develop programs, and application software, which includes popular packaged programs for tasks like word processing, spreadsheets, databases, and more. The document outlines four lessons on software classification, system software components and functions, popular application packages and their advantages, and an introduction to programming languages.
1. The document presents a case study applying an enterprise configuration management platform, ScriptRock, to a multi-agent robotic system to improve reconfiguration times and simplify troubleshooting.
2. The robotic system consists of unmanned ground vehicles and a ground control station running various software modules. ScriptRock allows validating configurations by encoding requirements as executable tests.
3. An experiment was conducted to gauge the benefits of using ScriptRock for configuration management over existing manual methods on the robotic system. Results showed improved reconfiguration times and simplified troubleshooting.
Visual Programming and Program Visualization – Towards an Ideal Visual Softwa...IDES Editor
There has been a great interest recently in systems
that use graphics to aid in the programming, debugging, and
understanding of computer systems. The ‘’Visual
Programming’’ and ‘’Program Visualization’’ are exciting
areas of active computer science research that show promise
for improving the programming process, for this they have
been applied to these systems. This article attempts to provide
more meaning to these terms by giving precise definitions,
and then surveys a number of systems that can be classified as
providing Visual Programming or Program Visualization.
These systems are organized by classifying them into two
different taxonomies. The paper also gives a brief description
of our approach that concentrated on both Visual Programming
and Program Visualization for an Ideal Visual Software
Engineering System. We consider it as a new promising trend
in software engineering.
The document discusses different types of software. It describes system software as programs that control computer operations and help users utilize computers effectively. The main types of system software are operating systems and language processors. Application software are programs developed for specific tasks like inventory, payroll, etc. The document also discusses utilities and prewritten vs custom software.
This document discusses various topics related to computer networks including network software, system software, hardware, software, firmware, apps, and IP addresses. It provides definitions and examples of these terms. It explains the differences between system software and application software, and between hardware, software, and firmware. It also discusses software-defined networking frameworks and the layers within it. IP addresses are defined and the differences between IPv4 and IPv6 are outlined.
1. A Survey of Robot Programming Systems
Geoffrey Biggs and Bruce MacDonald
Department of Electrical & Electronic Engineering, University of Auckland
Email: g.biggs at ec.auckland.ac.nz, b.macdonald at auckland.ac.nz
Abstract result robots are moving out of controlled industrial en-
vironments and into uncontrolled service environments
Robots have become significantly more power- such as homes, hospitals, and workplaces where they
ful and intelligent over the last decade, and are perform tasks ranging from delivery services to enter-
moving in to more service oriented roles. As a tainment. It is this increase in the exposure of robots to
result robots will more often be used by peo- unskilled people that requires robots to become easier to
ple with minimal technical skills and so there program and manage.
is a need for easier to use and more flexible
programming systems. This paper reviews the 1.1 Reviewing robot programming
current state of the art in robot programming This paper reviews the current state of the art in robot
systems. A distinction is made between manual programming systems, in the the related area of robot
and automatic programming systems. Manual software architectures, and related trends. We do not
systems require the user/programmer to create aim to enumerate all existing robot programming sys-
the robot program directly, by hand, while au- tems. A review of robot programming systems was con-
tomatic systems generate a robot program as ducted in 1983 by Tom´s Lozano–P´rez [1982]. At that
a e
a result of interaction between the robot and time, robots were only common in industrial environ-
the human; there are a variety of methods in- ments, the range of programming methods was very lim-
cluding learning, programming by demonstra- ited, and the review examined only industrial robot pro-
tion and instructive systems. gramming systems. A new review is necessary to deter-
mine what has been achieved in the intervening time,
and what the next steps should be to provide convenient
1 Introduction
control for the general population as robots become ubiq-
Robots are complex machines and significant technical uitous in our lives.
knowledge and skill are needed to control them. While Lozano–P´rez divided programming systems into
e
simpler robots exist, for example the Roomba vacuuming three categories: guiding systems, robot–level program-
robot from iRobot [2003], in these cases the robots are ming systems and task–level programming systems. For
specifically designed for a single application, and the con- guiding systems the robot was manually moved to each
trol method reflects this simplicity. The Roomba robot’s desired position and the joint positions recorded. For
control panel allows a user to select different room sizes robot–level systems a programming language was pro-
and to start the vacuuming process with a single button vided with the robot. Finally, task–level systems speci-
push. fied the goals to be achieved (for example, the positions
However, most robots do not have simple interfaces of objects).
and are not targeted at a single, simple function such as By contrast, this paper divides the field of robot pro-
vacuuming floors. Most robots have complex interfaces, gramming into automatic programming, manual pro-
usually involving a text–based programming language gramming and software architectures, as shown in Fig. 1.
with few high–level abstractions. While the average user The first two distinguish programming according to the
will not want to program their robot at a low level, a actual method used, which is the crucial distinction for
system is needed that provides the required level of user users and programmers. In automatic programming sys-
control over the robot’s tasks. tems the user/programmer has little or no direct con-
Robots are becoming more powerful, with more sen- trol over the robot code. These include learning sys-
sors, more intelligence, and cheaper components. As a tems, Programming by Demonstration and Instructive
2. Robot Manual
Programming Programming
Automatic Manual Software
Programming Programming Architectures Text−based Graphical
Figure 1: A robot programming system may use auto-
Controller− Graph
matic or manual programming. Software architectures
Specific
also play an important role. Systems
Languages
Systems. Manual systems require the user/programmer
Generic Flowchart
to directly enter the desired behaviour of the robot, usu-
Procedural
ally using a graphical or text–based programming lan- Systems
guage. Software architectures are important to all pro- Languages
gramming systems, as they provide the underlying sup-
port, such as communication, as well as access to the Behaviour− Diagramatic
robots themselves. based
Systems
Section 2 will concentrate on manual programming Languages
systems, while Section 3 will concentrate on automatic
programming systems. Section 4 gives conclusions on Figure 2: Categories of manual programming systems.
the trends in robot programming systems. A review of A manual system may use a text–based or graphical in-
software architectures is beyond the scope of this paper. terface for entering the program.
2 Manual Programming Systems
Controller-Specific Languages
Users of a manual programming systems must create the
robot program by hand, which is typically performed Controller–specific languages were the original method of
without the robot. The finished program is loaded into controlling industrial robots, and are still the most com-
the robot afterwards. These are often off-line program- mon method today. Every robot controller has some
ming systems, where a robot is not present while pro- form of machine language, and there is usually a pro-
gramming. It is conceivable for manual programming gramming language to go with it that can be used to
to control a robot online, using for example an inter- create programs for that robot. These programming
preted language, where there are no safety concerns (eg languages are usually very simple, with a BASIC–like
the Lego Mindstorm [2003]). syntax and simple commands for controlling the robot
As shown in Fig. 2, manual programming systems can and program flow. A good example is the language pro-
be divided into text–based and graphical systems (also vided by KUKA [2003] for its industrial robots, shown
known as icon–based systems). Graphical programming in Fig. 3. Programs written in this language can be run
is not considered automatic programming because the on a suitable KUKA robot or tested in the simulation
user must create the robot program code by hand before system provided by KUKA.
running it on the robotic system. There is a direct corre- Despite having existed for as long as industrial robots
spondence between the graphical icons and the program have been in use, controller–specific languages have
statements. seen only minor advances. In one case, Freund and
Luedemann-Ravit [2002] have created a system that al-
2.1 Text–based Systems lows industrial robot programs to be generalised around
A text–based system uses a traditional programming some aspect of a task, with a customised version of the
language approach and is one of the most common meth- robot program being generated as necessary before be-
ods, particularly in industrial environments where it is ing downloaded into a robot controller. The system uses
often used in conjunction with Programming by Demon- a “generation plan” to provide the basic program for a
stration (see Section 3.2). Text–based systems can be task. For example, a task to cut shaped pieces of metal
distinguished by the type of language used, in terms of could be customised by the shape of the final result.
the type of programming performed by the user. This While such a system can help reduce the time for pro-
division can be seen in Fig. 2 and is explained in the ducing programs for related products, it does not reduce
remainder of this section. the initial time to develop the robot program.
2
3. Figure 3: The KUKA programming environment and robot programming language.
Freund et al. [2001] have also done some work to ease KUKA [2003] and ABB [2003].
the use of simulation systems in industrial environments.
Generic Procedural Languages
Because of the abundance of control languages, a simu-
Generic languages provide an alternative to controller–
lator system must be able to understand the language
specific languages for programming robots. “Generic”
of each program it is to simulate. Robot manufacturers
means a high–level multi–purpose language, for example
often provide a simulation system with the programming
C++, that has been extended in some way to provide
language, but this once again increases the training time
robot–specific functionality. This is particularly com-
for staff. To enable a single simulation system to be used
mon in research environments, where generic languages
for multiple languages, translators are typically used.
are extended to meet the needs of the research project.
Freund et al. created a translator framework that can
The choice of the base language varies, depending upon
significantly reduce the time required to develop these
what the researchers are trying to achieve (for example,
translators. It is now in use on the COSIMIR [2003]
procedural or behavioural programming). A language
simulation system in commercial environments.
developed in this way may be aimed at system program-
Controller–specific languages have some drawbacks. ming or application level programming.
The biggest problem is the lack of a universal stan- The most common extension to a multi–purpose lan-
dard between languages from different robot manufac- guage is a robot abstraction, which is a set of classes,
turers. If a factory uses robots from many different methods, or similar constructs that provides access to
manufacturers then they will need to either train their common robot functions in a simple way. They remove
programmers for each one, or pay the manufacturer to the need to handle low–level functionality such as setting
develop the required programs for them. Either method output ports high to turn on motors or translating raw
increases significantly the time and costs for developing sensor data. For example, an abstraction may provide
new robot programs. Commercial systems have concen- a method to have the robot move a manipulator to a
trated their advances on overcoming this by providing certain position. It might also provide higher–level ab-
more advanced programming systems that remove the stractions, such as methods to make the robot move to
need for the programmer to actually write the robot code a point using path planning. It is common now for a re-
by hand. Instead, the programmer can for example se- search robot from a manufacturer to provide such a sys-
lect instructions from a list. These systems are designed tem with their robots. However, these abstractions suffer
to significantly reduce programming time, but are gener- from the same fault as controller–specific languages for
ally application-specific. Examples include systems from industrial robots. They are still specific to the robot
3
4. they are designed for. a good knowledge of statistical methods, it shows that
To improve this situation, many researches have devel- such a programming system is possible in a general pur-
oped their own robot abstraction systems. Player/stage pose language. If combined with a suitable method to
is a commonly used robot programming system, that remove the need for low-level robot control, it could be
provides drivers for many robots and abstractions for a powerful system for creating learning robots.
controlling them [Vaughan et al., 2003]. Kanayama and Behaviour–based Languages
Wu [2000] have developed a “Motion Description Lan-
Behaviour–based languages provide an alternative ap-
guage” extension to Java that provides high–level ab-
proach to the procedural languages of the previous sec-
stractions for mobile robots. To prevent the abstraction
tions. They typically specify how the robot should react
from being limited to one robot architecture they use
to different conditions, rather than providing a procedu-
Java classes to provide common abstractions and pro-
ral description. For example, a set of behaviours could
gramming interfaces. Each robot needs a customised
be to follow a wall from one point to another. A be-
version of the Vehicle class, because of the specific robot
havioural system is more likely to be used by a robot
hardware differences. Other services, such as path plan-
developer than the end user. The developer would use
ning, are also represented by classes.
it to define functionality that the end user would use to
Others have implemented similar systems, including perform tasks.
Hardin et al. [2002], who developed a system primar- Functional Reactive Programming (FRP) is a good ex-
ily used on Lego Mindstorms robots [Lego, 2003]. As ample of a behavioural programming paradigm. In FRP,
well as Java, abstractions have been created for many both continuous and discrete events can be used to trig-
other generic languages, including C++ [Hopler and Ot- ger actions. Recently, there have been two language ex-
ter, 2001, which also provides real-time extensions], [Lof- tensions of note based on a functional language, Yampa
fler et al., 2001] and Python, known as Pyro [2003]. Pyro [Hudak et al., 2003] and Frob [Peterson et al., 1999;
is a particularly extensive system, providing classes and 2001]. The language used in both cases is Haskell. These
abstractions for robots and algorithms. Even eXtensible systems allow the programmer to specify how the robot
Markup Language (XML) has been used for describing reactions using very little code compared with procedu-
robot motion, in a form that can be transmitted over ral languages. The descriptions are based on behaviours
networks and then played back on a suitable robot body and events. For example, in Yampa it is possible to write
[Kitagishi et al., 2002].
a wall following algorithm with just eight lines of code
It is interesting to note that a abstractions are com- (building on some lower–level functions), shown in Fig.4.
monly implemented using an object–oriented method- While Yampa focuses mainly on the behavioural as-
ology. McKee et al. [2001] state that a rigorous pects, Frob is also designed with modularity in mind. It
object–oriented approach to robotics is important to allows blocks of code to interact through interfaces, thus
clearly define robotic entities relationships. They de- supporting code reuse. It provides pre-defined controller
scribe the MARS model of object-oriented robots, and and sensor interfaces and a communications infrastruc-
define robots comprised of “resources,” which are then ture. It also makes use of “tasks” to create sequentiality
modelled as “modules.” They draw clear parallels be- within the program.
tween object-oriented concepts such as inheritance, and FRP is not limited to languages such as Haskell. Dai
the modules of a robot. A good example is a tool on the et al. [2002] have implemented an FRP system in C++.
end of an arm. Simply by being on the end of an arm, It provides similar functionality to Frob, but also allows
the tool inherits the ability to move. existing C++ code. It is simpler to use than Yampa
Thrun [2000] has developed CES, an extension for and Frob, both of which require a good knowledge of
C++ that provides probabilistic programming support. functional programming.
The use of probabilistic methods allows robot programs One obvious trend is the change away from simple,
to overcome problems caused by such things as sen- command based languages, and towards higher–level lan-
sor noise. However, writing programs with probabilistic guages that provide more support to the user, which is
methods is difficult. CES provides a set of C++ tem- illustrated by the increasing popularity of behavioural
plates for probability distributions on variable types. It languages. With more intelligent programming systems,
also provides methods for learning, which can be used the programmer is required to do less work to achieve
in conjunction with standard programming practices to the same results, increasing productivity.
create a system where parts are coded by hand while
other parts are trained. The system was tested by cre- 2.2 Graphical Systems
ating a mail delivery program for a mobile robot. The Graphical (or icon–based) programming systems pro-
program required only 137 lines of code and two hours vide an alternative to text–based methods for manual
of training. While the use of this language does require programming. Although they are manual programming
4
5. rcFollowLeftWall :: Velocity -> Distance -> SimbotController
rcFollowLeftWall v d _ = proc sbi -> do
let r = rfLeft sbi
dr <- derivative -< r
let omega = kp*(r-d) + kd*dr
kd = 5
kp = v*(kd^2)/4
returnA -< mrFinalize (ddVelTR v (lim 0.2 omega))
Figure 4: A wall following algorithm implemented using Yampa.
In industrial environments, graphical systems enable
rapid configuration of a robot to perform a required task.
Bischoff et al. [2002] have produced a prototype style
guide for defining the icons in a flow–chart system based
on an emerging ISO standard (15187). Usability tests
show that both experts and beginners found the graph-
ical system easier for handling robots, for changing pro-
grams and for program overview. Touch screens are be-
coming popular for programming robots, and graphical
systems using icons are ideally suited to this interface.
A graphical system for off-line programming of weld-
ing robots has been developed by Dai and Kampker
[2000]. The main aim is to provide a user friendly inter-
face for integrating sensor information in robot programs
and so increase sensor use in welding robot programs.
This is needed to overcome problems such as uncertainty
Figure 5: The Lego Mindstorms graphical programming of thermal effects. An icon–oriented interface provides
environment, used to create simple programs for Lego the main programming method, with macros defined for
robots. sensor operations in a sensor editor. Macros make it
easy to incorporate new sensors. The method could be
used with any robot program where sensor information
methods, they are a small step closer to automatic pro- is used to mitigate inaccuracies.
gramming, as they provide a graphical medium for pro- A graph approach has been taken by Bredenfeld and
gramming. They require manual input to specify ac- Indiveri [2001] for their Dual Dynamics (DD–) Designer
tions and program flow. Graphical systems typically use system, which takes a behaviour-based approach to con-
a graph, flow–chart or diagram view of the robot sys- trolling groups of mobile robots. The graphical program-
tem. One advantage of graphical systems is their ease ming interface uses a data processor hyper-graph, which
of use, which is achieved at the cost of text–based pro- is made up of data processing elements connected to-
gramming’s flexibility. They are typically used for robot gether by states. This approach allows the interaction
applications rather than system programming. between robot system elements to be specified.
Perhaps the most successful graphical system using
the flow–chart approach is employed by the Lego Mind-
3 Automatic Programming Systems
storms robotics kit [Lego, 2003], illustrated in Fig. 5. It
is aimed at children, and so is simple by design. Blocks Automatic programming systems provide little or no di-
representing low-level actions are stacked like puzzle rect control over the program code the robot will run.
pieces to produce a sequence of actions. The sequences Instead, robot code is generated from information en-
can be combined together to form a new block that can tered into the system in a variety of indirect ways. Often
then be placed in a new stack, thus forming a simple hi- a robot system must be running while automatic “pro-
erarchy. A sequence is either attached to the main robot gramming” is performed, and these systems have been
process, which defines its standard behaviour, or to a referred to as “online” programming systems. However,
sensor where it defines the action taken when that sen- automatic programming may also be performed on simu-
sor is triggered. While simple, this system allows for the lated or virtual robots, for example in industrial robotic
creation of sophisticated behaviours. CAD systems. In this case the real robot is off-line but
5
6. Automatic (for example, an assembly task) using the teach pen-
dant. The position of the pendant is recorded and the
Programming
results used to generate a robot program that will move
the robot arm through the same motions. Alternatively,
Learning Programming Instructive the demonstrator may move the robot arm through the
Systems by Systems required motions either physically or using a controller.
Demonstration In this case, the joint positions are recorded and used to
generate the robot program. Though simple, this type
of system has been effective at rapidly creating assem-
Teach Pendant/
bly programs. Myers et al. [2001] describe an imple-
Touch
mentation by Intelligent Automation, Inc. It uses PbD
to demonstrate subtasks, which are then grouped into
Gesture/Voice/
sequential tasks by a programmer.
Vision
There are two current PbD research directions. The
first is to produce better robot programs from the
Figure 6: Categories of automatic programming systems. demonstrations, for example by combining multiple
Learning systems, programming by demonstration and demonstrations and breaking down the information col-
instructive systems are all methods of teaching robots to lected into segments. The second is to enhance demon-
perform tasks. strations through the use of multi-modal communica-
tions systems.
the virtual robot is online. For example, the IGRIP Significant work has been conducted in recent years
[2003] system provides full simulation capabilities for cre- to develop PbD systems that are able to take the infor-
ating and verifying robot programs. mation produced from a demonstration, such as sensor
Fig. 6 shows the three categories that automatic sys- and joint data, and extract more useful information from
tems can be placed into: learning systems, programming it, particularly for industrial tasks. Traditional PbD sys-
by demonstration (PbD) and instructive systems. These tems simply record and play back a single demonstration
are discussed in the following sections. with no variation to account for changes or errors in the
world. Much current research aims to introduce some
3.1 Learning Systems intelligence to PbD systems to allow for flexible task ex-
Learning systems create a program by inductive infer- ecution rather than pure imitation.
ence from user provided examples and self–exploration Ehrenmann et al. [2002] describe a method for seg-
by the robot. In the long run it will be crucial for a robot menting demonstrated data into moves (found by seg-
to improve its performance in these ways. A full review menting between grasps) and grasps (specifically, the ac-
is beyond the scope of this paper. Examples include tions performed during a grasp). The results of the seg-
a hierarchy of neural networks developed for learning mentation can be stored for later playback on a robot.
the motion of a human arm in 3D [Billard and Schaal, [Chen and McCarragher, 1998; 2000; Chen and Zelinsky,
2001], and a robot that can learn simple behaviours and 2001] describe the progressive development of a simi-
chain these together to form larger behaviours [Weng lar system in which multiple demonstrations are used to
and Zhang, 2002]. Smart and Kaelbling [2002] propose build a partial view of the robot’s configuration space.
reinforcement learning for programming mobile robots. Optimal paths are generated between steps in a task.
In the first phase the robot watches as the task is per- The motivation is that demonstrations rarely contain the
formed. In the second phase the robot attempts to per- best path between steps. This introduces significant flex-
form the task on its own. ibility to task performance. For example, the task can be
biased towards maximum execution speed or maximum
3.2 Programming By Demonstration accuracy.
This is the most common method of automatic pro- Ogawara et al. [2002] developed a system that inte-
gramming. Fig. 6 shows that PbD systems may use grates observations from multiple demonstrations. The
touch/pendants for the demonstration, or they may use demonstrated data is segmented to find important states
other, more natural communication methods such as ges- such as grasps and moves. The multiple demonstrations
tures and voice. are used to determine which segments are important to
A traditional PbD system uses a teach-pendant to the task, and from this a flexible task model is built, for
demonstrate the movements the robot should perform. later execution on the robot.
This technique has been used for industrial manipulators The modality of the demonstration is also important;
for many years. The demonstrator performs the task it may be touch, vision, gestures or voice. All have seen
6
7. active research in recent years. Grunwald et al. [2001] do as a result of the demonstration, and also allows dif-
developed a method for natural touch in PbD. Rather ferent parts of the demonstration to be edited, moved
than having to grip a robot arm at a certain point to around, and even used separately, producing code reuse
move it for the demonstration, the demonstrator may for a PbD system.
hold the robot arm at any point, much as they would Traditional robot CAD programming systems also
hold a human arm when indicating the movements that provide a virtual, simulation environment in which a user
should be performed for a task. Without a requirement may manipulate a robot to perform a task, and this is
that the robot be gripped in a certain place, the robot a form of PbD. Although the robot is off-line, the robot
becomes easier and more natural for a non-technical per- simulation is online.
son to use. The key trend in PbD is the increased intelligence of
Vision is also an important method of receiving the programming system. Rather than just playing back
demonstration information. However, it is difficult to a single demonstration, as was originally done, PbD sys-
produce a robust vision–based system that can oper- tems are now capable of interpreting a demonstration
ate in the typically cluttered environments of the real and then using the interpreted data to produce robust,
world. Special markers often must be used to indicate flexible programs capable of handling complex, changing
which objects the robot should be paying attention to worlds. PbD methods may include learning; some of the
during the demonstration, and the data from the demon- task description may be acquired by learning from the
stration is not as accurate as data from sensors on the demonstrations.
robot. Yokokohji et al. [2002] developed a system to use
cameras mounted close to the demonstrator’s viewpoint, 3.3 Instructive Systems
for acquiring the demonstration data. Both the demon- Instructive systems are given a sequence of instructions,
strator’s hand motion and head motion are captured by usually in real–time. The technique is best suited for
tracking landmarks. Tests included the task of retriev- commanding robots to carry out tasks that they have al-
ing a CD from a CD rack, which showed that the task ready been trained or programmed to perform; it could
could be reproduced with sufficient accuracy. However, be considered the highest level of programming. Typi-
markers are required on all objects of interest in order cally, gesture recognition or voice recognition is used.
to find landmarks. Voyles and Khosla [1999] explored gesture–based pro-
Takamatsu et al. [2002] describe a method of produc- gramming using “Gesture Interpretation Agents.” This
ing more robust programs by correcting possible errors is integrated into a PbD system. Steil et al. [2001] inves-
in demonstrated data from vision–based PbD. Contact tigated the use of gestures for controlling the vision based
states are checked to ensure they don’t create such prob- robot GRAVIS. Gestures are used to direct the attention
lems as having two objects in the same place. This en- of the robot, and so enable its vision system to more eas-
sures that incorrect results from a vision system do not ily find objects that are specified in instructions. This
produce erroneous programs. is useful for overcoming the problems caused by clutter
There have been other advances in PbD systems. in human environments. Strobel [2002] et al. used hand
Onda et al. [2002] developed a virtual environment gestures for controlling a domestic cleaning robot. Static
where demonstrations are performed. Contact state in- hand and arm gestures are captured with the robot’s
formation can easily be retrieved from such an environ- stereo vision system, or dynamic gestures are captured
ment. Standard contact states may be replaced with with a magnetic tracking system. Spatial knowledge is
special behaviours to overcome differences between the used to help determine the intent behind the gesture.
virtual world and various iterations of the real world. The user could point to a surface that should be cleaned.
Instead of simply attempting to push a peg into a hole, Gesture recognition is useful for indicating objects in a
the system will make the robot perform a search pattern scene that instructions apply to.
to ensure the peg is correctly aligned with the hole and Language–based communication is the most natural
then move it in such a way that it goes into the hole method for humans to communicate instructions to one
smoothly. This is an imitation of how humans perform another, so it is a good candidate for robot instruction.
such a task, that is visually lining up the peg and the A natural language system for providing directions to a
hole before moving it around until it goes in. robot is described by Lauria et al. [2002]. Natural lan-
Other advances include the use of sensors on the fin- guage is used to teach the robot how to move to differ-
gers to detect fine manipulation of objects, for exam- ent locations by specified routes. It has fourteen motion
ple turning a screw [Zollner et al., 2002]. Friedrich et primitives that are linked to natural language constructs.
al. [1998] allow the results of the demonstration to be Unknown commands may be used by the user at some
graphically viewed once the demonstration is complete. point, and some form of clarification and learning system
This allows the programmer to see what the robot will would be needed.
7
8. Multi-modal communication has potential for simple References
robot programming. Vision systems provide a view of [ABB, 2003] The ABB group. http://www.abb.com/,
the world, and are used for gesture recognition (for ex-
Oct 2003.
ample, gesturing commands or pointing at an object in
the world). Gesture recognition and natural language [Billard and Schaal, 2001] A. Billard and S. Schaal.
recognition are used to give and clarify instructions to a Robust learning of arm trajectories through hu-
robot. McGuire et al. [2002] describe a continuation of man demonstration. In Intelligent Robots and Sys-
the work in [Steil et al., 2001], mentioned earlier. The tems, 2001. Proceedings. 2001 IEEE/RSJ Interna-
authors argue that a multi-modal system is a necessity tional Conference on, volume 2, pages 734–739, Nov
for robots aimed at “more cognitively oriented environ- 2001.
ments” such as homes. They aim for human-like interac- [Bischoff et al., 2002] R. Bischoff, A. Kazi, and M. Sey-
tion. Information from all sources (vision, gestures and farth. The MORPHA style guide for icon-based pro-
voice) may be used. For example, an instruction to pick gramming. In Robot and Human Interactive Commu-
up “that cube” could be given with voice while a gesture nication, 2002. Proceedings. 11th IEEE International
is used to indicate the cube to pick up, and the vision Workshop on, pages 482–487, 2002.
system provides a location for the cube.
[Bredenfeld and Indiveri, 2001] A. Bredenfeld and
Instructive systems have great potential for provid- G. Indiveri. Robot behavior engineering using
ing a high-level control method for robots. However, DD-Designer. In Robotics and Automation, 2001.
they still rely on the underlying trained or programmed Proceedings 2001 ICRA. IEEE International Confer-
abilities. These can be implemented only using other ence on, volume 1, pages 205–210, 2001.
programming systems such as manual programming and
through training with PbD systems. [Chen and McCarragher, 1998] J. Chen and B. Mc-
Carragher. Robot programming by demonstration-
selecting optimal event paths. In Robotics and Au-
tomation, 1998. Proceedings. 1998 IEEE International
4 Conclusions Conference on, volume 1, pages 518–523, May 1998.
[Chen and McCarragher, 2000] J.R. Chen and B.J. Mc-
Robot programming systems have become significantly
more powerful and intelligent, moving beyond basic, Carragher. Programming by demonstration - con-
text-based languages and record-and-play programming structing task level plans in hybrid dynamic frame-
by demonstration, to more intelligent systems that work. In Proceedings of the IEEE Intl. Conf. on
provide considerable support to the user/programmer. Robotics and Automation (ICRA ’00), volume 2,
Text-based languages are becoming higher–level, reduc- pages 1402–1407, apr 2000.
ing the work required to implement systems. Graphical [Chen and Zelinsky, 2001] J.R. Chen and A. Zelinsky.
and automatic systems are becoming more powerful, al- Programming by demonstration: removing sub-
lowing people with little or no technical skills to program optimal actions in a partially known configuration
robots. space. In Proceedings of the IEEE Intl. Conf. on
The strongest trend is the addition of intelligence to Robotics and Automation (ICRA ’01), volume 4,
programming systems to remove some of the burden pages 4096–4103, May 2001.
from the programmer, both for manual programming [COSIMIR, 2003] COSIMIR. http://www.cosimir.
systems and automatic programming systems. Text– com/, 2003.
based systems often supply much of the required low–
[Dai and Kampker, 2000] Wenrui Dai and M. Kampker.
level support, and programming by demonstration sys-
User oriented integration of sensor operations in a of-
tems are becoming capable of building flexible task plans
fline programming system for welding robots. In Pro-
from demonstrations rather than just playing back the
ceedings of the IEEE Intl. Conf. on Robotics and Au-
recorded data. Instructive systems are useful for provid-
tomation (ICRA ’00), volume 2, pages 1563–1567, apr
ing a final, high level of control.
2000.
The development of these systems needs to be driven
[Dai et al., 2002] Xiangtian Dai, G. Hager, and J. Pe-
forward, beginning with solutions for robot developers
that can then be scaled up to consumer solutions. The terson. Specifying behavior in C++. In Proceedings
aim of these systems should be an environment that of the IEEE Intl. Conf. on Robotics and Automation
provides a consistent, simple interface for programming (ICRA ’02), volume 1, pages 153–160, May 2002.
robots. Such a system would allow the general popula- [Ehrenmann et al., 2002] M. Ehrenmann, R. Zollner,
tion to program robots with ease. O. Rogalla, and R. Dillmann. Programming service
8
9. tasks in household environments by human demon- In Proceedings of the IEEE Intl. Conf. on Robotics
stration. In Robot and Human Interactive Commu- and Automation (ICRA ’00), volume 1, pages 329–
nication, 2002. Proceedings. 11th IEEE International 334, apr 2000.
Workshop on, pages 460–467, 2002. [Kitagishi et al., 2002] I. Kitagishi, T. Machino,
[Freund and Luedemann-Ravit, 2002] E. Freund and A. Nakayama, S. Iwaki, and M. Okudaira. Develop-
B. Luedemann-Ravit. A system to automate the gen- ment of motion data description language for robots
eration of program variants for industrial robot ap- based on extensible markup language - realization
plications. In Intelligent Robots and System, 2002. of better understanding and communication via
IEEE/RSJ International Conference on, volume 2, networks. In Intelligent Robots and System, 2002.
pages 1856–1861, 2002. IEEE/RSJ International Conference on, volume 2,
[Freund et al., 2001] E. Freund, B. Ludemann-Ravit, pages 1145–1151, 2002.
O. Stern, and T. Koch. Creating the architecture [KUKA, 2003] KUKA automatisering + robots N.V.
of a translator framework for robot programming http://www.kuka.be/, Aug 2003.
languages. In Proceedings of the IEEE Intl. Conf. [Lauria et al., 2002] S. Lauria, G. Bugmann, T. Kyria-
on Robotics and Automation (ICRA ’01), volume 1, cou, and E. Klein. Mobile robot programming using
pages 187–192, May 2001. natural language. Robotics & Autonomous Systems,
[Friedrich et al., 1998] H. Friedrich, J. Holle, and 38(3–4):171–181, March 2002.
R. Dillmann. Interactive generation of flexible robot [Lego, 2003] Lego Mindstorms. http://mindstorms.
programs. In Robotics and Automation, 1998. Pro- lego.com/eng/products/ris/rissoft.asp, 2003.
ceedings. 1998 IEEE International Conference on, vol-
ume 1, pages 538–543, May 1998. [Loffler et al., 2001] M.S. Loffler, D.M. Dawson,
E. Zergeroglu, and N.P. Costescu. Object-oriented
[Grunwald et al., 2001] G. Grunwald, G. Schreiber, techniques in robot manipulator control software
A. Albu-Schaffer, and G. Hirzinger. Touch: The di- development. In American Control Conference, 2001.
rect type of human interaction with a redundant ser- Proceedings of the 2001, volume 6, pages 4520–4525,
vice robot. In Robot and Human Interactive Commu- June 2001.
nication, 2001. Proceedings. 10th IEEE International
Workshop on, pages 347–352, 2001. [Lozano-P´rez, 1982] Tom´s Lozano-P´rez. Robot pro-
e a e
gramming. Technical Report Memo 698, MIT AI, De-
[Hardin et al., 2002] D. Hardin, M. Frerking, P. Wiley, cember 1982, revised April 1983 1982. Also published
and G. Bolella. Getting down and dirty: device-level in Proceedings of the IEEE, Vol 71, July 1983, pp.821–
programming using the real-time specification for java. 841 (Invited), and IEEE Tutorial on Robotics, IEEE
In Object-Oriented Real-Time Distributed Computing, Computer Society, 1986, pp.455–475.
2002. (ISORC 2002). Proceedings. Fifth IEEE Inter-
national Symposium on, pages 457–464, 2002. [McGuire et al., 2002] P. McGuire, J. Fritsch, J.J. Steil,
F. Rothling, G.A. Fink, S. Wachsmuth, G. Sagerer,
[Hopler and Otter, 2001] R. Hopler and M. Otter. A and H. Ritter. Multi-modal human-machine commu-
versatile C++ toolbox for model based, real time nication for instructing robot grasping tasks. In In-
control systems of robotic manipulators. In Intel- telligent Robots and System, 2002. IEEE/RSJ Inter-
ligent Robots and Systems, 2001. Proceedings. 2001 national Conference on, volume 2, pages 1082–1088,
IEEE/RSJ International Conference on, volume 4, 2002.
pages 2208–2214, Nov 2001.
[McKee et al., 2001] G.T. McKee, J.A. Fryer, and P.S.
[Hudak et al., 2003] Paul Hudak, Antony Courtney, Schenker. Object-oriented concepts for modular
Henrik Nilsson, and John Peterson. Arrows, robots, robotics systems. In Technology of Object-Oriented
and functional reactive programming. In Summer Languages and Systems, 2001. TOOLS 39. 39th In-
School on Advanced Functional Programming 2002, ternational Conference and Exhibition on, pages 229–
Oxford University, Lecture Notes in Computer Sci- 238, 2001.
ence. Springer-Verlag, 2003. To Appear.
[Myers et al., 2001] D.R. Myers, M.J. Pritchard, and
[IGRIP, 2003] Igrip and ultra products page. http:// M.D.J. Brown. Automated programming of an indus-
www.deneb.com/products/igrip.html, Oct 2003. trial robot through teach-by showing. In Proceedings
[iRobot, 2003] Roomba robotic vacuum cleaner. http: of the IEEE Intl. Conf. on Robotics and Automation
//www.roombavac.com/, 2003. (ICRA ’01), volume 4, pages 4078–4083, May 2001.
[Kanayama and Wu, 2000] Y.J. Kanayama and C.T. [Ogawara et al., 2002] K. Ogawara, J. Takamatsu,
Wu. It’s time to make mobile robots programmable. H. Kimura, and K. Ikeuchi. Generation of a task model
9
10. by integrating multiple observations of human demon- [Vaughan et al., 2003] Richard T. Vaughan, Brian P.
strations. In Proceedings of the IEEE Intl. Conf. Gerkey, and Andrew Howard. On device abstractions
on Robotics and Automation (ICRA ’02), volume 2, for portable, reusable robot code. In Proceedings of the
pages 1545–1550, May 2002. 2003 IEEE/RSJ Intl. Conference on Intelligent Robots
[Onda et al., 2002] H. Onda, T. Suehiro, and K. Kita- and Systems (IROS03), pages 2421–2427, Las Vegas,
gaki. Teaching by demonstration of assembly mo- Nevada, October 2003.
tion in vr - non-deterministic search-type motion in [Voyles and Khosla, 1999] R.M. Voyles and P.K.
the teaching stage. In Intelligent Robots and Sys- Khosla. Gesture-based programming: a preliminary
tem, 2002. IEEE/RSJ International Conference on, demonstration. In Proceedings of the IEEE Intl. Conf.
volume 3, pages 3066–3072, 2002. on Robotics and Automation (ICRA ’99), volume 1,
[Peterson et al., 1999] J. Peterson, G.D. Hager, and pages 708–713, May 1999.
P. Hudak. A language for declarative robotic pro- [Weng and Zhang, 2002] Juyang Weng and Yilu Zhang.
gramming. In Proceedings of the IEEE Intl. Conf. Action chaining by a developmental robot with a value
on Robotics and Automation (ICRA ’99), volume 2, system. In Development and Learning, 2002. Proceed-
pages 1144–1151, May 1999. ings. The 2nd International Conference on, pages 53–
[Peterson et al., 2001] J. Peterson, G. Hager, and 60, 2002.
A. Serjentov. Composable robot controllers. In Com- [Yokokohji et al., 2002] Y. Yokokohji, Y. Kitaoka, and
putational Intelligence in Robotics and Automation, T. Yoshikawa. Motion capture from demonstrator’s
2001. Proceedings 2001 IEEE International Sympo- viewpoint and its application to robot teaching. In
sium on, pages 149–154, 2001. Proceedings of the IEEE Intl. Conf. on Robotics and
Automation (ICRA ’02), volume 2, pages 1551–1558,
[Pyro, 2003] Pyro, Python Robotics. http:
May 2002.
//emergent.brynmawr.edu/pyro/?page=Pyro,
2003. [Zollner et al., 2002] R. Zollner, O. Rogalla, R. Dill-
mann, and M. Zollner. Understanding users inten-
[Smart and Kaelbling, 2002] W.D. Smart and L. Pack
tion: programming fine manipulation tasks by demon-
Kaelbling. Effective reinforcement learning for mo-
stration. In Intelligent Robots and System, 2002.
bile robots. In Proceedings of the IEEE Intl. Conf.
IEEE/RSJ International Conference on, volume 2,
on Robotics and Automation (ICRA ’02), volume 4,
pages 1114–1119, 2002.
pages 3404–3410, May 2002.
[Steil et al., 2001] J.J. Steil, G. Heidemann, J. Jockusch,
R. Rae, N. Jungclaus, and H. Ritter. Guiding atten-
tion for grasping tasks by gestural instruction: the
gravis-robot architecture. In Intelligent Robots and
Systems, 2001. Proceedings. 2001 IEEE/RSJ Interna-
tional Conference on, volume 3, pages 1570–1577, Nov
2001.
[Strobel et al., 2002] M. Strobel, J. Illmann, B. Kluge,
and F. Marrone. Using spatial context knowledge in
gesture recognition for commanding a domestic ser-
vice robot. In Robot and Human Interactive Commu-
nication, 2002. Proceedings. 11th IEEE International
Workshop on, pages 468–473, 2002.
[Takamatsu et al., 2002] J. Takamatsu, K. Ogawara,
H. Kimura, and K. Ikeuchi. Correcting observation
errors for assembly task recognition. In Intelligent
Robots and System, 2002. IEEE/RSJ International
Conference on, volume 1, pages 232–237, 2002.
[Thrun, 2000] S. Thrun. Towards programming tools
for robots that integrate probabilistic computation
and learning. In Proceedings of the IEEE Intl. Conf.
on Robotics and Automation (ICRA ’00), volume 1,
pages 306–312, apr 2000.
10