ShAKY (SHift Angle KentuckY)

H. G. Dietz

Department of Electrical and Computer Engineering
Center for Visualization & Virtual Environments
University of Kentucky, Lexington, KY 40506-0046

Original June 28, 2019, Latest Update February 11, 2020

This document should be cited using something like the bibtex entry:

author={Henry Gordon Dietz},
title={{ShAKY: SHift Angle KentuckY}},
institution={University of Kentucky},
howpublished={Aggregate.Org online technical report},

The ShAKY Paper

The primary publication decribing ShAKY was "Characterization of Camera Shake," by Henry Dietz, William Davis, and Paul Eberhart, and presented at IS&T Electronic Imaging 2020. A preprint version is posted here. The slides for this paper are also posted here.

InShAKY Software

The current version of InShAKY, the open-source software to run inside the ShAKY Arduino, is InShAKY20200207.ino. It can be compiled and installed using the usual Arduino development GUI.

ShAKY Host Software

The current version of hostshaky.c, the open-source software to run on the USB-connected Linux host to ShAKY, is the 20200209 release version: hostshaky.c. To compile it:

cc hostshaky.c -o hostshaky -lm

The command line options are:

Request incremental sensor updates. Normally, a single record will be sent for both accelerometer and gyroscope data, even including magnetometer data if it is ready. Incremental updates only contain data from at most one type of sensor, sent as soon as that data is ready. Incremental updates slightly more than double the sample rate (to a little over 1000Hz), but mean that there may be a bit more temporal skew between accelerometer and gyroscope samples. Quality of the waveform seems about the same by default or -i, which is the same as -i1. Larger # values make gyroscope sampling happen that many times as often as accelerometer sampling, so -i2 would sample the gyroscopes twice as often as the accelerometer... which doesn't seem to help sample speed nor waveform quality.
Set the port number for the USB serial connection to /dev/ttyACM#, with default of /dev/ttyACM0.
Set the shutter speed to # seconds. The time can either be a decimal fraction like 0.5 or a "1/" notation like 1/2. If a shutter speed is specified, hostshaky will collect data for the exposure interval, and use gnuplot to format, a graph each time the Xsync is detected. If the shutter speed is 0 (the default), hostshaky will simply stream the data to stdout as text... be warned that the data rate cannot be sustained very long if stdout is a console rather than a file.
Set X flash synchronization speed (the shutter curtain traversal time) to # seconds. The time can either be a decimal fraction like 0.5 or a "1/" notation like 1/2. This is used to correct for the fact that the Xsync signal comes when the first curtain of a focal-plane shutter is fully open, which is somewhat after the exposure actually began. The default value is 0.

ShAKY 3D-Printable Package

The original version of ShAKY housing was intended to be paired with Canon PowerShot ELPH 160, 180, and similar. It is posted as Thingiverse Thing 3665981.

The generic version, which includes the Xsync port, is Thingiverse Thing 4157345.

Shake Testing Protocol

We have a simple WWW form that creates a QR code with the key information for our study. That QR code is photographed on a display along with a pattern that allows automated measurement of camera shake.

The Aggregate. The only thing set in stone is our name.