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.