Elixir lib for configuring and generating an (svg) design file for a perceptron apparatus---suitable for CNC routing/laser cutting.
See project page for description.
This package is not (currently) on hex. You can clone the repo and import it via
a :path
.
You'll also need to download and install the Relief SingleLine font.
A board contains a number of rings, each of which represents a layer in the (MLP) neural network.
SVG classes represent different cut types:
top plate (will all have top
class)
full
full-depth cutsslider
full-depth routed channels for slidersetch
light v-cut etchesetch.heavy
heavier v-cut etcheshole
full-depth holes (for screws)
bottom plate (will all have bottom
class)
slider
partial-depth routed channels (for captive slider/ring bottoms)hole
full-depth holes (for screws)
-
add
Utils.write_files
which writes out all the necessary svgs (baseboard + topboard, plus individual files for each cut type) -
design a 400x400 prototype (same radius, inc markings, arc + couple of sliders)
-
check no quirks in the final svg output which will trip up the CNC machine (e.g. empty text nodes)
-
replace the "interp and concat strings" approach with proper HEEX templates
-
add drill holes, etc
-
add Axon support
- see what the param ranges are (inc. negative?)
- training model based on inputs
- auto-generating the SVG based on the model (i.e.
%Axon{}
->%PerceptronApparatus{}
) - examples (5x5 MNIST digits, maybe something with language?)
- "relief" cuts, or other visual emphasis tricks
- class-based approach for different cut types?
- baseboard cuts (and captive slider designs)
- can Cole & I come help?
- prototype next steps
- handles & other holes
- any other design optimisations?
(c) 2024 Ben Swift
MIT