Programming by demonstration

Programming by demonstration

Programming by demonstration (PbD) is a technique for teaching acomputer or a robot new behaviors by demonstrating the task totransfer directly instead of programming it through machinecommands.

The term Programming by example (PbE) or Programming bydemonstration (PbD) appeared in software development research as early asthe mid 1980s [cite paper
first = Dan
last = Halbert
author = Dan Halbert
authorlink =
coauthors =
title = Programming by Example
version =
publisher = U.C. Berkeley (PhD diss.)
date = November 1984
url = http://www.halwitz.org/halbert/pbe.pdf
format =
accessdate = 2008-05-26
] to define a way to define a sequence of operations without having to learn a programminglanguage. The usual distinction in literature between these terms is that in Programming by example the user gives a prototypical product of the computer execution, such as a row in the desired results of a query; while in Programming by demonstration the user performs a sequence of actions that the computer must repeat, generalizing it to be used in different data sets.

These two terms were first undifferentiated, but Programming by example then tended to be mostly adopted by software development researchers while Programming by Demonstration tended to be adopted by robotics researchers.

Robot programming by demonstration

The PbD paradigm is first attractive to the robotics industry dueto the costs involved in the development and maintenance of robotprograms. In this field, the operator often has implicit knowledgeon the task to achieve (he/she knows how to do it), but does nothave usually the programming skills (or the time) required toreconfigure the robot. Demonstrating how to achieve the taskthrough examples thus allows to learn the skill without explicitlyprogramming each detail.

The first PbD strategies proposed in robotics were based on"teach-in", "guiding" or "play-back" methods that consistedbasically in moving the robot (through a dedicated interface ormanually) through a set of relevant configurations that the robotshould adopt sequentially (position, orientation, state of thegripper). The method was then progressively ameliorated byfocusing principally on the teleoperation control and by usingdifferent interfaces such as vision.

However, these PbD methods still used direct repetition, which wasuseful in industry only when conceiving an assembly line usingexactly the same product components. To apply this concept toproducts with different variants or to apply the programs to newrobots, the generalization issue became a crucial point. Toaddress this issue, the first attempts at generalizing the skillwere mainly based on the help of the user through queries aboutthe user's intentions. Then, different levels of abstractions wereproposed to resolve the generalization issue, basicallydichotomized in learning methods at a symbolic level or at atrajectory level.

The development of humanoid robots naturally brought a growinginterest in robot programming by demonstration. As a humanoidrobot is supposed by its nature to adapt to new environments, notonly the human appearance is important but the algorithms used forits control require flexibility and versatility. Due to thecontinuously changing environments and to the huge varieties oftasks that a robot is expected to perform, the robot requires theability to continuously learn new skills and adapt the existingskills to new contexts.

Research in PbD also progressively departed from its originalpurely engineering perspective to adopt an interdisciplinaryapproach, taking insights from neuroscience and social sciences toemulate the process of imitation in humans and animals. With theincreasing consideration of this body of work in robotics, thenotion of "Robot programming by demonstration" (also known asRPD or RbD) was also progressively replaced by the more biologicallabel of "Learning by imitation".

References

*
*

External links

* Reviews Papers
**cite article |last= Billard |first= Aude |others= Contributor S. Calinon, R. Dillmann and S. Schaal. |title= Robot Programming by Demonstration |origyear= 2008 | journal= Handbook of Robotics |publisher= Publisher: MIT Press |url= http://infoscience.epfl.ch/getfile.py?docid=14806&name=chapter5_9&format=pdf&version=1
**cite article |last= Schaal |first= S |others= Contributor Ijspeert, A.; Billard, A. |title= Computational approaches to motor learning by imitation |origyear= 2004 | journal= in: Frith, C. D.;Wolpert, D. (eds.), The Neuroscience of Social Interaction, 1431, pp.199-218|publisher= Publisher: Oxford University Press |url= http://www-clmc.usc.edu/publications/S/schaal-PTRSB2003.pdf
**Robots that imitate humans, Cynthia Breazeal and Brian Scassellati, Trends in Cognitive Sciences, 6:1, 2002, pp. 481-487
**Imitation. A. Billard. In M. A. Arbib (ed.), Handbook of Brain Theory and Neural Networks, MIT Press, 566-569.
**Is imitation learning the route to humanoid robots? S Schaal, Trends in Cognitive Sciences, 1999.

