ShAKY (SHift Angle KentuckY)
H. G. Dietz
http://aggregate.org/hankd/
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:
@techreport{shaky20190628,
author={Henry Gordon Dietz},
title={{ShAKY: SHift Angle KentuckY}},
month={July},
day={8},
year={2019},
institution={University of Kentucky},
howpublished={Aggregate.Org online technical report},
URL={http://aggregate.org/DIT/SHAKY/}
}
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:
-
-i#
-
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.
-
-p#
-
Set the port number for the USB serial connection to
/dev/ttyACM#, with default of
/dev/ttyACM0.
-
-s#
-
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.
-
-x#
-
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 only thing set in stone is our name.