Notes on Edmund:
(Aug 10, 1997, JB)
(added comments 21 April, 1998, JB)
(code updated for new gnu libraries Dec 1999)

Broad categories:

 o  brain* files are generic, and should be usable as is

 o  monx* files are specific to application

 o  (grasp* files are explained below)

 o  iofiles files are scripts for various behaviors

Brain / structure files:

These are the generic architecture structure files, and shouldn't
need to be modified.

brain-objs.hh   -- the class definitions (including most of the running
	code, which is inlined) for the architecture elements.
brain-objs.cc   -- a few non-inlined functions, mostly for parsing
	in a script

brain-read.cc   -- the control functions for parsing in scripts
brain-read.hh	-- a couple of function declarations

braintrie.hh	-- a storage class for instances of the brain elements.

brain.def	-- static / class definitions, must be included in main .cc

Files to be adapted:

These are named "monx" because I'm planning on using them for modeling
some monkeys.  But they are currently fairly generic, and can serve as
templates for other applications.

Don't forget to also see the Makefile!

monx.cc	       	-- the "main" program  (includes .defs)
monx.hh    	-- basic header file, mostly generic definitions
monx-prims.hh 	-- necessary file -- define the primitives that will be
	referenced in your scripts.

monx-dirattn.hh -- a library file of mine, you will probably need your own
monx.def 	-- the static definitons for the library files


---  iofiles  ---

Don't forget to look at the program scripts!  The program must be run
something like:

monx -f testcookie     	

the monx test scripts I've written so far are:
testcookie.lap 	-- the simplest script!
easycookie.lap	-- a less pathalogical script...
seecookie.lap	-- an example of chaining behaviors


(---  Added Comments ---  April 1998 ---)

The directory described above was intended to be a basic distribution
for Edmund, though I haven't yet put it on line I may very well do
that tonight.  It also served as a useful test for a few Edmund things
that I hadn't needed for the robot.

The current directory contains some bug fixes and debugging stuff added
to the system since last August.  Now by default Edmund spews lots of 
information about what it's up to to cerr.  If you want it to run fast,
you should compile it with -DQUIETLY (see the makefile).

Also, there's another program originally written for Rob Ringrose and
Lynn Stein.  Ringrose had a simulator program for having a baby learn
how to grasp, but had finally gotten to a stage of complexity where he
needed some action sequencing.  His intention was to chunk up his own
programs behavior, and have mine determine the sequence of actions.
We never had time to get this fully functional together (we were
working on it in both of our final weeks at MIT that summer) but the
Edmund program here passed the spec.  The programs were intended to 
communicate over pipes.  Here the pipes only plug into stdio, though
switching them to socket reads and writes would be trivial.  

The extra code files are just:

grasp-prims.cc 	-- the connections to Rob's functions

and 

grasp.cc    	-- the main function

The behavior library is entirely Rob's!  I leave these files in partly to 
demonstrate swapping behavior libraries, and partly to demonstrate how easily
Edmund can itself be run as a module for another program.

I don't remember exactly what each script does, and if I did it would be
slightly obscure without the real libraries, but they are dated in the order:

-rw-r--r--   1 joanna  joanna            718 Sep  9  1997 grasp.lap
-rw-r--r--   1 joanna  joanna            676 Sep 10  1997 blocked-view.lap
-rw-r--r--   1 joanna  joanna            705 Sep 12  1997 blockage.lap
-rw-r--r--   1 joanna  joanna            894 Sep 13  1997 lean-block.lap

so if you want to play with them, I'd suggest running

grasp -f lean-block

and see what happens!