* Special Issues in Journals
** [http://ieeexplore.ieee.org/xpl/tocresult.jsp?isnumber=4126271] "IEEE Transaction on Systems, Man, and Cybernetics", Special Issue on Robot Learning by Observation, Demonstration, and Imitation, Part B, 37:2, April 2007
**RSJ Advanced Robotics, Special Issue on Imitative Robots. Vol. 21, No. 13.
**Neural Networks, Special issue on The Neural Mechanisms of Imitation Learning, Elsevier Ltd.
**Robotics & Autonomous Systems, special issue on The Social Mechanisms of Robot Programming by Demonstration, Elsevier Ltd, 2006.

* Key Laboratories and People
** [http://lasa.epfl.ch/research/control_automation/demonstration/index.php] LASA laboratory at EPFL: Machine Learning techniques for Robot Programming by Demonstration
** [http://www-clmc.usc.edu/Research/ImitationLearning] CLMC Lab at USC: Reinforcement Learning and Learning of Motor Primitives
** [http://www.calinon.ch/research.php http://www.calinon.ch/research.php] Sylvain Calinon's webpage on interactive teacher-student (or better trainer/coach-trainee/client) kinesthetic demonstration.
** [http://www.cns.atr.jp/~dbent/] Darrin Bentivagna's work on teaching air hockey to a humanoid robot

* Community activities on closely related topics
** [http://tab.ieee-ras.org/committeeinfo.php?tcid=8] IEEE Robotics and Automation's Technical Committee on Human-Robot Interaction & Coordination
** [http://tab.ieee-ras.org/committeeinfo.php?tcid=31] IEEE Robotics and Automation's Technical Committee on Robot Learning

Videos

A robot that learns to cook an omelet( [http://fr.youtube.com/watch?v=FtjC-BXGgAE] Short Version;
* [http://fr.youtube.com/watch?v=VvoJxmaoi8A&feature=related] Long Version)

ee also

* Programming by example


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Look at other dictionaries:

  • Programming by example — (also known as Programming by Demonstration or more generally as Demonstrational Programming ) is a technique for teaching a computer new behavior by demonstrating actions on concrete examples. The system records user actions and infers a… …   Wikipedia

  • Démonstration constructive — Une première vision d une démonstration constructive est celle d une démonstration mathématique qui respecte les contraintes des mathématiques intuitionnistes, c est à dire qui ne fait pas appel à l infini, ni au principe du tiers exclu. Ainsi… …   Wikipédia en Français

  • C (programming language) — C The C Programming Language[1] (aka K R ) is the seminal book on C …   Wikipedia

  • Generic programming — is a style of computer programming in which algorithms are written in terms of to be specified later types that are then instantiated when needed for specific types provided as parameters and was pioneered by Ada which appeared in 1983. This… …   Wikipedia

  • Reactive programming — is a programming paradigm oriented around data flows and the propagation of change. This means that it should be possible to express static or dynamic data flows with ease in the programming languages used, and that the underlying execution model …   Wikipedia

  • Extreme Programming — (XP), auch Extremprogrammierung, ist eine Methode, die das Lösen einer Programmieraufgabe in den Vordergrund der Softwareentwicklung stellt und dabei einem formalisierten Vorgehen geringere Bedeutung zumisst. Diese Vorgehensweise definiert ein… …   Deutsch Wikipedia

  • Extreme programming — (XP), auch Extremprogrammierung, ist eine agile Methode, die das Lösen einer Programmieraufgabe in den Vordergrund der Softwareentwicklung stellt und dabei einem formalisierten Vorgehen geringere Bedeutung zumisst. Die Extremprogrammierung… …   Deutsch Wikipedia

  • Xtreme Programming — Extreme Programming (XP), auch Extremprogrammierung, ist eine agile Methode, die das Lösen einer Programmieraufgabe in den Vordergrund der Softwareentwicklung stellt und dabei einem formalisierten Vorgehen geringere Bedeutung zumisst. Die… …   Deutsch Wikipedia

  • ARS based programming — is built on three principles: Abstraction , Reference and Synthesis . These principles can be seen as a generalized form of the basic operations of the Lambda calculus . All essential features of a programming language can be derived from ARS… …   Wikipedia

  • Demo (computer programming) — Demoscene Concepts Demo Intro Demoparty Effects Demogroup Compo Music disk Diskmag Module file …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”