The KeyframeMoCo System

Camera motion control systems tend to split into two main groups namely PC based systems, which tend to not be very portable and reliant on complex graphical interfaces, and smaller scale solutions that provide limited functionality in terms of their ability to centrally orchestrate complex multi-faceted and multi axis moves.

The appearance of the new ARM based processors has now enabled a new era. The Keyframe MoCo controller is one of the first of these new ARM processor based MoCo solutions. It attempts to deliver the orchestration of multiple axis moves in a power efficient and highly portable unit.

This move took two key frames to define. The control elements are pan, tilt and slide (zoom was added later):


This sequence was also DOF stacked to give the very high "freeze frame" definition.

At the heart of the controller is a Raspberry Pi (above). This dealing with the complex maths and the orchestration of the move.

This video shows the KeyframeMoCo controller working. It is executing a three key frame move (intermediate pause).


Key features:

Very Simple Interface - intuitive LCD Display and button input
Fully key framed moves - centrally orchestrated defined via multi axis key frame placement
4-8 axes or elements of control - open circuit stepper based
Integrated drivers - simple 4 wire connections direct to motors
Small and lightweight - fits into that backpack Low power consumption - 5v/12v

How it works

The User Interface

The user interface is very intuitive. The software programme is sequential and very easy to understand. There are no complex menus. To initiate the unit and the programme you simply switch on the 5v power supply. Once the system has done its internal checks it will confirm that it is ready and seek responses via button input. There are 4 buttons for axis control/time input and a single "confirm" button. To abandon or re-initiate a capture sequence you simply switch off the battery and turn it on again. That's about it.

You use Live View to compose and preview.

Composing a Move

To compose a multi axis move you simply move the camera to the orientations you want to hit in the move (the key frames) and define the time to get there. You do this sequentially moving from key frame to key frame defining the time to get to the new key frame from the last. It's very much like painting a picture. The time element you are inputting is the eventual rendered video timing at 30fps.

The system then analyses the recorded key frame orientations and it develops frame placements between the key frames to achieve a smooth move at 30fps. The frame placements are calculated to achieve the video timings. How it smooths the move depends on how you input the key frames.

You have two modes of definition associated with a key frame namely a "hold" and a "pass-through". A hold will reduce speed and pause the move on the key frame for the period specified. When a hold is used the trajectory is a straight move to that key frame. Using holds you can move from one key frame to another at will. The speed ramps up and down on each axis to hit the next key frame at exactly the same time as the rest. It delivers a seamless coordinated move in which you can flex as many elements as you want including zoom, focus, aperture etc. As long as the control element is stepper based it will handle it without problem. You can link as many key frame hold points as you wish to produce a series of complex transitions.

A pass-through key frame, on the other hand, is what it says. It's a key frame that the overall trajectory passes through on the way to the next. Remember potentially up to eight elements can be controlled in unison from key frame to key frame. How you use these key frames is interesting. Because you are able to place as many on the trajectory as you want, you can control "where", "how" and "when" the camera is pointing at any point in time. By careful placement of key frames therefore you can control speed and other control elements across the complete move if you consider timings carefully. Because the speed profile is smoothed over the successive key frames you can regulate speed. If you adjust focus over successive key frames then focus transition will be smoothed. Placing key frames closer together and/or making the inter-frame time longer decelerates the move. Put key frames further apart with less time and the move speeds up. Likewise with the other elements of control. The whole move is smoothed on all axes from key frame to key frame so you have ultimate control over each element along the trajectory.

It is actually like painting a picture but you are doing it over multiple axes/elements of control. All are coordinated together in unison to hit the key frames. You can have as many key frames as you want. They all combine to make one move.

Take a look at this video. It shows hold and pass-through key framed moves with the speed and focus being flexed:


This gives a lot of control ..... and remember ..... it works across all axes/elements of control eg. Dolly, pan, tilt, roll, focus, zoom, aperture etc. The combinations of moves/transitions are endless.

No more simple A to B moves. Now you have real movement.


Once you have fully defined the move via key frames you are asked if you want to preview the move. Preview happens in realtime. The rig returns to the start point and executes he move forward and then in reverse. You can check your move in Live View.

Preparing for Capture

Once the move is ready you are asked to input the interval. At this point you have to make the decision re camera settings. It is best to test lighting conditions at each key frame and to gauge the best settings for the overall move. It is at this point you set the camera in terms of shutter speed and aperture. Once this is done you set the lapse interval accordingly. The system will allocate a settle time. One this is done capture will start.


There is nothing to do during this phase except monitor capture. Once capture is complete the system will shut down. To restart switch off the battery and re-initiate the programme.,/>


This unit has been designed to be as portable as possible. A number of compromises have therefore been made which need to be mentioned:

This is a open circuit stepper based system.
The accuracy of step and smoothness of movement on any given system will depend on the stepping hardware and how it is matched to the stepper drivers.
The stepper drivers are rated at 1 amp but the overall current can be adjusted.

To ensure good power management and smooth running it is best to limit current to what is required on each axis. In tuning your system in this way you can optimise your system and remove most issues. The difference between a well tuned system and one that is not is profound. Resonance issues can also be removed this way.

The way the system works gives a great deal of flexibility but it can be frisky if you programme incorrectly. If you programme a fast move to a key frame and define a subsequent key frame close by then it will move past the first key frame smoothly and reverse to hit he second. The point I am making is that the key frames do not set the boundaries of the move. They simply define "way points". You have to think of the move as a whole. I mention this because there are no limits to movement set in this system. The controller can therefore move your rig at will with no limit. It will stick within the boundaries set by the move but you must ensure that the rig can overshoot a bit if it needs to. If you are concerned over this at all then fit limit switches to your rig that have he ability to cut the power supply to the drivers.


At the heart of the unit is an RPI. This uses a ARM1176JZF-S 700 MHz processor with 512MB of ram and it provides more than enough power to enable the quick moving maths required to calculate multi axis moves. The base RPI has been supplemented with some purpose built electronics and a LCD/button input shield.

The unit uses the RPI GPIO to drive BED Quadstepper units which provides 4/8 axes of control. Camera trigger is enabled via an optocoupler located on the bespoke intermediate board. The unit has to be close coupled to enable the speeds required.



The RPI runs a modified version of Linux which has been supplemented with bespoke modules and the Keyframe MoCo programme. These have been combined to make a fully embedded system.

The Keyframe MoCo programme runs automatically when connect power to the unit.

The full operating system and programme is loaded onto an 8Gig SD card. In this way the you can have programme variants.