I got a bit caught up in making the project and neglected to write any devlogs, so here’s a summary. I started by designing the servo mounts for 3D printing, which took a while since I was learning FreeCAD and professional CAD in general as I went. My first 3D print was somewhat functional, but I hadn’t fully taken the servo wires into account, so I had to reposition the small gear. It also later turned out that the small gear wasn’t tall enough, so I also had to change that. Then, with some functional 3D printing, I turned to the code and started with a simple ESP web server that would save a file upload to a string. Once I got that, I made a simple SVG parser that would just take the points from the first polyline element and used trigonometry to determine where the servos should point based on 2D Cartesian coordinates. After further investigation of the servo mount, I also decreased some clearances and made the laser pointer mount thinner to allow it to bend. Next, with the full thing assembled, I had to do some minor debugging, including switching from atan to atan2. One of the servos also abruptly stopped working and refused to give any sort of accurate angles until I manually gave it a custom PWM range, so that was fun. After that, I did some experimentation in Illustrator and found that I could consistently get real-world units drawn by using a conversion of 0.353 mm/pt. My last two real features were adding a redo button that ran another trace with the previously uploaded file and breaking each edge into 20 smaller segments to allow a more accurate path between points.