h’s homemade motion control

OK then, time to explain some things.

I’ve always wanted to play with a motion control rig. Ever since seeing a behind-the-scenes documentary about Star Wars, showing how they filmed the Death Star trench scenes: a huge model, with a robotic camera that could do all the flying shots over and over again perfectly so they could film all the individual elements and have them match up.

Robotic stuff was in its infancy back then; their robotic camera wasn’t controlled by computers, just lots of TTL logic chips wire-wrapped together with loads of knobs and switches to set speeds and design trajectories.

Motion control has come a long way since John Dykstra and the team built those first systems. Nowadays there are more competing systems than you can shake a stick at. But they’re all expensive. Way out of my range. The only way I could afford one is if I wanted to turn it into a business, do mo-co day in and day out, but I need more variety than that.

So I’ve built one. It’s mostly made of junk, and it’s got its limitations and quirks, but it’s mine. And it sort of works. Muhahaha.

This is the story.

First step in any robot is getting motors to do what you want. So I pulled apart an old ink-jet printer and a disco light and set about connecting it up to a computer. I made a silly video:

All seems a bit pointless, but the aim was to see if I could learn enough electronics and coding to get a computer to “play” a motion sequence back on a set of motorised things. And it worked.

At the end of the film, you can see the camera mounted in the yoke of an old disco light, panning and tilting; but what you don’t see is the very first snag I hit. If I tried filming something with the camera while it was being moved around, vibrations and wobbles from the disco light motors made the footage unusable. Disco lights don’t need particularly smooth motion; the motors and gears had been designed more for high speed moves.

So it was back to the drawing board. I needed to build my own camera mount, and motorise it. One key find was a big moving-head stage light, which had some huge pulleys in it – and when paired up with a motor with a tiny pulley it meant I could do much smoother (albeit slower) moves.

I went through several iterations:

By now I had a better idea of what sort of functionality I wanted. On the mechanical side, I wanted my rig to have:
– a pan and tilt head
– some kind of slider so the camera could actually move / translate in space, rather than being stuck in one place
– focus control
– a separate turntable accessory so I could rotate objects in front of the camera

On the computer side, I wanted software that could handle:
– an arbitrary number of axes of motion so I could add new stuff in the future
– manual control, so you could drag sliders around on-screen to move the robot
– kinematic limiters (so if you dragged a slider faster than the actual robot could move, it wouldn’t burn itself up trying to match your speed)
– easy trajectory design (ideally using Blender, my 3D software of choice)

I learnt how to write Mac apps in Swift – look up the courses on iTunes U, they’re great – and managed to cobble together something that worked:

More later.

Addendum: that bad smell you’re picking up is the source code. It’s open source, and it’s terrible: https://howiem.org/wordpress/index.php/2016/07/18/motion-control-the-source-code/

17 thoughts on “h’s homemade motion control

  1. Call up Blackmagic design. They will be interested in adding this to their line of add on’s. The BM micro camera does 4k and is small enough to sit on the palm of your hand. J.P.

    1. Hehehe – I suspect Black Magic could do a much finer job themselves 🙂 Those little micro cams look ace, though, especially as you can get them with an EF mount so I can carry on using my lens hacks without any further work.

  2. You sir are talented. Keep It up! Design a rig that is under 500.00 and works with a smart phone app. I don’t want much I know, but you like challenges, obviously.

  3. Veeery nice. I got everything working (for those forking the server software, you’ll need to find and change the serial addresses it looks for) although I’m going to adjust your setup so one board controls multiple motors and maybe some sort of speed ramping for stopping / starting.

    If you’re open to pull requests please let me know (via email).

    My complements.

    Also, your post with the Puma arm and Blender is amazing. I’m looking to do the same myself.

  4. Hey dude,
    Very nice job and greets from Germany! Looks like a lot of work and coding :0. I really like the idea with the direct connection to blender!

    We (my brother in law, my dad and I) want to do something somewhat similar but not that detailed and just for fun.
    So I have a little question and I hope you could help us: what kind of motors do you use? We first thought about some stepper motors but we are not sure if they can go fast enough with such a big gear ratio. Because of the low budget we don’t wanted to buy, test and fail. Rather ask, buy and win :’D. Therefore what motors do you use for tilt, pan and the slider ?

Leave a Reply

Your email address will not be published.