Skip to content
master
Switch branches/tags
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 

README.md

Virtual Monitor

Transforms a projected computer screen into an intuitive touchscreen device.

Presentations and collaborative work are difficult on small computer screens, and while projectors can increase the size and visibility of screens, meaningful interaction must still be done through the computer. Virtual Monitor solves this problem by transforming any projected computer screen into an intuitive touchscreen device. Interactions (i.e. tapping and dragging) are performed directly on the projected screen. Unlike other "smart projector" products, which require costly and fixed installation, Virtual Monitor is designed to use depth data from a Kinect and support any external projector hardware with flexible setup and placement. This software was developed as a senior capstone project at Carnegie Mellon University.

Software Architecture

The software architecture is organized by functional area: interfaces, calibration, interaction detection, interaction handling. A full breakdown of ownership hierarchy and organization of the software classes is provided below:

  • VirtualMonitor: main interface and top-level thread control
    • Calibration, Interaction, Location: library headers
    • CalibrationFrame: calibration interface
    • InteractionDetector: detects interation location
      • KinectReader: interfaces with Kinect to read depth data
      • PhysicalManager: detects interaction location in physical (3D) space
      • VirtualManager: converts interaction location to virtual (2D) space
    • InteractionHandler, CalibrationInteractionHandler, MouseInteractionHandler: handles interactions
      • MouseController: interfaces with operating system for mouse control

Dependencies

Usage

After installing the dependencies, the project may be compiled using the included Makefile and run from the executable at ./bin/VirtualMonitor. Simply calibrate for the projected computer screen and interact by tapping and dragging. The project was designed to be cross-platform, but MouseController currently only includes drivers for macOS.

Project Details

ECE Design Experience (18-500) is the senior capstone project course for Electrical & Computer Engineering at Carnegie Mellon University where students design, develop, and present engineering projects. I devised the Virtual Monitor concept and developed nearly all of software (see the contribution history). The full capstone project team was:

  • Devin Gund (VirtualMonitor, InteractionDetector, KinectReader, PhysicalManager, InteractionHandler, MouseController, user interfaces, etc.)
  • Cayla Wanderman-Milne (VirtualManager)
  • Isabella Brahm (external testing)

This project is free and open-source software under the GNU General Public License v3.0.

About

Transforms a projected computer screen into an intuitive touchscreen device.

Resources

License

Releases

No releases published

Packages

No packages published