SHRDLU

Blocks World Natural Language Interface
×

SHRDLU Help

About SHRDLU

SHRDLU is a natural language understanding program created by Terry Winograd at MIT in 1968-1970. It allows you to manipulate objects in a "blocks world" using English commands.

This is a simplified/modded version of SHRDLU and does not use color words in commands.

The name comes from the ETAOIN SHRDLU letter-frequency sequence used in old Linotype typesetting.

Read the SHRDLU wiki page

Sample Commands

  • what is on the table?
  • what is on the large block?
  • how many blocks are there?
  • move the small pyramid to the table
  • put the large pyramid on the large block
  • is the small pyramid on the table?
  • what is the tallest block?
  • how many balls are there?
  • how many pyramids are there?
  • stack the small pyramid on the small block

Available Commands (Systematic)

  • Move objects: put|place|move|stack the <size> <type> on|to the <size> <type>
  • Move to table: move the <size> <type> to the table
  • Ask support relation: what is on the table? or what is on the <size> <type>?
  • Count objects: how many blocks|pyramids|balls are there?
  • Yes/no support check: is the <size> <type> on the table? or is the <size> <type> on the <size> <type>?
  • Tallest object query: what is the tallest block?

Object Types

  • Blocks - Cubic objects that can be stacked
  • Pyramids - Triangular objects (cannot support other objects)
  • Balls - Spherical objects (cannot be stacked)

Properties

  • Sizes: small, large

Physical Rules

  • Objects can only be placed on blocks (not on pyramids or balls)
  • An object must be smaller or similar in size to what it's placed on
  • You can't pick up an object if something is on top of it
  • Multiple objects can be on the table at once

Controls

  • Mouse: Rotate camera by dragging
  • Scroll: Zoom in/out
  • Click object: Select and highlight

Tips

  • Use type + size for specific objects (e.g., "the large block")
  • You can use size adjectives to specify objects (e.g., "large", "small")
  • If there are multiple matching objects, the system will tell you to be more specific
  • The system understands context from previous commands
  • Try asking questions about the world state
  • Commands like "put", "place", "move", and "stack" are all synonyms for moving objects
  • Use "on" to specify where to place objects (e.g., "on the table", "on the large block")