In Progress / Shorts
There are a number of projects I am either still working on or too small for full write-up. This page exists so I have some documentation of them without making 20 single-paragraph posts.
I am fascinated by emergent behavior in systems, and frequently program simulations to experiment with these properties. This particular sim is a cell placement evolution sim. The program “grows” the plant based on an input set of instructions. There are 3 types of cells the sim can place. Leaves, the green X cells, generate a set amount of food every tick. Stores, the blue + cells, take food from all adjacent cells and add it to the plant’s total. Veins, the yellow line cells, take food from 3 adjacent cells and give it to the cell they are pointing towards. The plant can use this food to place additional cells, and thus grows exponentially. The program repeatedly runs the simulation, each time varying the instruction set and saving changes which improved the total food collected. This allows it to evolve over time, which results in some interesting patterns.
UCP, the software I use to run the laser cutter, has a weird quirk where if you send it polylines, a type of AutoCAD object, it cuts at a small but unpredictable fraction of the speed it is set to. This is especially fun when handling student requests, as most image conversion software outputs exclusively polylines. I eventually got so frustrated with this that I spent a week teaching myself Lisp and AutoCADs command API, and then wrote a suite of tools to convert various linetypes into line segments. This culminated in a single command reducing the cut time of polylines parts by 75%, saving hours. Github
I have been experimenting with progressively more complicated attempts to make a CNC plotter. This started as me wanting to better understand CNC machines by designing one from scratch, and has since gotten progressively more out of hand. My long term target for this project is to procedurally generate paths from a target image or pattern and draw it in real time on a canvas. I currently have ImageConv running well for greyscale images and am tuning the script to draw lines with minimal curving. I have some interesting ideas I want to attempt, such as building a neural net to imitate human color perception, using additional mediums such as spray paint, chalk, or acrylic, and coding a GUI to more easily control or configure the robot.
I have been working on two different plotter designs as the foundation of this project. Tether, which moves the head by adjusting the length of a pair of supporting cords, and Arm, which uses a custom servo spool system to drive a two-axis robotic arm.
There were a handful of fundamental flaws that resulted in the need for a V2. The head would swing away from the surface, limiting printing to angled backplates. The cords were wrapped around the pulley once and then weighted, to prevent spooling from impacting the radius of the pulley. It ultimately just allowed slipping which resulting in a loss of accuracy over time.
I am using cheap dc motors to control the angle of the two middle joints of the arm using a cord and reading their positions with potentiometers. There is also a servo in the base controlling a pulley which pulls the pen onto the paper. It should be able to draw in a ~3' by ~3' square. I intend to print color images by running multiple passes with different markers. I also intend to implement bluetooth control and a SD card reader to more easily run long term print jobs.
2021-05-11 00:00 (Last updated: 2023-02-03 01:11)
d3603bd @ 2023-02-03