Difference between revisions of "Zspace Linux Fix"

From Immersive Visualization Lab Wiki
Jump to: navigation, search
 
(25 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
==Project Overview==
 
==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.
+
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===
 
===Arduino Info and Tutorials===
 +
*Most basically, the [http://arduino.cc/ Arduino homepage] has everything from basic [http://arduino.cc/en/Reference/HomePage language reference] to links and [http://arduino.cc/en/Guide/HomePage tutorials].
 +
*Also, there is another [http://www.ladyada.net/learn/arduino/lesson1.html tutorial website] with clearer instructions and copyable codes. A [http://learn.adafruit.com/photocells/using-a-photocell related link] has photocell information.
 +
*[http://forefront.io/a/beginners-guide-to-arduino 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 ([http://forum.arduino.cc/index.php?topic=141580.0 here] and [http://playground.arduino.cc//Interfacing/CPPWindows#VisualStudio2008 here]) seemed useful when programming the C++ software seen below.
 +
*[http://playground.arduino.cc/Learning/LEDSensor This link] has another version of a brightness detecting program (possibly useful for reference).
 +
*Possibly useful [http://webtutsdepot.com/2010/05/01/arduino-visual-c-plus-plus-tutorial/ 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.
  
 
===Milestones===
 
===Milestones===
Line 12: Line 24:
 
* Test the cable to make sure the polarized lens makes a difference when switching left/right screens in CalVR.
 
* 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.
 
* 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.
===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.
+
  
 
===Hardware===
 
===Hardware===
*Attach the photocell using a Pin(currently programmed to Pin13) and the GND pin.
+
*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?).
 
*A resistor is needed (10Kohms?).
  
 
===Arduino Software===
 
===Arduino Software===
 
*The Arduino software needs to be [http://arduino.cc/en/Main/Software downloaded] before the Arduino itself can be programmed.
 
*The Arduino software needs to be [http://arduino.cc/en/Main/Software 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 (see below).
+
*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 the Arduino program that reads and prints a photocell reading from a pin (currently programmed to be pin13) every millisecond.
 
**[[Media:The_final_project.ino]]
 
**[[Media:The_final_project.ino]]
 +
*This is a slightly modified version of the previous program, which hopefully can also identify which pin is being used.
 +
**[[Media:Final_project_pin_identifier.ino]]
  
 
===Source Code===
 
===Source Code===
Line 34: Line 45:
 
* Source code for actually measuring the light-intensity from the light sensor on the Arduino Uno (Gray).
 
* Source code for actually measuring the light-intensity from the light sensor on the Arduino Uno (Gray).
 
** [[Media:ArduinoApp.zip]]
 
** [[Media:ArduinoApp.zip]]
*A windows C++ code (visual studio 2010) that prints the Arduino commands (Kubasak).  
+
*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.  
This program includes the assumption that the Arduino is attached to the COM3 serial port.  
+
 
** [[Media:zspace-controller.zip]]  
 
** [[Media:zspace-controller.zip]]  
  
 
===Developers===
 
===Developers===
'''Software Developer'''
+
'''Software Developers'''
* Thomas Gray
+
 
* Matthew Kubasak
 
* Matthew Kubasak
 +
* Thomas Gray
  
 
'''Project Advisor'''
 
'''Project Advisor'''
 
* Jurgen Schulze
 
* Jurgen Schulze

Latest revision as of 11:50, 30 January 2014

Contents

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.

Milestones

  • 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.

Hardware

  • 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.

Developers

Software Developers

  • Matthew Kubasak
  • Thomas Gray

Project Advisor

  • Jurgen Schulze