There are two different aspects of integrating our systems:
We are focusing on creating a Recognition Toolkit first. In conjuctions with the toolkit is a geometry package. This package has representations of and operations on basic geometric shapes.
Metin has the most robust low-level recognizers, so the low level recognizers are based on his code. Included (as a start) in this toolkit is recognition funtionality for circles, lines, polygons, and complex shapes which are the combination of lines and bezier curves. In the future we may add other basic shapes (arrows, check marks, simple mechanical devices, specific shapes, etc).
The next step is to convert our existing systems to use this toolkit. This will ensure that the toolkit provides sufficient functionality and ease of use.
The step following this is to build a comprehensive sketch system of the sort designed by Luke and Christine, which provides a language in which to describe how semantics can be used to disambiguate ambiguous interpretations.
If something is unclear or wrong/broken please send me (moltmans@ai.mit.edu) a note. There are a few things you need to know to be able to compile, write, and run code in this system:
Cygwin: (You also have to have CVS_RSH=ssh. Please don't samba mount
the repository since there are some subtle problems with this)
If you did not put the drg directory in your home directory then you
will need to change the DRG_DIR variable in the appropriate script
mentioned above.
IMPORTANT: don't check your changes to these files into CVS.
Other variables you may want to change in these scripts are:
cd drg/code/src/edu
If this produces errors there is probably something set incorrectly in
your environment setup or I have screwed something up. Feel free to
ask me about it in either case.
java edu.mit.sketch.toolkit.TicTacToe
You first draw the board and then play with yourself or a friend.
Feel free to write a computer player at your own leisure.
Mike Oltmans (moltmans@ai.mit.edu)
cd c:/
cvs -d :ext:fracas.ai.mit.edu:/projects/drg/CVSROOT checkout drg
Set Environment Variables
There are two scripts to help setup your environment. Assuming that
you have put the sources into ~/drg on Linux (or c:\ on Windows) all
you should need to do is:
It is also a good idea to include these lines in your shell's resource
file (i.e. .cshrc or .bashrc).
source drg/scripts/setup_env.csh
. setup_env.sh
DRG_DIR
${HOME}/drg or if you
put is somewhere else ${HOME}/code/drg etc... On
windows it should be a windows style path but with forward
facing slashes (`/'). For example:
c:/drg or d:/research/code/drg or
whatever.
DRG_JAVAC
DRG_JAVA_LIB
/jdk/jdk1.3/jre/lib/rt.jar or
c:/jdk1.3/jre/lib/rt.jar or wherever you have it
installed on your system.
JFLAGS
CLASSPATH
Jar files should be unzipped so that the CLASSPATH does not need to be
updated. To help enforce this the makefiles use a separate CLASSPATH
from that used by the shell. Talk to Mike Oltmans
(moltmans@ai.mit.edu)
if you really need to change it.
Binary libraries should be included in drg/lib if they are
platform independent or in the appropriate platform specific
subdirectory if they are platform dependent.
Run the Makefile
You should now be ready to compile and run the sources (remember to
restart your shell if you changed any of the parameters in the
scripts).
make world
Run TicTacToe
If your environment is set up properly and everything compiled as
expected you should just have to type:
Developing
Makefiles
Within the DRG system there should be no need to ever write a
makefile. If you need a new one, it can be automagically generated
for you. (Isn't that nice?)
How to use the makefiles
There are several top level targets for each makefile. Each operation
is performed in the current directory and all of the subdirectories
listed in the Makefile. Here are the targes (e.g. make
all):
Creating and Maintaining
To create a makefile in a new directory simply run:
new_drg_makefile. This will create the files "Makefile"
and "files" which are:
In addition there is a Make.default file: For the most part you should
not edit this file. Rather you should set environment variables to do
what you want. In general the variables you are likely to want to
change will be taken from the environment if they exist already.CVS
Updates
Commits
Emacs pcl-cvs
Coding standards and conventions
Variable and class names
Spacing, tabs, and braces
Debug output, error handling, error reporting
Documentation
Packages and API's
The API