tim savas

sorry bro
sorry bro

radieye

Look what we have here. It's a table––that turns. It's a "turntable." [studio audience erupts in applause]

Radieye is a tripod-mounted, programmable turntable with a few distinct modes of operation. First, it can be used to add rotary motion to time lapse photography sequences. For instance, filming a flower grow while it gradually "spins" in front of the camera, à la The Matrix.

sorry bro

The fun doesn't stop there. Radieye can also be used as a "reverse 3D printer," whereby a set of photos are taken 360 degrees about an object, then patched together via 3D modeling software in post. So, get hip to this, if a 3D printer translates a 3D illustrated object into a physical one, Radieye does the reverse, turning a physical object into a 3D model.

I started developing Radieye out of an interest in adding pan to Xy. More specifically, I wanted to use Xy to rotate a DSLR camera in a precise circle around an object, rendering this "spinning" effect during time lapse sequences. When I explained this idea to a friend, he responded with, "Why don't you just put the object on a turntable, instead of having to move the camera in a big circle around it."

sorry bro

My friend is smart, it turns out. This proved to be a much more elegant idea than mine. I took to some CAD that week and knocked out Radieye's hardware pretty swiftly. There are some sexy features I like about it.

sorry bro

Radieye's gearing components interface with a custom 1" bore hollow shaft I turned on a lathe. Fun piece to make. Shaft Master was my nickname in high school, so it was a pretty straightforward cut for me. The piece itself and its clamps are nested into surface inlays on the two main polycarboate components, so the whole table sits super low on the tripod, and all the hardware stays hidden. Looking at design elements like that, you'd almost never think I spend every other Friday night eating takeout Vietnamese, intermittently singing Katy Perry into the left chopstick between bites.

sorry bro

Manfrotto tripod legs come machined with three 10-32 tapped holes on their base, so Radieye attaches just like any standard tripod head. The camera can be positioned on the same tripod with a Manfrotto magic arm, too. It all comes together very nicely. If anybody from Manfrotto is reading this and wants to send me some of that new carbon fiber gear, hit me up on email fam!

sorry bro

Software is eating hardware, as it were. Radieye is controlled through a web browser. I developed a Javascript-based user interface that communicates to Arduino through node.js. The original client-side code I wrote is below. In the browser, the user enters a series of parameters to call out the desired number of rotations and photos per turn. After hitting the obligatory "go" button, the camera shutter and turntable actuate in sync according to their new input parameters. Neat, eh?

Shout out to everyone at the Harvard Extension DGMD15 course who coached me from the corner throughout this battle. Footage created with it to come.


var five = require("johnny-five");
var board = new five.Board();
var motorSteps = 200 * 8;

board.on("ready", function() {

    var LEDpin = new five.Pin(13);
    var analogPin = new five.Pin('A0');
    var shutterPin = new five.Pin({
        pin: 12,
        type: "digital"
    });

    var stepper = five.Stepper({
        type: five.Stepper.TYPE.DRIVER,
        stepsPerRev: 200,
        pins: {
            dir: 8,
            step: 9
        }
    });

    var express = require('express');
    var app = express();

    var run = function(passes, interval, shots) {
        console.log("Running run with passes:", passes, "interval:", interval / 1000, "shots:", shots);
        var i = 0;
        var setRun = setInterval(function() {
            console.log("Make another revolution or stop", i);
            //step(); You actually don't need this for your 
            if (i < passes) {
                revolution(interval, shots);
                i++;

            } else {
                clearInterval(setRun);

            }

        }, interval * shots);
    };

    var step = function(shots) {
        stepper.step({ steps: 4 * motorSteps / shots, direction: 1 }, function() {
            console.log("step");
        });
    };

    var snap = function() {
        //console.log("snap");
        LEDpin.high();
        shutterPin.high();
        setTimeout(function() {
            LEDpin.low();
            shutterPin.low();
        }, 200);

        console.log("snap");
    };

    var photoStep = function(shots) {
        console.log("photoStep");
        step(shots);
        setTimeout(snap, 1 * 1000);
    };

    var revolution = function(interval, shots) {
        console.log("Revolution-------");

        var i = 0;
        var setStep = setInterval(function() {
            if (i < shots) {
                photoStep(shots);
                i++;
            } else {
                clearInterval(setStep);
            }
        }, interval);
    };

    app.get('/form', function(req, res) {
        res.sendFile('form.html', { root: './node_modules' });
    });

    app.get('/stylesheet.css', function(req, res) {
        res.sendFile('stylesheet.css', { root: './node_modules' });
    });


    app.get('/run', function(req, res) {
        console.log(req.query);
        run(req.query.passes, req.query.interval * 1000, req.query.shots);

    });

    app.listen(3000, function() {
        console.log("Server's up at http://localhost:3000!");
    });

});
sorry bro sorry bro sorry bro sorry bro sorry bro sorry bro sorry bro sorry bro sorry bro

open source

Radieye is an open-sourced project. I know, I'm such a nice guy. Below you'll find a complete bill of materials. All custom components can be milled from 1/2" thick polycarbonate, or material of your choice. CAD models and drawings thereof are to the right. What are you waiting for? Fire up your pirated copy of Solidworks today and get to making. Try not to email me if you can help it.

SW Name Code Description Q QP Cost/Unit Cost Serial Supplier
128T_gear MOT 128T, 32 pitch 1" bore gear 1 1 $16.99 $16.99 615238 Servocity
flanged_bearing MOT 1" bore flanged bearing 2 2 $6.48 $12.96 535051 Servocity
shaft MOT 1" bore shaft 1 1 $4.49 $4.49 635166 Servocity
nema14_motor MOT Nema 14 stepper motor 1 1 $9.77 $9.77 14HS17-0504S Stepper Online
pinion_5mm MOT 5mm bore 32 pitch, 16T pinion gear 1 1 $7.99 $7.99 615342 Servocity
hub_clamp MOT 1" clamping hub 1 1 $5.99 $5.99 545354 Servocity
S-010-050-NUT-SS HRD #10 1/2" screw 4 1 $4.04 $4.04 92185A242 McMaster Carr
M-030-160-SKT-H-SS HRD M3 16mm screw 4 1 $5.20 $5.20 91292A115 McMaster Carr
S-006-050-SKT-H-SS. HRD #6 1/2" screw 4 1 $2.56 $2.56 92185A148 Servocity
stage PLC turntable stage 1 1 custom custom custom timsavas
mount PLC motor and tripod mount 1 1 custom custom custom timsavas
sorry bro sorry bro
775 670 3447 / tsavas[@]media.mit.edu