Difference between revisions of "Zspace Linux Fix"
From Immersive Visualization Lab Wiki
(16 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 language reference to links | + | *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. | *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. | *[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. | *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 15: | 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. | |
− | + | ||
− | * | + | |
− | + | ||
− | + | ||
− | + | ||
===Hardware=== | ===Hardware=== | ||
− | *The Arduino itself, attached to the computer using a COM port. | + | *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 | + | *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 | + | *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 43: | Line 49: | ||
===Developers=== | ===Developers=== | ||
− | '''Software | + | '''Software Developers''' |
− | + | ||
* 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