project proposal
press fit construction kit
pcb fabrication
3D scanning and printing
electronics design
molding and casting
embedded programming
cnc machining
input
composite
output
interface
[12] ~ INTERFACE |
This week I made the digitizer interface for my handheld CNC. For the handheld CNC I need a way to load a 3D model, do forward kinematics from the arm-joint-angles to calculate the toolhead position in 3D space, and provide some form of control feedback (e.g. slowing down the spindle or retracting the endmill). To accomplish this, I set about learning how to use Rhino, Grasshopper, and Firefly. It ended up being a much simpler process than I was initially expecting. The seemingly complicated tasks of finding the interesection of an arbitrary 3D line and a mesh and finding the closest point on a mesh from an arbitrary 3D point were already solved and easily implemented with simple code blocks. Ultimately it still resulted in a big messy tangle of code... (I obviously haven't figured out how to group/cluster things yet) On the hardware/physical side of things... I made an circuit board that just has four analog ports to read (in this case) four potentiometers. I scavanged the potentiometers at the last minute (thank you Ben Peters) so they're all slightly different but are functionally equivalent (more-or-less). I very quickly cut the acrylic linkages such that they flexurally couple to the shafts of of the potentiometer (with the help of a tiny bit of double sided tape). It's certainly not a permanent joint but it does the job. The next step will be using either the "closest point on mesh" metric and/or the "length of interesecting line" metric to control the speed of the spindle and/or the retraction of the endmill.... I think I can only decide these things by trying things out and seeing what feels best. Source:
|