Brooklyn Research Fellowship

During a fellowship at Brooklyn Research, I came across a dusty steel platform, replete with motors, linkages, multipin connectors and a power supply large enough to pique my interest. It turned out to be a 3 degree of freedom (DOF) motion platform which – lacking both a hardware and software interface – was sitting entirely unused. This video is a brief overview of the work I did (along with Brooklyn Research’s support) to resurrect this motion platform and provide an extensible, reusable software library for its ongoing use:

If you’re interested in more information on the project, keep reading:

What is a motion platform?

A motion platform is a platform which moves. A motion platform is a tool to increase immersion in interactive experiences by providing motion cues which are experienced by an audience member as movement. The most common uses of motion platforms are flight simulators, but when used with virtual reality headsets, they provide an increased immersion into even the most experimental forms of simulation (bird-nest simulator, giant-wave-surfing simulator, etc.) Wouldn’t it be lovely to be able to insert a level of immersion normally reserved for NASA-spec flight simulators into more artistic and out-there virtual reality experiences?

How to control this motion platform?

Lacking a clear approach or documentation, I started by photographing and researching each part of the system individually. Starting with motors, gearboxes, rotary encoders and working my way to the motor controllers, the power supply and the phidget hardware interface that had been provided for us. This resulted in a lot of photos, model numbers, datasheets, and a few lovely looking product photos such as this:

With this information, I proceeded to build a software library in C# for the Unity Real-Time Development Environment to allow me to control this platform. It didn’t take long after gaining control over the motors that I realized that safety and comfort limitations were a priority. This platform is spec’d to move a > 500 lb load at 60 degrees/second, a mildly terrifying level of power for a homebrewed motion control library:

My approach in building this library, and especially in designing safety and comfort limitations, was to follow the lead of a whole host of academic papers and open codebases written on the topic. While these sources tend to use a complex math-y language to describe their work, a much more naive (and presumably less efficient) approach also seemed fairly effective.