Hacker News new | past | comments | ask | show | jobs | submit login
My adventures in CNC robotics (coredump.cx)
390 points by zaroth on Oct 23, 2014 | hide | past | web | favorite | 49 comments

Zalewski was the reason I felt unaccomplished in 2005, when I read his "Silence on the wire" and noted he wasn't much older than I am.

His separate guide on CNC is great[1]. He also has a great intro to electronics[2]. His first book is an amazing survey of totally passive attacks[3]. His second book is a comprehensive survey of web application osecurity[4].

[1] http://lcamtuf.coredump.cx/gcnc/

[2] http://lcamtuf.coredump.cx/electronics/

[3] http://www.amazon.com/dp/1593270461

[4] http://www.amazon.com/dp/1593273886/

Sample chapter of 'Silence on the wire': ftp://ftp.helion.pl/online/bekomp/bekomp-11.pdf

Edit: Almost funny to see FTP actually being used to, you know, transfer files. As Scotty would say, "How quaint!"

warning: sample in polish (as the host dn)

Wow, that CNC guide is awesome. Is there anything like this for metalworking-oriented machining?

I love articles like this. They display long-term focus and a patient, multi-disciplined investigation into how to complete a project (in this case, some light mechanical engineering, materials science, and machine technology). I've been planning out a project and will need to make some large-ish 3D parts out of a translucent plastic (part of a larger audiovisual installation), and until now I'd been uncertain about how to proceed. I'm shedding tears of joy reading through this brave soul's explorations into DIY resin casting.

Something that struck me about this article -- and something which I see regularly around CNC hobbyists -- is the unfamiliarity with basic machining calculations, a problem that usually results in chipped parts and broken tools. I didn't even know about machining fundamentals like chipload/chip per tooth (CPT), inches per minute (IPM), and correct RPMs for different materials until fairly recently. Additionally, "climb" versus "conventional" milling refers to how the bearings are loaded -- you almost always want "conventional" unless you're on a nice CNC machine. Why isn't there more information crossover into the hobbyist world?

Anyways, kudos to the OP for throwing this out there, and thank you Zalewski; I'll be methodically absorbing pretty much everything linked to in this essay. :-)

There is tons of crossover of this material into the hobbyist world. The problem is that people don't bother to do their research. The average programmer who wants to build a CNC mill (or more likely, a router) jumps right into the software and electronics. The mechanical aspect is an afterthought.

OTOH, had he started by trying to understand the process of machining without focusing on whether the tool is being controlled by a human or a computer, he'd find that there are thousands of hobbyist machinists online running fully manual machines that will happily share the knowledge you mentioned. Machine tools have been around for 200+ years. The basic techniques haven't changed very much in all that time.

TL;DR: do the research first.

Good point. Maybe some self-selection bias here (Hey, I'm comfortable with computers and programming, so I'll jump straight to the computer-y part of machining).

