When I first assembled the laser I hooked up a microcontroller to drive it. That let me do vector cuts (though the ergonomics were poor because I had no UI, just serial gcode access). The big problem was that it discouraged me from hooking up a PC controller because the first step would be unhooking the working setup and being unable to use the laser for a while. Plus component arrival order and general laziness had left me without limit switches so all that would have to be fixed.
Enter my vacation! Unbelievably my wife wanted to
go somewhere for part of it so I haven't been able to devote it to laser hacking like a
normal person...
But I do have EMC2 working now on an old PC. Some BIOS setup to disable hyperthreading, disable onboard sound, legacy USB, power management, and all those realtime-crushing things and I can get a 37kHz BASE_PERIOD which EMC2 can turn into 37kHz steps (its special parallel port driver has an auto-reset feature that enables one pulse per tick). That gets me about 470mm/s on X (8x microstepping) and I've tested up to 7500mm/s/s acceleration with no problems.
With the BIOS tweaking (same sort of things you'd do for Mach3) and the EMC2 live CD plus the included "stepconf" I think anyone could be doing vector cuts with EMC2 very quickly. The major difference for a laser builder (as opposed to end user) between EMC2 and Mach3 is that where Mach3 has almost unlimited flexibility of the GUI, EMC2 instead has almost unlimited flexibility of the
internals. Take a look at this list of realtime modules:
http://linuxcnc.org/docs/html/hal_components.html . Now consider that you can hook those together in any way you want. I fully expect I can implement an equivalent functionality to the Epilog "frequency" setting just with some work in the HAL file.
What I've got working so far is rastering based on an idea from the Hacklab (Toronto) configuration. An external script processes the image and feeds the raster information to the
streamer module which executes logic in the inner loop via HAL config. Their version created a paired "gmask" and gcode file to execute together. My version just generates the info on the fly (by executing a custom M-code script) and executes a gcode subroutine to produce an arbitrary raster scanning pattern.
Here's my first result in wood (300 DPI in X, scan gap of 0.125mm or about 200 DPI in Y, about 80mm/s and about 20W laser power):
Here's one letter under higher magnification (courtesy of a USB microscope by Celestron):