Virsix VR Cube

I joined Virsix as their lead engineer to help bring VR to the public.

The VR Cube is an unattended virtual reality installation for arcades and family entertainment centers. The cube provides a self-contained curated experience that is integrated with payment processing systems, dispenses redemption tickets, and has attraction lighting that is driven by in-game events. 

The product is the culmination of many iterations of cable management ruggedization of consumer-grade hardware.

Flatland unicycle frame

Over the years I've ridden basically every unicycle part and have gotten spoiled. There were a list of features that I wanted to have in a frame, so I made my own (designed together with Jarin Erickson).

Words later, only visuals for now. But you get the point.

360 Camera Stabilization

Sometimes 360 videos suck. Two of the reasons why things get technically difficult are:

1. Parallax – things are broken

2. Unwanted rotation – and now you feel sick.

The distances between the entrance pupils of the lenses in the 360 camera array result in non-matching perspectives at the seams. The seams can be positioned so that pixels at a certain depth appear to be continuous, but the distortion has to change to accommodate depth changes. So if the camera is stationary and nothing is crossing between cameras, everything’s great. Otherwise you’re either about to spend a lot of time and effort, or things will end up looking messed up for various reasons.

Moving the camera is dangerous because experiencing a shaky or turny video in a head mounted display can give you a headache or motion sickness. Since the full sphere is captured the video can be rotated in post to lock the perspective, but you’re left with some artifacts.

  • motion blur – If the camera whip pans, everything gets blurry. Why would you whip pan a 360 camera? In POV sports or any head mounted applications, the camera can quickly get turned around.

  • color, distortion and exposure differences – Camera lenses and sensors are all slightly different, and allowing the camera to rotate results in just the inconsistencies moving around in a stabilized video.

  • moving seams – Without a constant automatic depth sensing seam correction, when a shaky video is taken the seam gets pulled around areas of different depths. If that video is stabilized, then the stitch errors still fly around the stationary world.

There few mechanical stabilization options, and like usual no solution is good for everything. Since active gimbals are now everywhere and the parts are easy to find, I decided to make a general stabilized platform that any small camera could be mounted to opposed to building a specific rig around a stabilizer. After a few design revisions it ended up looking like this:

There are two brushless gimbal motors that control the pitch and roll rotation of the platform, there’s also a third motor on top to control the yaw.


  • SimpleBGC gimbal controller from BaseCamElectronics

  • Linkages and threaded rod from ServoCity

  • DYS GM60-80T Brushless Gimbal Motor HobbyKing (though they don’t have it anymore)

  • Tiger GB54-1 Brushless Gimbal Motor (x 2) from getfpv

  • Misc hardware from McMaster

  • 3D printer + time

Typical gimbal geometry usually puts the stabilizer in view of some cameras, so this way all of the gear is hidden in a hole at the bottom. The intent was to make it as low profile as possible but with enough range of motion to be useful.

The top platform above should theoretically stay level, and the upper motor can then keep constant heading about the fixed vertical axis.

The first iteration used some beefy u-joint that I probably bought on amazon, but for subsequent versions I decided to just print the u-joint as part of it (because if you only have a hammer, everything looks like a nail).

The two motors are attached to adjacent sides of the cube. A third side has mounting holes to attach the controller pcb. All wires are routed through the inside of the cube.

The bushings are pressed into the printed pieces. The piece above press fits into the top of the cube.

Printed arms link ball joint rods to the motor.

Coming together…

There are 2 IMUs onboard, one is under the arm of the pitch/roll stabilized-platform, and the the other is on the top of the yaw-stabilized part. Tuning the PID parameters required a lot of trial and error, and could still be optimized.

Here’s an early test (December 11, 2015). I didn’t have a 360 camera (or enough gopros to make one), so I taped 4 longboard wheels together and firmly attached them to the top motor with gravity.

(Warning: loud 3d printer in background)

Couple unloaded demos:

Carrying 4 GoPros (would require a lens mod to stitch, and you’d probably see a bit of the stabilizer):

And with 6:

Conclusion: the printed stabilizer isn’t up for production use, but it's a successful proof of concept. This could be scaled up to support an existing camera, though for something of this scale I would opt to build a rig around a more conventional gimbal geometry so that the camera can be manipulated about its center of gravity.

Remote GoPro Monitor

360 video production combines such a weird combination of requirements that the camera that often best meets the demands is the standard consumer GoPro. Technically the cameras do the thing, but they are missing the whole category of features that make them suitable for real production.

A situation is created where you have a small pile of often unreliable action cameras and you have to be off hiding while rolling, so if a camera dies, overheats or freezes you wouldn't know until it is too late. 

The goal of this project was to build a non-invasive tool to alleviate some of the pain points associated with doing professional production with GoPros. More specifically...

  • Make individual video feeds accessible on a local network
  • Generate and record LTC timecode on one audio channel of each camera
  • External mic input (up to one channel per camera)
  • Universal permanent and portable power options

