Overview

I've had an AxiDraw A3 pen plotter for a few years, but every plot required hours of manual configuration and post-processing, which discouraged frequent use.

So, I decided to go all-in and create a workstation that would automate the tedious portions and generate quality plot videos with very little oversight.

It may be a bit overkill, but I'm fascinated with the concept of 'printing', and I hope that this is my first custom printing station of many.

Workstation

Full Setup

Server

Plotter Server

Details

Polarized Lighting

When I first tried to film top-down, I had nowhere near enough lighting. Once I acquired some LED panels, I realized that the camera would capture glare. I couldn't use angled lighting because the plotter casts large shadows.

The solution: using polar filters to eliminate direct reflections. The polar lens cap on the camera is aligned perpendicular with the polar filters on the lights, which completely removes glare. Magic!

For plots that utilize metalic ink, however, glare is a feature, not a bug. The lens cap is easy to adjust, so I can directly control the amount of reflection.

HDMI Capture

At first, I hit 'record' on the camera at the beginning of each layer, and manually imported and edited huge footage files in Final Cut Pro. However, dealing with GB's of footage and waiting around for renders quickly proved to be too time-consuming. I decided to sacrifice a small amount of quality, and directly stream the HDMI output to my dedicated plotter server. That way, I could grab specific frames on-demand using ffmpeg and generate clips using an automatic ffmpeg + opencv pipeline.

  • less manual effort
  • much smaller memory footprint
  • higher editing precision

Plotter Server

At the beginning of this project, I was a linux noob. I had installed a few distros before, but it always felt fragile and susceptible to errors I had no clue how to fix.

I heard about NixOS being a deterministic, configuration-based distro, and I knew I had to try it. I had very specific requirements (HDMI capture with ffmpeg, plotter control via usb and axicli, and a bun server to manage print jobs and report status). With the help of Grok and ChatGPT, I was able to create a server image using Nix that I could ssh into from my primary computer.