ECE497 Projecting with Sense

From eLinux.org
Revision as of 02:29, 17 May 2011 by Lesterwm (talk | contribs) (Highlights)
Jump to: navigation, search


Team members: Mike Lester

Executive Summary

TI's BeagleBoard and Pico Projector are a powerful combination. Using the Pico Projector to display output from the BeagleBoard yields a large picture from a very small package. However, the Pico's small size and weight mean that it does not often sit level, resulting in a skewed projection image. This project aims to use a 3-axis accelerometer mounted on the BeagleBoard to auto-correct this distortion, resulting in a correct projection even when the Pico Projector is not lying flat.

Currently, the BeagleBoard can read data from the accelerometer and compute its, and the Pico's, orientation. However, due to the difficulty of getting the 3D SDK running on the host computer, the front-end that would use this data to auto-correct the projection is not yet working.

Once that hurdle is cleared, it should be relatively easy to use OpenGL ES to de-skew the projection in real-time. One other problem is handling a distortion known as keystoning, which results from rotations that are not perpendicular to the projection surface. In order to account and correct for this, we would need to know the distance between the Pico and the projection surface. This can be circumvented by having the user manually hold the Pico in the correct position, "marking" that position (perhaps by pressing the User button), and then placing the Pico on its resting surface.

Instillation Instructions

In order to install the project:

  • First, acquire a 3-axis accelerometer. We used an ADXL345 on a breakout board from SparkFun.

NOTE: the code for this project is hardware specific. In order to use it, you'll need to use the ADXL345

  • Connect the ADXL345 to the BeagleBoard using the i2c interface. We did this by taking advantage of the prototyping area on the BeagleBoard Trainer which exposes the i2c interface.
  • Compile on the BeagleBoard with:
gcc ADXL345.c demo.c -o demo

User Instructions

To run the project, simply run the executable we built at the end of the installation phase:

./demo

Highlights

One of the highlights of this project is that it shows how easy it is to add extra devices to the already powerful BeagleBoard. It integrates the use of the Pico Project, 3-axis acceleromter, Beagle Trainer, and the BeagleBoard itself. The Beagle and Pico's size and portability make them great candidates for extra sensory peripherals like an accelerometer, and the Beagle Trainer makes them easy to prototype. This project is just a single example of what can be done when the Beagle can sense its environment.

Theory of Operation

Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.

Work Breakdown

List the major tasks in your project and who did what.

Also list here what doesn't work yet and when you think it will be finished and who is finishing it.

Conclusions

Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.