MouseTrap Dev Help/From Scratch

From Foss2Serve
Jump to: navigation, search

Contents

Overview

To date, we have been trying to fix the existing mousetrap code-base. In the process we have learned much about the system: the author's intent, how this intent has been realized, the system's design, the libraries involved, etc. However, this effort has not produced a "working" mousetrap: i.e., one cannot control the mouse pointer using one's head via a webcam.

We suggest a new strategy: start from scratch, target an up-to-date platform, and use the existing code-base as a source of requirements, design ideas, and pointers to needed libraries (but not as a source of code).

Note, this doesn't mean that the current strategy must or should be abandoned. As mentioned before, it is providing important insights into the existing system, and it may in fact yield a working system before this new strategy does. Remember, the goal is to produce a working mousetrap system.

Functional Requirements

For the first iteration, there is only one functional requirement:

  1. Control (move and click with) the mouse pointer using only one's head via a webcam.

In subsequent iterations, we will add other requirements such as:

  1. Performance
  2. Visual feedback (beyond the OS's response to the mouse pointer)

Non-Functional Requirements

Since we are starting fresh, we will target the most current platform:

  1. Fedora 18 - The OS
  2. Python 3 - The language
  3. GTK 3 - The GUI toolkit

Recommendations

Below is a list of technologies that we think will be needed. These are not requirements. They are provided as a starting point for developers. These should be updated as "the way" becomes more clear.

  1. Glib (version?) - Gateway to GTK 3 and Gstreamer
  2. Gstreamer (version?) - Used to capture images from a webcam
  3. SciPy and/or NumPy [SciPy depends on NumPy] (version?) - Used to perform "computer vision" calculations (Harr points, etc.)
Personal tools
Namespaces
Variants
Actions
Events
Learning Resources
HFOSS Projects
Evaluation
Navigation
Toolbox