Yes, that also struck me. This guy obviously knows his stuff now, but he would have been well served by (American style, which I don't know if there is a similar system in Poland, so this point may be moot to his particular case) an introductory Machining course at his nearby community college. Some of the mistake he made early on are very basic. But then he learned from them obviously, and he's also seems rather very determined. It's a great story and website.

Of course, I'd also say that for many people, a typical type of reaction to CNC machiningi is: "Oh, you just put the file of your 3d part in the machine and it makes it!" Nope, not that easy.

>Something that struck me about this article -- and something which I see regularly around CNC hobbyists -- is the unfamiliarity with basic machining calculations

...do you have a recommendation or two for books/resources for learning about machining?

I've found the best machining resource is working with a good machinist. Quite a bit of machining is about intuition and properly evaluating other sensory inputs - knowing how to interpret the sound a cutting tool makes is critical! Unfortunately, finding a good machinist willing to let you watch them in person - or better yet, work under their supervision - is pretty hard, especially if you're just a hobbyist. Crotchety old-timers don't scale particularly well...

Youtube is one of the better resources right now, for anything other than really basic calculations. There seems to be a trend of old-school professional machinists documenting jobs they're working on - sort of a cross between a tutorial and virtual job-shadowing. Some nice users include oxtoolco, KEF791, Abom79, and mrpete222.

Bang on true. As I noted elsewhere, that semester of night courses at the local JC has improved my machining abilities drastically, as well as illuminated me as to actually planning the order of operations (y'know, "step 1: bandsaw", etc).

msds and hoprocker hit it on the head. In this field, I think the best way to learn is to still go in and work with an expert and get your hands dirty.

That said, an introductory book that the local community college just recently started using (before that, there really was no book, just blueprints and notes because so much information came from the instructors) is the Precision Machining Technology [0].

Unfortunately, like many textbooks, it's not cheap. But it's a nice introductory book("I don't have a clue, but I'm interested in the topic")


Well, it's good to know how utterly I'm pissing away my entire life. It helps to be reminded of that now and again.

And just in case you thought his day job was boring, go up a level on the URL: http://lcamtuf.coredump.cx/

Comparing yourself to anyone else is silly, worshipping success is sillier, bemoaning failure is silliest.

Everything is silly in a sensory deprivation chamber where you neither have aspirations nor external motivation.

I understand it's possible to fall back on solipsism whenever life gets challenging or you have to admit something unpleasant, but many of us relish it and don't need to fall back on that sort of philosophical crutch.

>don't need to fall back on that sort of philosophical crutch.

I am not suggesting that one needs a philosophical crutch like my pithy platitude above to justify laziness.

I am merely suggesting that constant internal battle with yourself is not very productive.

I knew this feeling all too well. So many people doing all sorts of cool stuff out there, and I was just sitting there grinding away at a meaningless job. Life's too short for that man.

Hidden deep in this is an incredible treasure: how to do it yourself:


Also hidden, a great reference on mechanical design in general. Author mentions it for gear design, but it covers a broad range of topics including strength/stiffness analysis of parts, fasteners (nuts & bolts), materials, etc.

Shigley : http://www.amazon.com/Shigleys-Mechanical-Engineering-Design...

$265.75 for a book? I think I'll stay ignorant, that's one third of the price for a lathe.

When I was a mechanical engineer, 70% of the information I needed was in that book. I used it literally every day. It's no more expensive than IntelliJ, and 1/10th or less of the price of the software packages we were using. It's an absolute must have for a professional. Not to mention you use it in about a half dozen college classes.

Used copies are probably cheaper, and the information hasn't changed in any meangingful way in ages.

I'll agree to it being stupidly expensive, that's become pretty common for college textbooks. However, it's enough of a classic that finding a used copy, or an illegal pdf, shouldn't be too hard. The vast majority of the content is far from cutting edge too, so older editions are just as good. Juvinall's Fundamentals of Machine Component Design is similar in content and also a great book and somewhat less expensive.

yeah, I have an old French textbook from when I was a student, I'll stick with that. And we find a lot of stuff on wikipedia now.


Publishers got used to the idea they can charge as much as they want on US for textbooks. Higher education already costing so much, who would neglect books? This is not the case in developing countries (specially India).

You're right, the kindle version on amazon.fr is "only" €46.

Well I still think that buying an american mechanical book seems like a bad idea outside the US. My world is ISO, and american standards are a pain for us: fractions, inverted units like mesh sizes or thread pitch, letter drill bits (that one I never understood since they also have fractional sizes) and variable standard between screw diameter and pitch (actually ISO has coarse and fine pitch, but it's always coarse unless fine is explicitly designated). People who think we could just divide everything by 25.4 would be really naive. Even metal designations are different.

Yup. Available for around $12 in India: http://www.flipkart.com/shigley-s-mechanical-engineering-dis...

Here, this is free: http://pergatory.mit.edu/2.007/resources/FUNdaMENTALS.html

And probably more useful to you.

thanks, that's interesting, mainly to translate this vocabulary in english (man, "spherical joint"? I prefer the french "rotule", nobody outside of the trade would ever guess what it is, you feel so l33t).

It reminds me of my youth, the professors loved garage doors, cinema film advancing fingers, and shitty kinematic simulation software.

A veritable treasure trove! Some really beautiful craftsmanship and perseverance.

Also on the site; Dial-a-threat: http://lcamtuf.coredump.cx/word/ Shannon's Ultimate Machine: http://lcamtuf.coredump.cx/ultimate/

Wow! This blog exemplifies someone whom I wish I could be. I am an EE who is hopelessly enamored with the idea of one day becoming at least proficient in mechanical design.

I better get going. I am not getting any younger

Here's a little stream of consciousness from another EE that has dipped his toes in the CNC world :

ME's scoff at the very existence of Sketchup, but for a free modeling tool, its good enough.

If you like something more programming oriented, OpenSCAD is great for parameterization. You literally code your 3D model.

Neither of these tools comes close to something like SolidWorks, but they both get the job done.

A 3D printer is probably the easiest and cheapest method of fabricating your designs, but the ability to make functional parts is fairly limited

Sherline sells a small tabletop mill for something close to $1000.

Grizzly sells a bigger one for $1300.

Both of these can be retrofitted for CNC for around $2000.

There are now 3 offerings of complete tabletop CNC mills for $2000 to $2500 (Nomad, Othermill, and Carvey)

If you can program, learning GCode will be a breeze.

CAM is probably where most of the learning curve lies. This is where machining knowledge is most beneficial.

If you are lucky enough to live in certain metro areas, Techshop has several locations across the US. Its essentially a fitness club but with machine shop tools instead of exercise equipment. You pay a monthly fee, and you can use everything. They have several different types of CNC machines, as well as training.

Great rundown, thanks for that. CNC machines are also popular at hacker spaces; check one out in a metro area near you (Noisebridge in SF, Ace Monster Toys in Oakland, Madagascar Institute in Brooklyn to name a few).

I like your description of TechShop, and imho it's about 50% true. They do allow use of the tools after you've paid an extra $100-$200 for a "Safety and Basic Use" class on each, which is usually a 3 hour session providing just about enough information to not kill oneself on a machine. Not to knock it -- it's a great way to get access to tools in many situations -- but in all honesty, after a semester of machine shop at the local junior college, I'm no longer stumped about why I kept breaking drill bits in blocks of aluminum.

I recommend Freecad over OpenScad.

If you know Spanish check the tutorials on OpenScad and Freecad of Obijuan: http://www.iearobotics.com/wiki/index.php?title=Obijuan_Acad...

I would also like to mention FreeCad - an open source parametric 3d modeler.


Cubify Design, although not open source, is one of the cheaper 3d cad tools which also supports parametric modeling.


About a year ago I evaluated Cubify (Geomagic, Alibre, they seem to change names quite often).

It was very, very promising, right until the moment I started doing a real design in it. I hit so many bugs and problems, that I couldn't finish the work. Debugging constraints was pretty much impossible: if something went wrong (and it almost always did), I'd have to restart from scratch.

I can compare it to SolidWorks, which I also used, where debugging constraints is also a major pain point (why don't they make this easier?), but at least it's possible. And it is buggy, too, but much less so than Cubify, which means you can actually get things done.

From my point of view (external perspective of a software engineer), 3D modelling tools suck, in general. Few support parametric modelling, which consider a must-have, and those that do are pretty poor at it (discuss after you've created a parameter-driven assembly of multiple components in SolidWorks, and then decided to change a parameter name/value or move a parameter from a component to assembly-level).

I'm an ME who uses CAD on a daily basis and I'd have to say that yes at first parametric modeling in the current software packages is a challenge. But I'v found it is a learning curve similar to syntax in programming. Once you learn to construct features robustly you do it every time and you no longer have too many hideous errors. No different than programming.


I would welcome your thoughts on just how to best hack these exact types of parametric changes in SolidWorks, especially at the component to assembly-level transition. It does seem pretty hopeless, as you say.

Email in profile

Oh, I am nowhere near expert with SolidWorks. What I end up with are fairly brittle constructs: I first build components (parameterized), then plug them into assemblies, then add key parameters to the assembly, and finally set up component parameters to track those of the assembly.

BTW, top-down building (e.g. starting from the assembly) has never worked for me. I always end up with an unmaintainable mess — but that could be my poor skills.

I used FreeCad a few months ago for the early prototype you can see in the video at www.flair.zone.

It doesn't support assemblies yet (although its on a branch!) so I just designed a linkage system extremely carefully and swiss cheesed some parts to avoid dealing with dimensions as much as i could. I used to use Inventor but Fusion 360 is nice - and its free for startups.

As soon as Freecad supports assemblies I will probably switch back. I hate booting into OSX for Cad work and back home to linux for coding.

Another vote for Fusion 360, especially on the Mac. I settled on that for 3D printing and hopefully soon desktop CNC modeling. It seems to be the only affordable yet not dumbed-down packages for OS X.

Designing my first CNC, any ideas/answers would be appreciated:

[1]Looking to move XY stage with fine resolution: 5 micrometers [2]The stage will only need to support ~5grams [3] There will be optical feedback [4] speed can always be sacrificed for accuracy

- Instead of the classic steppermotor setup, I was wondering about the feasibility of servos with arbitrarily reduced gearing (let's say a stack of laser cut planetary gears).

-What are the pitfalls of this method? has anyone else done something similar?

Thank you so much for sharing this

For any that were not aware, this is the same Zalewski that did a lot of great work around the Shellshock bug. He found 2 additional issues with the parsing function after the initially reported bug. CVE-2014-6277 and CVE-2014-6278


I don't know where he finds time to sleep.

What impressed me the most is that his work evolved slowly, over many years, with incremental improvements. Stead and forward. Well done! Impressive.

What are the low cost (< $200) options for a CNC machine? Or making something from scratch in that price range.

As if I needed another hobby.

But really, awesome page.

"I bought a low-cost vacuum pump and constructed a makeshift degassing chamber. After the makeshift chamber imploded, I constructed a better one and started to wear eye protection, too."

A nice taste of the gentle humour waiting for you in the article!


Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact