Camera Slide: OpenBuilds + FluidNC

After making some attempts to record myself doing some woodworking, I’ve recognized a need for my camera to be decoupled from my benchtop (or in this case, my temporary bench). The most logical place to attach my camera is my shop wall.

But I can’t just have a static postiion. I want to be able to dial in each shot to show off important detail. So why not a robot?

This is what I ended up building (currently in-test on my floor)

Its a 1.5m C-Channel leadscrew linear actuator kit from from It is smooth as butter and long enough to traverse most of my workbench.

I was going to write my own firmware for it, because my goals were to support a few simple features and eventually more, all through an ESP32, but I discovered this lovely, recent, and active project, fluidnc.

For those familiar with GRBL, it is a (double) fork off of GRBL. First fork was to make a direct port to supporting ESP32, and the second fork adds additional features effectively turning it into an all-in-one GRBL+CNC.js while maintaining almost all backwards compatibility.

Once I got it going, I wanted to add physical jog and stop buttons. I bust out an old MIDI project board of mine that was a reject board and made use of the mounting pads for some keyboard cherry-style switches along with adding an optical endstop.

Next I need to mount the electronics into an enclosure and mount the rail into my shop.

A first timelapse where the sled was moving about 100mm per minute:


That looks impressive…
Have been thinking about a similar thing for outdoor panoramic shots (with perhaps the addition of a pan function for the camera)…

Even more thrilled to find out about as it looks like a terrific local source for hard to find mechanical parts…

At least I didn’t know about them…


If you sweet talk them enough and make sure to show up on-time on their schedule, they even do local-pickup. I met them at a UPS store in Richmond while they were (presumably) shipping other orders out.

I’ll eventually be adding Pan/Tilt, so if you have a stepper-driven pan-tilt head design I’m looking to make one presently.

1 Like

And they even have a link to VHS in their list of Canadian Makerspaces!!!


No experience in the pan and tilt design but will be following your build closely
Couple questions?

  1. Any reasons for picking a lead screw linear actuator rather than a belt driven one?
  2. Do you drive the stepper directly from the ESP32 pins or use a seperate driver?

Very cool! A slider’s on my project list too, somewhere. :stuck_out_tongue:

How’s the rigidity of that long an extrusion? I’ve heard people having issues with long sliders that seem rigid yet still cause visible bounce/shake in the footage despite the movement being unperceivable to the eye, though if you’re going to be mounting it on a wall I doubt that’ll be an issue.

For pan/tilt, something I’ve been meaning to experiment with is the gimbal I have has a CAN interface (along with mounting bases/accessories so it can be put on almost anything), that allows full control over the motors. That’s not a cheap solution obviously, but if you have one kicking around it might be worth looking to see if there’s any ability to control it programmatically.

Check out the video I posted (the youtube link). That’s 10mm/minute so about12ish minutes of timelapse. I’m using the C-Channel extrusion and the acme leadscrew specifically to try to combat any sort of flex.

In my application, it’ll be well-supported so I’m not worried about it, but if I were to use this in the field, I’d be using 2 tripods with sandbags.

My goals where super smooth slow moves over a long distance. I didn’t need any super fast movements and I want to eventually put more and more payload on this. So while right now I’m only moving an iPhone, adding a gimbal, a bigger camera, other things will cause it to have more mass. I was worried about spring-i-ness of a belt over effectively 3 meters with a heavy payload not giving me super smooth results.

If I needed fast moves, the leadscrew would have certainly not been the way to go. Anything over about 1m/minute is probably too fast for any reasonable stability in this system.

I’m using servo/stepper hybrids. They are stepper motors (NEMA23) with integrated drivers including a closed feedback loop so it can make up any lost steps. It has an alarm and position complete feedback signals, but FluidNC doesn’t support those presently.

I’ve got this board on-order (without the touch-screen) which is listed as supported hardware on the project wiki. I might swap to Trinamic drivers, or at least use trinamic drivers for my pan/tilt. Those have the quiet mode that would work nicely for this.

I just happened to have this beefy integrated servo on-hand. Technically I should probably have a level shifter in before the opto-ioslated inputs on the motor, but in this application if I miss a step every few hundred thousand steps, its not going to be noticed.

I also have my microstepping set to 1600 steps per rev to try to keep it extra smooth. I could turn it up a lot more, but with 3.3v I have to extend my step time a bit longer for it to register. Right now I’m at 5us but their default is 2us.