Freesteel Blog » 2006 » March

Wednesday, March 22nd, 2006 at 10:34 am - - Machining 7 Comments »

Neel D asked in an email about how to do cutter location for a 3-axis tool. He’d read:

http://dimacs.rutgers.edu/Workshops/CompAided/slides/lee2.pdf

The interesting thing about all the academic publications of cutter location (using offset surfaces) is that it bears no relation whatsoever to how it is done in the real world. I’ve had conversations with the academics who publish these books and papers and they absolutely refuse to get it, since they don’t accept the fact that no CAM system does it their standard way is evidence of something important. Ten years of writing and selling this software in the field does not qualify me as having a valid point of view, whereas writing a few papers about a technique that doesn’t actually work somehow does.

The evidence that it doesn’t work is in the academic papers themselves, in the fact that they keep running into the same insoluble problems, while not accepting that considering a method where those problems don’t exist is the way forward.

It’s all very unfortunate for the science because it means a great deal of work that is done in academia is utterly wasted due to not getting the foundamentals right, and running aground at a lower level as a consequence. Had they got it right, there’s a chance they’d be making many contributions to the state of the art today. As it is, most journal articles on CAM are not even worth reading.

Someone could write a very interesting study of how the disconnect between industrial CAM software and academic CAM research came about and has persisted for so long, and everyone could learn a lot about how to adjust the scientific method to account for the general category of engineering science, but there is no way it would get published in a respectable scientific journal (ie one that influences people). Perhaps this is the crux of the problem.

Very very briefly, the cutter location function used everywhere in the CAM industry is as follows.

You have a function which takes a point (x, y), a tool definition T, and a single triangle tr, and returns z:

z = cl(x, y, T, tr),

where (x,y,z) is the position you need to put T at in order for it to just touch but not interfere with triangle tr.

If you have a surface S, which is just a set of triangles, then the full cutter location against that is simply:

z = cl(x, y, T, S) = max { cl(x, y, T, tr) for all tr in S }

Neel D asked:

(1) Is the point(x,y) on the model or is it above the model and then a Z value is found such that the tool T doesnot gouge triangle tr.

(2) So we are dropping the tool down incrementally and verifying gouge for each Z value till we just touch but not interfere with triangle tr?

(3) Do we provide a set of triangles that are below point(x,y) and under the tool shadow ?

(4) How do we do it for constant Z slices, do we calculate the slices directly on model and then find cutter location points using this slices ?
How do we generate single closed non gouging slice having same Z value?

Answers:

(1) The point (x,y) is on the clearance plane. Many types of toolpath are made from curves defined in this flat clearance plane whose points are sampled and projected down as cutter locations by giving them their z-coordinates.

(2) That would be one way to imagine it. In practice you can just as easily calculate the point of contact by using reams of tedious code that runs each different toolshape and against the seven components you have for each triangle (3 points, 3 edges, one face).

For a ballnosed tool of radius r at position (x,y) against a corner point of a triangle at (px, py, pz), you first work out the horizontal distance

d = sqrt((px - x)^2 + (py - y)^2)

If d > r the tool misses it entirely, so you set the result as z-lo, the height of the base plane. Otherwise, the result is:

z = pz + sqrt(r^2 - d^2) - r

And so on, for dozens of other cases for all different toolshapes. It takes several weeks to write out if you go at it, and is about as entertaining as replastering a four storey house on your own.

(3) It’s not necessary, because whenever the tool misses the triangle the value you get is z-lo, the base plane. However, if you write a module that does this it will run faster. It’s important always to keep in mind the distinction between the fundamental algorithm, which is usually very simple, and the optimizing code which is where the real complexity usually lies. The optimizing is not important for understanding.

(4) That’s a different problem which I won’t go into right now. But a good way to imagine it is you turn the model on its side and do one straight toolpath from the top to the bottom, and then turn it back upright again. You’ve now got a piece of Z-slice. What remains is to do it from several different directions and link them up.

