Project Design/Architecture

Design Process Overview
We will use agile development to design and develop our solution. This involves frequent iterations, at least once a week. Mingle, which is a project development tool, will be used to plan our design and development. Our design and development process also includes weekly client meetings, weekly mentor meetings and informal team meetings about every other day. We believe this process lends itself very well to this type of project.

Architecture Overview
Hardware
Our solution will use machine vision to precicely quantify the error in alignment. The camera that we will be using will interface with our software using TWAIN. TWAIN is a standard interface used to develop applications that must communicate to imaging devices such as digital cameras or scanners. Because JAVA does not have TWAIN support natively, we will most likely develop a camera interface in C/C++ and have our main application, that is written in Java, use the interface.


Architecture Stack

Software
Most of our software, as stated, will be written in Java and developed in Eclipse. It will include an easy to use interface that will provide a live camera feed from the camera mounted on the telescope. Once a user aligns a selected mirror, it will be stored so that the user can export that data into a log. A particular mirror is selected from a list of mirrors that will most likely bestored in XML format. This would allow the software to be updated once more mirrors were installed.

Tools Used
The majority of our solution will be written in Java. This application focuses on image recognition techniques, so significant effort was devoted to developing image classes to represent image data. To interface with the camera, we took advantage of the supplied TWAIN driver to communicate with the camera in a low level. Java does not include native support for TWAIN devices, so a Java Native Interface (JNI) was requried to allow the camera to be used within Java.

All development was done in the Eclipse IDE Version 3.3.2. Mac and Windows platforms were used to develop on, and JNI development was done specifically on windows. To manage the source code across the team, a Subversion repository was used.

Our client, Jim Clark, was able to set up a temporary lab for us to use. The purpose of this lab was to allow us to get test images of LED markers at a far distance. To do this, we set up a series of mirrors with LED markers attached to them. These mirrors were positioned roughly 20 meters away from each other, which allowed us to get images at 20 meter increments up to and including 200m.