There are two main subsystems:

  1. A cylindrical handle that mounts directly to the rig that plugs into each of the GoPro's usb ports for power, video out and audio in
  2. A custom pelican case that houses the power system, local monitor and networking gear. 

The fun part of designing all aspects of something is that the PCB design and enclosure design can be done at the same time, and making changes doesn't create work for anyone else. 

The enclosure had to be as low profile as possible so that it can hide in the seam between two cameras. One side has an interface that attaches to the camera, and the other end has a threaded insert that can be mounted to a tripod. The cables that run back to the pelican case are oriented downward from inside of a pocket so they also stay out of the camera's view.

On the side are four stereo 1/8" jacks for up to 8 channels of external audio input. The audio signal routing is set from a dip switch that's accessible behind a removable door. Through the bottom are two CAT5 cables carrying the video signals, an 1/8" audio jack for external timecode, and a locking power connector. 

The enclosure is held together with captive nuts that are press fit into the 3d printed structure. Here's the story in picture form:

Receiving new PCBs is the greatest.


Those exposed wires were soldered to my GoPro USB breakouts to access all of the camera features.

Half of the pelican case holds laser cut foam designed to hold all of the accessible components, the other half houses an assembly of all the necessary circuit boards to do everything. There were quite a few pieces so I modeled them all, arranged them in layers and laser cut stackable mounting plates. 


You can flip open the case and check out all the feeds on the internal monitor, or you can connect to the local network and view the feeds in-browser. For power there's an Anton Bauer battery mount on the back so it can be mobile. Alternatively there's an IEC plug for a standard AC power cable if it has to be plugged into the wall. 

I should have a triumphant "Finished!" shot, but apparently I don't.

Tiny GoPro USB Breakout


GoPro Hero 3 & 4 cameras use a special 10 pin mini USB that can enable extra functions. The usb connectors are sold by and they’ve conveniently documented the pinout. A resistor between pin 4 and ground tells the camera which accessory has been plugged in.

ID resistor values and corresponding features:

33kOhm – two mic channels in and composite video out

100kOhm – composite video out + audio out

330kOhm – two mic channels in

A 33k resistor allows GoPro Hero 3 cameras to be powered over usb while recording external audio and outputting video, but the Hero 4 switches to the internal microphone if you’re also injecting power over usb. The Hero 4 will only begin outputting video without external power, but once the video feed has started you can then connect power and it keeps working.

I designed this little board to break out the mic channels, video out and power. It is basically just a tiny version of GoPro’s $40 combo cable.

Schematic and layout are super simple:

The connector body has protrusions that are supposed to be through-hole reinforcements, but I made them just overhang the edge of the board to be secured with a bit of epoxy to leave the micro SD card as exposed as possible.

You can download the EagleCAD pcb files here on BitBucket.

360 Video | USOC & Samsung

US Olympic Committee –  Samsung  – Wasserman Experience

Samsung presented a series of VR experiences as part of Team USA’s Road To Rio tour that we (Two Bit Circus VR) created with 2016 US Olympic hopefuls. The experiences feature pole vaulting with Mary Saxer, 10m diving with David Boudia, beach volleyball with Lauren Fendrick and Brooke Sweat, and gymnastics with John Orozco.

We focused on getting shots that give the viewer a novel perspective, like free falling alongside Boudia as he does an inward 3.5 front flip into the pool.

Mary Saxer - Pole Vault

Mary Saxer - Pole Vault

David Boudia – 10m Diving

David Boudia – 10m Diving

Brooke Sweat & Lauren Fendrick – Beach Volleyball

Brooke Sweat & Lauren Fendrick – Beach Volleyball

John Orozco – Gymastics

John Orozco – Gymastics

Four 2-minute long experiences were exclusively shown on the Road to Rio tour, and four additional experiences are viewable in MilkVR.

LED Unicycle

I’ve been making LED rings for my unicycle since 2013. Instead of attaching an LED strip along the inner wall of the rim, I decided that the LEDs should point outward for the best side visibility.

The first prototype was made out of an LPD8806 strip that I cut between every two pixels and soldered into a circle. I then painfully pushed it through a heat shrink tube to protect it. This design had two rings, one for each side of the rim.

The first approach worked pretty well, but the rings were fragile with so many rigid solder joints and I was constantly having to slice the heat shrink open to repair cracked connections. I decided to design a slightly smaller rigid double sided PCB ring that can live just inside the rim.

The second iteration shown above is a 5 segment ring with 60 WS2812 pixels per side. I designed one section to hold all of the controller-related stuff. This version used a teensy 3.1 microcontroller, SD card adapteradafruit 9-dof breakout, and a mic for audio reactivity. It ended up not being a good place for a microphone because I pretty quickly kicked it and broke it off.


