Exploring Toolchains

The painting robot project is an interesting software challenge. I’ve been looking at prior art and related projects and I believe I will benefit from studying toolchains further. Particularly those that start with image data.

I found this cool Image to Wood project in Thingiverse which I really liked.

I started with this picture of my friend Britta.

Here is the software toolchain:

  • The image was cropped and resized using Gimp. Had it not been grey-scaled, I’d have done that.
  • Gimp was used to convert the file to a PNG.
  • I installed Cygwin with netpbm and gcc (c++ compiler).
  • I downloaded ImageCarve from the google code repository.
  • I compiled ImageCarve (linux command line: gcc imagecarve.c -o imagecarve).
  • I then used ImageCarve to render g-code for the image (linux command line: cat image.png | pngtopnm | ppmtopgm | ./imagecarve –toolsize=3.2 –stepover=1 –scale=0.25 –clear=12 > output.g). I left the 3.2mm parameter because I have a 1/8″ ball nose endmill on hand.
  • I verified the g-code file by loading it into NCPlot. I like to look at files in there before loading them to my CNC mill since I can often spot problems.
  • I loaded the output.g file into Mach 3 (EMC2 would work too).

Everything went smoothly except the ImageCarve outputs millimeters. My mill is expecting inches so it crashed the Z axis. I need to do another step to either tell Mach 3 about the units (perhaps edit the g-code, change a setting in Mach 3, convert all the numbers in the g-code file or modify the ImageCarve program).

The g-code starts off like this:

I did a replacement within the g-code. Replace “G01X” and “G000X” with “G21X”. That seemed to fix it! The mill ran in a bit of a jerkey pattern but it completed the job.