How to Create a CNC Simulator

Back in 2011, I contracted a case of programmer’s itch. Before I knew it, I was scratching that metaphorical irritation like a dog with flees. Within a couple of months, the first functional version of an Open-Source 3-axis CNC simulator called CAMotics (CAM-ah-ticks) was birthed. Or rather OpenSCAM, as it was called back then. These days, thousands of people all over the world are using this software. Recently, I’ve gotten a number of concerned emails asking about the project’s longevity. This blog entry is an attempt to clear things up.

To get right to the point, CAMotics is alive and well. I love this project and will continue to develop it, fix bugs and add new features as long as I am able. Still, it’s been nearly a year since the last version was released. Clearly, I have some explaining to do. The short answer is that I’ve been working on an important complementary project. But before getting into that, allow me to provide some context so that you understand a bit more about who I am, where I am coming from and my vision for the future of this software.

Me as a kid programming a Big Trak.

I’ve enjoyed writing software since I was a little kid sitting in the living room in front of the family TV in my underwear entering machine code listings from Byte magazine into a Commodore 64 to make programs like Eliza come alive. I stuck with it through my teenage years, went on to study computer science and eventually made programming my profession. In the time since those days, I’ve developed numerous Open-Source projects most of which were extremely interesting to me but not very interesting to anyone else. Then one day I stumbled upon the idea to create a CNC simulator.

At first, I thought writing a 3-axis CNC simulator would be pretty easy. I tried out some ideas and to my surprise initially none of them worked very well. It seemed simple enough. You just push a cone shaped tool through a cube shaped stock and compute the difference. It turns out this is called a 3D sweep and algorithms which compute accurate sweeps quickly are quite difficult to implement. Especially when you consider the large number of overlapping moves typical to a CNC program.

Figure from a paper on CNC simulation.

Then I started reading a lot of the published papers on CNC simulation. Surprisingly, they go back at least 30 years and the topic is still an active area of research. I kept reading and had some useful conversations with some smart people on the Internet like Anders Wallin. Eventually, some of the higher-level concepts started to sink in and I began to formulate an idea based on parts of several different papers I had read but combined in a way I believe is unique to CAMotics. At this point I started to get some results which were pretty fast, not perfect but still very usable. I added a basic user interface, built packages for Windows, Linux and OSX and put it up on the Internet.

Screenshot of CAMotics v1.0.5

When CAMotics was first released, I called it OpenSCAM as a joke and an acronym for Open-Source Simulation & Computer Aided Machining. Despite this somewhat scary sounding name lots of people started using it. I began to receive regular emails from users thanking me for creating this software and lots of feedback on bugs and feature requests. Once I realized I had finally created something that not only I thought was really cool but other people did too, I was over the moon. I dove right in and over the last several years have put in literally 1,000s of hours of my “free time” developing the software further. Incremental improvements have resulted in the quite fast and relatively accurate simulations now produced by CAMotics today.

View of the Golden Gate Bridge from the Marin headlands.

These days, my wife and I live just north of the San Francisco Bay in Sonoma County, which is a beautiful place but not inexpensive. As a software contractor, I do quite well but just making a living takes up a lot of my time and brain power. I know what you’re probably thinking. Poor guy, lives in a fancy part of California, gets paid to do a job he loves, has a wonderful wife and gets to work from home (oh did I mention I work from home, it’s awesome). Really, I’m not complaining. I am lucky to get paid to work on really cool projects but I’m a human and therefore I always want something more. As Nada Surf eloquently put it, “Behind every desire is another one waiting to be liberated when the first one’s sated.”

Click here to make a donation now.

If only I could get paid to work on CAMotics. Then I could spend much more time implementing all the awesome features I have planned. To this end, a few years ago, I added a donations page to the camotics.org website and surprisingly this actually worked. Quite a few of you freely donated money; please continue to do so. But sadly, as of yet, this has not amounted to a whole lot. Last time I crunched the numbers, it worked out to about $1.33/hr. Sorry, honey we are going to have to move in with your parents.

Drawing created for BoCon 2006

Jokes aside, this got me thinking about other ways to earn money with an Open-Source project like CAMotics. Several years back, I researched this topic quite thoroughly. I read The Cathedral and the Bazaar, The Magic Cauldron, read the story behind the Open-Sourcing of Blender, learned to sing The Free Software Song poorly and even organized a Open-Source / hacker’s Con in Idaho were I and lots of other like mined people got together to discuss this and other issues facing a free Internet society. Unfortunately, this bit fueled vision quest for the magic solution to funding an Open-Source project never congealed into a definite answer. It did however give me some new ideas, crossed some not so good ideas off the list and fast forward several years, ultimately lead me to creating a startup with my Uncle. Which finally brings me to the reason CAMotics development has lagged over the last year.

My Uncle Doug (smart guy!)

Unfortunately, I cannot actually tell you what I’ve been busy with. Well, not yet. What I can say is that together with my Uncle, (his name is Doug) we have formed a startup called Buildbotics LLC and created something really awesome which complements CAMotics in a big way, will be Open-Source and offers a clear path to making CAMotics profitable enough for Doug and I to give it the attention it deserves. We are currently in stealth mode, but will reveal all soon and hope to have your support when we do.

So, with that cliff-hanging teaser, I have only two things left to say. Feel free to contact me directly and. . .stay tuned!