I then decided to integrate all of the electronics into the ring between the LEDs. This version was designed to have an atmega32u4 microcontroller, battery charger, boost converter, IR receiver, bluetoothLE, mpu6050 IMU. Not long after I finished this version, APA102 LEDs became available and they’re able to be updated much faster so I redesigned it again to use them instead.

Sarah Smith Coasting - Photo by Brian Oley

Sarah Smith Coasting - Photo by Brian Oley

360 Video | NBA & Samsung

NBA  – Samsung – Wasserman Experience

Leading up to the 2015 NBA all-star game, we created a series of experiences that take you on the court for a practice session with JJ Redick, Kelly Olynick, Brian Scalabrine, Will Conry and Marcus Smart.

These experiences include a lot of action close to the camera as well as head mounted first person shots. Editing the experiences allowed me to experiment with directing attention to effectively and naturally use the 360 space. One challenge is that while the viewer can and should be free to look around and explore, there is a single point that is the most interesting, in this case it is the ball and it’s always on the move. Every movement has to flow smoothly from the previous action and be oriented optimally so that the viewer doesn’t get lost and confused.

These experiences are viewable in Samsung’s MilkVR if you have a GearVR. Spinning chair recommended.

360 Video | NFL & Verizon

NFL – Verizon – Wasserman Experience

Together with the team at Two Bit Circus VR, I helped create a first-person NFL experience for a Verizon installation in downtown Phoenix for Superbowl XLIX.

To achieve the point of view of a football player, the camera had to be smoothly and quickly moved through a choreographed play without inducing motion sickness or seeing any gear. I designed a low profile mounting system that allowed the camera to be transported at running-speed down the field while hiding a vehicle and operator in the smallest possible footprint directly below.

The physical installation was the centerpiece of the Verizon Power House. Four experience “pods” contained oversized football helmets packed with surround sound speakers. The helmets were lowered over guests’ heads while they wore a GearVR and stood on top of haptic floor plates that were driven by transducers. I made a system that allowed operators to press a single button to simultaneously trigger the multi-channel audio in sync with a bluetooth signal to start video playback on the headset.



One of the pods was then installed as an in-store GearVR demo flagship Verizon store on Third Street in Santa Monica.

STEAM Carnival electronics and stuff

A modern take on the traveling circus, STEAM Carnival is an entertainment showcase using high-tech amusement and project-based kits to inspire kids of all ages about science, technology, engineering, art and math.
— Two Bit Circus

I was part of the core team at Two Bit Circus that built interactive entertainment for the first STEAM Carnival in October 2014.

Two Bit has been building games around walls of buttons since the beginning, and the hardware and software have been constantly evolving. I worked on a couple iterations of the board that connect the main controller to the the buttons and LEDs.

The blue PCB below connects to a raspberry pi’s GPIO headers and has 4 x 16 channel i2c IO expanders. Half of them are used as inputs to read the button states and the other half go to darlington transistor arrays to drive the LEDs inside the buttons.

This is a controller that is part of a group game built around the Intel Edison. I worked with Aaron Thomen to design and build these pretty quickly. The puck-shaped top is mounted to a spring connected to a handle. The guts are simple, there’s a tilt switch and three big LEDs. The Edisons are all on a wifi network so an app on computer defines the gameplay.

We sourced an acrylic tube, I designed the board to fit and laser cut the rest of the structure. Aaron designed the handle in a way that the spring tension could be adjusted.

This is a shield I made for an Intel Galileo (or arduino uno) that allow it to be used like a Makey Makey. Each pad on the board is pulled up to the controller’s operating voltage through a high value resistor, so the controller can detect when something more conductive (like your skin) bridges the button to ground through the bottom stripe.

This is just a big pile of laser pointers zip tied to laser cut mounts that are bolted to truss clamps. Everyone likes lasers.

The above board was used in a few games, it holds a teensy 3.1 microcontroller and breaks out data pins to multiple devices that can be plugged in with rj12 phone jacks. There are buffer chips to bump up the teensy’s 3.3V outputs to 5V for controlling ws2812 LEDs and also voltage dividers that can be configured if necessary. It’s a convenient way to interface a variety of hardware with a computer over serial.

The game of musical chairs above was the first intended use case for the board, the chairs have addressable LEDs inside and force sensitive resistors under the cushions to detect where people are sitting. The photo under that shows a game controlled by wooden ship wheels connected to encoders that used the same board.

SpaceX Media

Top photo credit: NASA, Video credit: SpaceX

I shot, edited and managed media for SpaceX from the first flight of Dragon in 2010 through the second commercial ISS resupply mission in 2012. I created public and internal marketing content including test and mission recaps, presentation materials, and day-to-day documentation of the inner workings of a rocket factory.

My work has been featured on most major news sites, presented to Congress by Elon Musk, and contributed to SpaceX’s Commercial Crew Development proposal to NASA.