But when it comes to getting this done, the servos aren't making much sense to me (I'm sure I'm stuck in step/dir paradigm)
The difference between a step/dir system and a servo system is in the PID control module.
This sits between the position command from LinuxCNC and the HAL component that generates the speed command for the servo. (or, in some cases the torque command. Sometimes even a position command).
A PID controller has an output of zero (or, sometimes, a steady value) when the command and the feedback match. And a varying output when they don't, with the output varying in relation to how far out of position the system is.
It's called a "PID" controller as it has three parts, Proportional, Integral and Differential. Which sounds like complex maths, but it isn't. A PID controller is only a couple of lines of code:
Code:
error = command - feedback
P = Pgain * error
I = I + Igain * error (note how I is based on the previous I, so it ramps up and down)
D = Dgain * (error - previous_error)
output = P + I + D
The Pgain, IGain and Dgain are numbers that you choose when tuning the system.
If you Google you will find lots of mathematical analyses of PID controllers, but in the real world folk just guess numbers and tweak them until they work. (In fact, my real job is exactly that, I make engines idle smoothly)
So:
Stepper:
Command => step generator
Servo:
Command => PID => pwm / analogue / velocity-mode stepgen
feedback => PID
Actually, there is typically something akin to a fixed-gain PID inside the stepgen, where the output is how many steps to try for in the next servo period, and the (internal) feedback is how many steps it made in the previous servo period.