Monday, March 20th, 2006 at 8:58 pm - - Machining 15 Comments »

This is the blog entry that our Online Adaptive Clearing Webpage points to for the first few weeks as a place for comments, impressions, advice, hints to us from prospective users. Please post anything you like, especially if you are a complete stranger.

We have cut back on instructions (which no one wants to read anyway) and made the interface as intuitive as possible. If we’ve missed out too much information so that you can’t understand it, please tell us and we’ll see what we can do about it.

While the online system lacks certain features, it should be adequate for someone to actually cut some metal if they are willing to give it a try. In fact, anyone who expresses the willingness to do this will have our undivided attention, and we will do whatever changes necessary to the interface or post-processor to make it happen.

Workshops are busy places so there is a reluctance to try something new that will always be risky and likely to cause delays in the course of ordinary business. This cutting algorithm should therefore be reserved for the hours of research and development, driven by exploration and curiosity, and the potential that this could have a big effect on tool life and cutting times in appropriate situations.

Like most CAM software programmers, we don’t operate machine tools ourselves, so we have no way to tell what those situations are. We also don’t hire salesmen to go out and exaggerate all its qualities on the basis of no actual data, and convince customers to buy it who are then unknowingly paying for the privilege of being tested on. We’re trying to do this the Open Source way of getting genuine facts from out in the field, none of which will be kept confidential.

So have fun and enjoy, and we’ll keep this going as long as it remains interesting.

Thursday, March 16th, 2006 at 6:10 pm - - Machining 4 Comments »

Martin has been working hard with the appalling javascript language to make a nice toolsheet that hopefully illustrates all the parameters in a dynamic diagram, so you don’t have to waste time understanding them from a manual. This functionality is ahead of most CAM systems.

Why is the user interface so important?

Firstly, nobody really understands what the Adaptive Clearing machining algorithm does. So illustrating the numbers on a diagram that shows how the tool flank is supposed to be cutting to a specific depth, ought to get the idea across.

Secondly, the webpage is free which means you can easily walk away from it before you discover what it does and go and watch an on-line movie, or order a pizza as soon as you get irritated. It’s a paradox that free stuff actually has to be more approachable than software that you pay for.

If you pay for something you are liable to give it your full attention for long enough to work it all out, because otherwise all that money would have been wasted. And the money that you pay out gets reinvested into advertising, salesmanship, and brand awareness of the kind that entices more people like you to buy it in the first place. It’s a feedback loop that makes it possible for a large company to effectively stand still in terms of software development.

Software, it seems, is difficult to sell on its own merit. Shareware didn’t really work, except for small applications like pkzip that everybody had to have or they could read the attachment that was sent to them on their floppy disk. There’s one aspect above all others that determines sale and use of software, that trumps all else. And that thing is familiarity.

Uh-oh.

Saturday, March 4th, 2006 at 11:55 am - - Machining 1 Comment »

Released a new version of our online version of the Adaptive Clearing today. This is again a lot closer to what we are aiming for, but it isn’t quite there yet. We found a few bugs already, and of course there are still some features missing that would visualize what we are on about all the time with this innovative way of roughing out a block of steel.
But now you can download a G-code toolpath file, after the machining has finished, right click on the text “toolpathname.tab”, and save to your local disk. You might want to edit the feedrates, see explanation at the top of the file, in the comments. Ultimately we will have a dialogue for the feedrates.
New feature is that you can draw a partial toolpath, and that you can select any point along the toolpath, I believe Julian explained how to use this feature in the instructions. Please give it a go!!!

Thursday, March 2nd, 2006 at 10:27 pm - - Machining 4 Comments »

The few times (maybe too few) I check this blog for unmoderated comments I tend to find spam, and it seems that there is more of that than genuine comments.

I hope this problem is solved now after installing a spam blocking plugin.