FINAL || Instructor: Benedetta Piantella || Collaborators: Michael Simpson
We began our final project under the pretense that we wanted to pursue a project that incorporated our shared passion for architectural design. We imagined projects that would allow us to carve out a physical space using movement and gestures. As we delved deeper into what these idea might look like in practice, we quickly realized that the level of abstraction created by the physical input made the resulting models too difficult for the user to keep mental track.
From there, we began thinking about drawing tools which leveraged existing modes of architectural graphic technique to allow a user the ability to draw three dimensional spaces in a 3D space. The device we envisioned allowed the user to create drawings in plan and elevation which would then be integrated to create a 3D projection of the resulting space. However, as we continued to pursue this idea we began to realize that the limitations of this kind of system outweighed the benefits.
These disparities made it clear to us that the adoption of abstract interfaces necessitate a display system capable of conveying complex volume data. To realize any of the ideas we wished to pursue we would need a volumetric display capable of presenting real-time data that is highly dynamic and also high resolution. After these revelations and some initial research surveying the landscape of volumetric display, we decided to dedicate our final project to the pursuit of this technology.
Our initial thought was to create a display that would use strips of individually addressable LEDs and spin these LEDs around a center axle. We based this idea on our existing exposure to the technique of Persistence of Vision (PoV) where the blink rate of a light in motion creates a light field, with a fast enough rate of motion, the light field created by this fools our eyes to integrate it into a persistent image.
Before starting to design our own PoV system, Michael conducted extensive precedent studies to survey the state of the art. He quickly determined that there had been many attempts to create volumetric displays using PoV. Below is a table of summarizing the results of these investigations.
We both found that the Interactive 360 Degree Light Field Display created at the University of Southern California’s ICT Graphics Lab offered the most compelling representation. A goal of that project was to create a display using commercially available devices. Unfortunately, as we began to pursue a similar implementation we hit a major obstacle in trying to understand how to achieve the high projection frame rate (4800hz) necessary for that device. Their implementation used a standard DLP projector but with a modified (hardware) driver that used an FPGA device to act as a middle-man between a graphics card’s 24-bit HDMI signal and the binary (1-bit) colorless frames which are actually displayed by the Digital Micro-mirror Device (DMD) inside all DLP Projectors. Despite understanding the process by which University of University of Southern California’s ICT Graphics Lab employed, implementation was not a straightforward task and implementing the FPGA was actually something outside the scope of our project.
At this point, we decided it was time to settle on a project design and to pursue that design with the remaining time we had. Michael had previously worked with LED matrices and proposed that a low-pitch (meaning, higher density of pixels) matrix spinning between 900 and 1300 RPM would be able to create the PoV effect we had been looking for.
The final design takes two 32×64 LED matrix with 3mm pitch (from adafruit) and chains them together to create a single 64×64 LED matrix. The combined matrix is mounted on a center axle which is attached to a motor shaft. During the course of our investigation, we realized that a limitation of this sort of design (which was circumvented by the USC-ICT project) is that it requires power and data be provided to a spinning platform. This limitation can trivially be overcome at lower speeds by use of a slip ring. However, at speeds greater than 300 rpm, things start to become more difficult due to the design of the cheaper “capsule” style slip rings. While speaking to Ben Light, we were introduced to another style of slip ring known as a through-bore.
Through-Bore Slip Ring vs Capsule Slip Ring: Through-bore slip rings have a hole in the middle of the ring with set screws that are intended to be locked into place around a motor’s shaft. This style of slip ring is specifically intended for the purpose of our project and are rated to operate even at speeds much higher than we intended. This style is not a readily available product in most stores and must be purchased directly from one of the manufacturer’s. As we believed this would be the key to enabling our project to work as intended, we made the decision to purchase one of these. Unfortunately, despite our being guaranteed of next day delivery, the slip ring arrived one day late- causing us to be unable to implement the project before our class. But, now with the ring in hand, we will continue to realize the project and will post again with results of the fabrication.
Communication with the Displays: Aside from the fabrication, we also needed software to communicate with the displays and also to allow them to be interactive. Our goal was to create an installation where the user would be able to control the pixels on the spinning display by means of a joystick and linear potentiometers for adjusting values like color, blink rate, along with a standard potentiometer for adjusting the speed of rotation.
A Raspberry Pi was used to communicate with the displays using C (Python was also an option) via adafruit’s gfx libraries. However, for a more interactive experience, the arduino mega was used to host a sketch that enabled control of the displays over serial communication. The sketch was derived from an old (and partially broken) SparkFun sketch which was meant for smaller displays. After making some adjustments to the sketch it was able to run on the mega with matrices in a 64×64 chained arrangement providing a way to interactively manipulate the pixel information. This interface would allow us to move a cursor around the displays and draw points, lines, rectangles, ellipses, polygons, and/or text on-demand. This component of the project is fully working but could not be demonstrated in PoV fashion due to the lack of a fast rotating platform.
Images above show successful use of controlling motor speed, successful communication to two LED Matrix displays with a combination of Raspberry Pi and Arduino Mega, and physical components for the first model fabricated with the the CNC mill and laser cutter.Read More