Zspace Linux Fix

From Immersive Visualization Lab Wiki
Jump to: navigation, search


Project Overview

The goal of this project is to create a fix for the zspace's stereo display of content, which gets mixed up from time to time. Using additional hardware external to the computer, a fix can be made which determines if the screen is correctly initialized and displaying content with the proper stereo orientation. In other words, an Arduino with a photocell oriented above part of the zspace screen can identify which side is which and send feedback to the computer.

Arduino Info and Tutorials

  • Most basically, the Arduino homepage has everything from basic language reference to links and tutorials.
  • Also, there is another tutorial website with clearer instructions and copyable codes. A related link has photocell information.
  • This is very basic Arduino information presented clearly. I did not use this, but found it while searching for useful, simple URL's.
  • These two links (here and here) seemed useful when programming the C++ software seen below.
  • This link has another version of a brightness detecting program (possibly useful for reference).
  • Possibly useful tutorial including an example of Arduino/C++ integration (the exact program does not actually work but has useful components).
  • Here are some (mostly basic) test programs unrelated to this specific project that help with understanding Arduino: Media:Arduinolearning.zip

Known Bugs/Issues

  • The ZSpace has a 50/50 chance at initializing the left and right images in an inverted manner.
    • Must be detected so screens can be inverted [again] to their correct positions.
    • Requires additional hardware to monitor which screen is being displayed.
    • Arduino Uno serves this purpose and reports light intensity of current view back to host OS.


  • Power the light intensity to frequency converter via an Arduino Uno.
  • Obtain light intensity measurement by reading frequency from the diode.
  • Write an application to read/write light-intensity to/from the Ardunio Uno by means of a tty device (e.g. "/dev/ttyACM0").
  • Create a cable with the special diode fastened in place behind a polarized lens.
  • Test the cable to make sure the polarized lens makes a difference when switching left/right screens in CalVR.
  • Integrate code with CalVR to show proof of concept.
  • Connect Arduino software and that on Windows/Linux to establish a way of applying the photocell readings to zspace.


  • The Arduino itself, attached to the computer using a COM port (currently programmed as COM3).
  • A photocell, attached using a resistor to a pin (currently programmed as Pin13) and the ground pin (GND).
  • A resistor is needed (10Kohms?).

Arduino Software

  • The Arduino software needs to be downloaded before the Arduino itself can be programmed.
  • The specific COM port to which the Arduino is attached is an important detail involved in the programming. It can be found in the Arduino software under Tools -> Serial Port.
  • The Baud rate also should be included in programs (currently programmed at 9600).
  • This is the Arduino program that reads and prints a photocell reading from a pin (currently programmed to be pin13) every millisecond.
  • This is a slightly modified version of the previous program, which hopefully can also identify which pin is being used.

Source Code

  • Source code for receiving light-intensity information from the Arduino Uno in Linux (Gray):
  • Source code for actually measuring the light-intensity from the light sensor on the Arduino Uno (Gray).
  • A windows C++ code (visual studio 2010) that prints the Arduino commands (Kubasak). This program includes the assumption that the Arduino is attached to the COM3 serial port.


Software Developers

  • Matthew Kubasak
  • Thomas Gray

Project Advisor

  • Jurgen Schulze