fellesverkstedet / Bark-beetle-parametric-toolpaths

A grasshopper plugin for digital fabrication. Enables direct fabrication of geometry with 3D printers, CNC milling, Laser cutters, Robot arms and more. Also featuring 1:1 augmented reality toolpath projections.
97 stars 18 forks source link

Roadmap for better a settings generator #75

Open JensDyvik opened 3 years ago

JensDyvik commented 3 years ago

The settings generator we have in the current version of Bark Beetle is ok, but far from great. And it does not work well on machines that are either much weaker or much more powerful than a shopbot. It works best on milling bits diameter 3-8mm. Smaller bits gets too fast feedrates, and larger bits gets too slow feedrates, but also too deep (aggressive) pass depths.

The settings generator takes information from the user about which type of material is being cut and bit type, and outputs calculated feedrate, pass depth etc:

image

In an ideal world you want to spin the bit as fast as you can (max RPM), so you can move as fast as possible (high feedrate), while also cutting as deep as you can (deep pass depth). This gives the highest possible material removal rate (productivity).

The tricky thing with automatic milling settings is that for smaller milling bits it is the bit itself that is the limiting factor, while for larger bits it is the machine. A large bit can handle deep passdepths and high feedrates, but a machine frame might not be able to resist the vibrations sufficiently, or a spindle might not have sufficient torque to spin the bit at the while moving so fast and deep. An ideal settings generator would take information from a machine profile about the max cutting performance of a machine. this can be used to ensure that the calculated material removal rate is not more than the machine can handle.

Maximum and minimum cutting speed (the speed of the bits knife edge traveling though the material during a rotation) should also be taken into account. This is a combination of spindle speed and bit diameter. Two examples:

To summarize:

Another factor is finish quality (rough and fast cut with lots of vibration and clearing cutting marks, or slow and smooth with smoother surface finish). This can be achieved quite easy with a slider.

I have shared these thoughts with Leo McElroy (who is behind our cousin cam BarkBeetleJS inspired, by our original BarkBeelte for Rhino/Grasshopper). He is interested in helping develop this. And maybe implementing it in Kiri too. We have made a small start here. I think a python library or similar that we could use in all versions of BarkBeetle on all platforms could be very interesting. Does anyone have any thoughts, inputs and comments on our next gen settings generator?

Siemenc commented 3 years ago

Interesting thoughts and good summary of some common problems.

What about cut depth? Sometimes materials are thinner or cutting depths are more shallow than the pass depth that gets calculated and in those cases you don't get that much deflection, especially on shallow passes. But I guess this is more of a missed opportunity to optimize speeds rather than it being a problem so maybe something for the future to think about.

JensDyvik commented 3 years ago

Thats a good point Siemen. Leo and I did some work on the basic settings generator yesterday. One good approach could be to compare thickness of the material being cut too the estimated max pass depth, and then boost the feedrate accordingly up to for instance max 50% feedrate boost. A tricky part is that in some instances the slow feedrate is about surface finish/cut quality more than not loading the machine too much. More experiments and thinking to do :)

mikeFandA commented 3 years ago

It may be worth considering the material density and part-holding method too. The stiffness of the part as a whole during machining will contribute greatly to the resonance created during cutting. Even on a production machine a long flute cutter in hardwood will howl like a wild animal and leave some mild undulations in the surface finish. Hard to quantify, but the relative size, weight and secureness of the material could be some possible parameters which have some input into the cut depth and spindle RPM.

JensDyvik commented 3 years ago

Thank you for the input Mike! I agree with you that tool sickout, material density, part hold down/fixturing strength and part integrity would be great (and sophisticated) to take in into account in the auto settings. So far we have approached the challenge of these variables by having slightly conservative auto settings. This is not ideal, since it slows overall productivity. But the slider that allows for fast tweaking of the autosettings have been great and at least allows for fast compensation of long tool sickout or weak fixturing:

image

I am uncertain about what would be the best way to approach getting the necessary data into Bark Beetle with minimum effort for the user. For advanced machining centers with toolchange, I guess the data of the tool sickout could extracted from machine control (with compatibility and protocol challenges I guess). But for cheaper machines I dont know. Do you have any thoughts?

We have discussed earlier about auto calibration through having the cnc mill mill sample nibbs out of the stock and analyze with sensors (vibration and pressure). But thats a huge physical computing project on its own.

mikeFandA commented 3 years ago

No problem, happy to help! The material qualities could be an optional input to give faster cutting, so if the user doesn't input anything it defaults back to the conservative settings. Overall that would need a fair bit of experimentation and tweaking, but even the high-end softwares like Powermill and MasterCam require you to build functional data dependant on your setup. SO could be a could space for a community page for people to share their experiences of what works and not.

An easy way for tool depth is like you say to use a simple sensor and pull the data through the machine control, but that's pretty heavy on the grasshopper interface. One way would be to build a tool profile as you would on Powermill for example, where you do a 2d model of your tool properties for the software. The most straightforward way is to use a depth gauge, but they could also home the machine and use a clock to measure the travel, or perhaps a set of 3D printed gauge blocks. With that last method after you home your machine with your selected tool you just slide in the blocks and add up the total and pop it in, don't need to be printed of course could be bits of ply or whatever nominally reliable material you have lying around. Its an indicative value after all, I'll have a think about something a bit more clever.