Go Back

  • Galactic Autoquarium

    Galactic Autoquarium was a project envisioned by one of my close colleagues, F. Ria Khan. Meow Wolf, the art installation in (at the time) Santa Fe, NM and Las Vegas, NV, was looking for local artists to contribute to Convergence Station, it’s (again, at the time) newest location. A Request for Proposals was distributed around the BTU Lab, so a cohort of us from the lab submitted two proposals. To our surprise one of them was selected, that being Galactic Autoquarium.

    Meow Wolf as a whole sees their exhibits as fully immersive, and our’s was no different. Galactic Autoquarium was envisioned as an apartment building not only of the far future, but of distant dimensions. Robotic fish deities that oversee the universe make their homes here, and the room as a whole should reflect that. The robotic fish themselves were actual working animatronics suspended in mineral oil, based on previous robofish projects Ria had done as part of their graduate program.

    For more info about the fish themselves, I highly recommend checking out their page about it on their website: https://www.iamfriak.com/galactic-autoquarium-meow-wolf-denver

    Much of my work was done initially doing fabrication; hanging reflective sheets on the walls, constructing the framework for the ceiling decoration, running cabling, and assisting with the infinity mirror located in the corner ceiling.

    Towards the end of the project, my role transitioned to be more focused on programming for the room. We were using Teensy microcontrollers to control the lights around the domes and the fish themselves, as well as Raspberry Pi’s for the call boxes located throughout the room. The Teensy was lots of fun to work with since it was cheap enough to have a couple laying around for testing. In addition, seeing any changes very obviously (through the light strips) meant revisions on that code had a quick turnaround.

    The Raspberry Pis were a little more difficult to work with, but we needed the extra power for what we were trying to accomplish. We wanted the boxes to react to a button push and play a pre-recorded riddle. In order to make sure the riddle was accessible to everyone, we also wanted a text display to play captions alongside the audio. This required some form of IO header, a display output, audio output, and enough memory to stream a few dozen seconds of MP3 at a time. The Raspberry Pi’s GPIO pins provided the IO header, and output to the LCD display, it’s 3.5mm jack made it incredibly simple to replace blown speakers, and the Pi had more than enough memory to do what we needed. The downside was that we now had to maintain full operating systems, rather than just microcontroller code.

    We tried to simplify the problem as much as possible by writing all of our needed code in a single Python script, using a virtual environment with all it’s dependencies so it could be quickly duplicated across all the boxes; did I mention there were 5? This Python script was added to the startup script of the Pis so it would launch as soon as they had power. The script itself would first see which Pi it was installed on, select the correct audio and subtitle package for that Pi, then enter a ‘waiting’ mode. The waiting mode would turn on the light for the push button, signaling to visitors that it was ready to activate. When pressed it would play the audio file, and begin streaming the subtitles to the LCD display in time with the words. Once the audio was completed, the box would enter a “disabled” state, in which the button light would be off, and the display would indicate that the fish was away. After a random-but-bounded amount of time, the box would re-enter the ‘waiting’ state, ready to be activated again.

    The final state of the boxes was dependent on a keypad located in the center of the room. When the correct code was entered, all of the boxes would activate at once and play a congratulatory message for solving the riddle. This particular state required communication from all the devices in the room. The keypad would send signals to all of the boxes, the Teensy running the lights, and the projector in the room at the same time. This in particular required a lot of non-blocking checking being done, in order to allow all of these devices to respond to the success message in a timely fashion while still completing their normal duties.

    This project was tons of fun, and I learned so much. Even disregarding all of that, having my work in a permanent installation feels incredibly cool, and fills me with pride to have been a part of it.