At the forefront of Artificial Intelligence
  Home Articles Reviews Interviews JDK Glossary Features Discussion Search

SHRDLU Project

Create a program that has similar parsing skills and domain knowledge that Terry Winograd's SHRDLU had.

Outline

Basically, SHRDLU had knowledge of a small 'world' and it could understand instructions to modify the world. For example, the world normally consisted of a couple of different coloured and sized objects (cube, pyramids etc.). You could say "put the red pyramid on the blue block" and a vision-enabled robot would follow your instructions.

Since it knowledge of the world, it could figure out linguistic ambiguities. For example, look at the two situations below and the instruction your system would be given:



Put the pyramid on the block on the blue block

Look at the different interpretations for that sentence:
Put the pyramid on the block on the blue block
Put the pyramind on the block on the blue block
So, if the world was in the left situation, the robot would move the pyramid from the red block to the blue block. If it was the right situation, the robot wouldn't do anything since neither interpretations are applicable to the world.

Guidelines

The easiest way to parse the user input and create a sentence tree, and pattern matching it to known grammar patterns. For example:
PUT x ON THE y
Obviously, the grammar sentences can be much more complicated than that so you should look at creating embedded patterns. For example:
S  = PUT np ON THE np.
NP = blue box OR red box OR green triangle
You could decompose the NP structure to something like:
NP = Determiner, noun OR determiner, adjective, noun OR noun phrase, PP
PP = Preposition, noun phrase
Then decomposing the values of determiners (the, an, a), nouns (block, pyramid) and adjectives (red, green, blue, small, big) into words that fitted into your world domain. While this all sounds very complicated, it is not too hard as long as you have a good grip on a programming language.

Advanced

Here are some additional ideas for advanced readers:
  • Create an speech recognition interface using an SR SDK like Microsoft's SAPI5 that would allow you to verbally command the program to do things. (Speech Recognition articles)

  • Using LEGO Mindstorms and Vision Command, create a robot that is capable of moving blocks about. Then create a program that interfaces your SHRDLU parsing system to the robot. This will require you to write all the colour recognition/robot movement code outside of the RCX environment, using the QuickCAM SDK and the spirit.ocx (or RCX SDK v2.0 software). (Robotics articles)

  • Interface the two ideas! A speech-enabled SHRDLU robot.


Solutions

No solutions submitted.

Submitted: 01/07/2002

Article content copyright © James Matthews, 2002.
 Article Toolbar
Print
BibTeX entry

Search

Latest News
- Generation5 10-year Anniversary (03/09/2008)
- New Generation5 Design! (09/04/2007)
- Happy New Year 2007 (02/01/2007)
- Where has Generation5 Gone?! (04/11/2005)
- NeuroEvolving Robotic Operatives (NERO) (25/06/2005)

What's New?
- Back-propagation using the Generation5 JDK (07/04/2008)
- Hough Transforms (02/01/2008)
- Kohonen-based Image Analysis using the Generation5 JDK (11/12/2007)
- Modelling Bacterium using the JDK (19/03/2007)
- Modelling Bacterium using the JDK (19/03/2007)


All content copyright © 1998-2007, Generation5 unless otherwise noted.
- Privacy Policy - Legal - Terms of Use -