Description
Key Learnings
- understand the basic concept on how robots work, what robots can do and why they can do it
- differenciate a 5 axis mill and a 6 axis robot with regards to their capabilities
- be able to generate 6 axis fusion360 toolpath that are ready for be executed on a Kuka KRC controller
- understand the downsides of using a robot arm for milling applications.
Speaker
- SKStefan KnorrI'm an engineer from Berlin, the capital city of Germany. I completed a Dipl. Ing. Physikalische Ingenieurwissenschaft with honor at the Technische Universität Berlin. In my past work at Charité and Biotronik I further developed my engineering skills, trained the creative parts of my brain and improved in debugging. In 2011 I started my company designing. I offer constulting and hands-on for various stages of your idea ... brainstorming, researching, designing, developing, prototyping, testing, fabricating, assembling, optimizing ... I do have manufacturing capabilities using manual machines as well as using a 4 axis high speed mill and a 7 axis robot setup.
STEFAN KNORR: Welcome. My name is Stefan Knorr. I'm from Berlin in Germany. I'm going to talk about subtractive machining with a Kuka arm and give you a little overview on what I've done, what I'm working on now, and some details about robots and manufacturing.
So who am I? I'm an engineer having a small company for designing, engineering, and prototyping in Berlin. I have a long experience in R&D, in medical department, usually, so you can see me working with a robot for the first time in my life, doing some measurements for our F testing, basically. And that was a time when the first megabots came out, and I slowly got dragged into fabrication with machines, like printing and CNC machines.
And shortly after that I joined FabLab team. So FabLab opened in Berlin, and I got into that, and I got it kind of teaching license. So I teach all the members on the CNC machine. And shortly after that FabLab developed some research department, and that's when I kind of started using Fusion in a very intense way. So you can see some sample works here. That's a finger design for a prosthetic hand based on rather simple inputs, like just some lengths, geometries, and the idea was to create a hand based on very simple measurements and still have it looking kind of organic.
And the next project in FabLab was related to Kukas quite intensely, not subtractive, but additive manufacturing. So the idea was to use all the degrees of freedom that robots offer to print objects that you just can't print with regular printers because you're limited in orientation and the material. So we would like to print objects and print onto objects. So the idea was to have a rather thin structure and reinforce it locally to gain what we are after.
And I want to show you just some highlights sample prints that we did. So the first thing is the time lapse of a kind of extruded Fusion design it's just a circle kind of swept along a curve, pretty basic, but you clearly see how the printing plane tilts back and forth during the print until the very end in a very continuous way. So it's really-- It's still slicing, but it's not parallel to the printing bed anymore. And that was still just testing our slicing algorithm.
You can see the details of the finished print still on the platform. Pretty uniform, pretty good, just a few artifacts based from the robot mechanics. On the other pictures you see, like the blue one is a similar object, a circle swept around kind of helical guideline. And on the right, you see a multi-color print of the fractal based tree structure that you could hardly print with regular printing technologies.
So that's what I've been doing with robots in the past with FGM printing, and now, what's it all about today in the talk. I want to explain some major differences between classic machinery, like three axis, five axis compared to the robots. I want you to understand what makes robots so special and some of their behaviors. And at the end, I will give you a short outline on what I have been doing with the post processor that's running in Fusion to generate tool paths for the robots to machine in an subjective way. So with the spindle attached.
So I assume most of you know more about the CNC machines than about robots. So I'm going to just start by comparing both of them to give you a little introduction on what are the major differences, what's kind of similar, and what makes robots so different in the machining world and the CNC machines.
So here you just see a random example of a CNC machine and robot arms. At the first place, you see the CNC machine as being a metal box with plenty of stuff in there, big display on the outside and the door to open it. They come in whole sizes, features, power levels, precision levels. And usually they are made for one application or one user case.
And robot arms look all really similar. They usually consist of six joints, so you start, if you look at the right picture, you see the black base of both robots and then the first joint, and then you have another joint above that. And each joint is moving the rest of the robot. So the first joint moves all the other five joints. The second joint moves the left over four joints, and so on. So you have a series of joints.
And all of those joints get smaller and smaller until the very end. And it's-- If you look at CNC machine with all its linear bearings, and if you have fours and fives axis, you have rotary tables as well.
But the robot is pretty flexible in that sense. So if you imagine you put an indicator on CNC machine and put a spindle to get some deflection, that's really, really hard. When the robot you always get deflection if you push against the tool head, and that the major differentiation. So like especially modern CNC machines, they are really made for high accelerations, hydrodynamics, and you can really get crazy moves out of those machines.
For robot arms, you can still get really high speeds, but if you want to stop them fast, you end up with vibrations that you usually don't want.
Another big difference is where CNC machines get built to a specific need, like five axis, four axis, big parts, more parts, robots usually are not made for machining. So what you end up having is you get an off the shelf product, and you just attach whatever you need for machining, let it be a spindle and maybe cooling or welding gun or a glue dispenser, a gripper, a printing head, all of that stuff.
And robots are not specifically made for one job, usually, so the customer has to take care about implementing all the add-ons that's required for that job.
And that's just in the first place. So there is a difference. And on top of that, there's something that's really specific for robots that you don't have on most CNC machines. So let's start on the left side.
If you think about a three axis CNC machine, and you want to go to one specific location, then there's only one way to get there. And for robots, that's not the case. So if you have a robot, and you see an overlay of two robots having the same position for the base at the same position for the tool head, but the configuration of all the joints between the base and the tool head is different, and still both reach the same point. You don't have that on CNC machines. And on a user basis, that's not a big issue. You can just choose which one of those two poses you prefer, and you want to have, but you have to make the choice unless you don't care, and then the robot just does whatever it wants to do.
The second topic that's specific to robots compared to CNC machines, and that singularities. And I'm sure you heard the term before. So imagine you have that kind of curved path, and you want to move from one end to the other, and make the blue configuration to the blue. There's one specific configuration in between those two, that is called a singularity. And what it means is, you see three joints in that picture. The last one is the joint that rotates the tool on the flange. And then there's one that's tilting that whole assembly. And the next one is in line so that's A4 that's in line with the last one at that orange configuration.
And what that means is that you're turning your six axis degree of freedom into five axis because you align two axis and that means you lose your degree of freedom. And if you get to that point, or close to that point, what's going to happen? You don't get a blue screen. You don't get something bad. But what happens is you follow along the path, and suddenly the robot slows down pretty much to a full stop.
If you look at your tool tip, but what happens is that the force and the six joint those move at really high speed in opposite directions almost canceling out each other. But since you have speed limits on all axis, your actually tool tip will slow down quite a lot at that point in time. And usually you don't want that.
So that is specific to robots. The most common singularity is really the one between A5 and-- A4 and A66. There are some more, but usually you don't notice those. That's not a good thing with robots. But the good thing is if we talk about subtractive machining with robots. We have a little goody. Imagine that your cutting tool, like an [INAUDIBLE] that's spinning, you wouldn't care about if that's held by the spindle in that orientation or that orientation.
So what you can do is you can reorient your spindle along the tool axis and nothing will happen for your actual machining, but something would happen for the robot itself. So on the right side pictures you see the upper configuration is just the one in singularity mode. So two joints are on one line, and you don't want that.
And in the lower picture you can see the spindle, the actual tools, in the same orientation, but the robot is not at its singularity configuration anymore. And that's because you just spin the whole tool head around the tool axis because you don't care about that. And if you make a clever choice on that angle, you can stay away from singularities and get a real good machining result.
And usually if you get that degree of freedom you can make a good choice or, of course, you can make a bad choice and run into singularities more than we ever want. But of course, you want to make a good choice and stay away from those singularity points.
So if you never had a robot arm at your fingertips to operate, the question might be, how do you control a robot? What's the basic idea? And usually you have two choices. One is straightforward. It's like jogging is a CNC machine, so you have all those six joints from A1 to A6, and you can just assign values to those. And the robot will move to that configuration, moving all axis to those specific angles.
That's intuitive. You just take your teach panel and tell each axis where to go. Or you can write some code to do the same thing. The good thing about that is you avoid all that singularity issue because you just move the axis and gives them a new target position and the robot just goes there and there is no way about singularities. You can just pass through them, but there is no issue that everything will slow down at that point in time.
But if you imagine you want to follow on a straight line with your tool in that programming mode, then you would have to recalculate all the joint angles to stay on a straight line. And usually that's tricky because if you move on a straight line, then all axes move at the same time in a rather strange way. And you have the control of the robot, and that controller does exactly that for you.
So what usually you do is you tell the robot how to move in a selected coordinate system. And then you just tell it to move along x, y, and z, and to reorient in that coordinate system. So what you have to do is you have to define a base, like your origin, x, y, and z. You have to tell the robot where that is, and then the robot can move its tool in that coordinate system.
And then all the joint angles are calculated by the controller. You don't have to care about that. And that's really good because you don't want to do that, essentially. One important thing about that is you can have a different tool paths with different base elections. So imagine it's like your G54 on a CNC machine or your other work offsets. So you can execute the same code for different bases that one be here and one be here and one be here, and execute the same code, and you get the same part machined on three different locations. So that's really like G code. So it really feels the same. There's not a big difference in that.
Now, a little anecdote going back to the title of the talk about why reading the manual. And that's like, depending on how you got trained on your machine, let it be a robot or even a CNC machine, you might not have learned everything. There might have been stuff that's left out for any number of reasons. And if you have the time to read the full instruction of your machine, you might find some stuff that's really good and that no one told you. And that can be beneficial to your project.
So I did that. I got the really big manual from Kuka for the machine, and I found something that was really interesting for me, for the printing aspect of the robot control. So let me point out what robots usually do.
So on the left side, you see the little picture with three points, P1, P2, and P3. It could be more than that. So you define those waypoints by six numbers, usually. So that position of your origin where you have to go, and then, of course, all the angles for the orientation. And the robot will move from one point to the other until all the waypoints have been passed.
But there's one detail, and that's you can see that at P2 you don't actually reach that point until you really force the robot to go there, stop, and then accelerate, and go to the next point, and stop again. So there will always be some approximation happening, which is similar to CNC machines, but since the acceleration profile is not as dynamic as on a CNC machine, the approximation might be rather big and even too big for your application.
So what it means for CNC machining is, if you, let's say, you cut a square with a robot at a certain speed, you will always get fillets at the corners. And if you increase your machine speed, those fillets will be bigger, and you end up with a tool path that result is depending on the machine speed. And that's not really wanted.
So what I learned from reading the manual is that there's a second completely independent motion planning algorithm in the control that's based on splines, and you can see on the right side of the picture there's a bunch of points, and the spline doesn't do approximation from one point to the other, but it really follows through all the points. And that makes a big difference because that pass will be the same no matter how fast you move because there is no acceleration happening at those points based on approximation settings.
So if you run the robot really slow for that spline, it's going to be the same as if you double the speed. So there will be no deviation in terms of mechanical positioning of those points in space. And that's really critical for precision work. It might not matter if you do pick and place with a robot because usually your gripper or your vacuum suction device, that's quite flexible, and there's not much precision involved. But if you really machine some details on parts or if you print with a really thin, fine nozzle, then you will notice that deviations even if they are kind of small.
So that detail was really helpful for our printing project, and I wanted to translate that for machining with the spinner, as well. So what happened?
Let me just introduce you a little bit onto robot milling with some general thoughts about what you have to consider when you use Fusion or other tools to generate code for robot milling, and then we come back to that spline, post-processing in the next slides.
So one thing we have to do when you want to use a robot, and that's really a big difference to five axis machines. You have to define more things than you usually do on CNC machines. So imagine the robot. It's a pretty clever machine. It has a base, and it has a tool [INAUDIBLE], and it can move almost independently and almost anywhere with all kinds of orientations.
But if you add something to the robot, let it be your spindle or welding gun, the robot doesn't know what that is. It doesn't know how big that is. It doesn't know where that is, and it doesn't know its orientation. Same is true for your work piece. So the robot has a certain base where it's mounted on, but it doesn't know where your vise is going to be, where your vacuum table is going to be, or where whatever you are working on is going to be. So you have to tell the robot those two things at minimum. And you have to be really precise about that.
And you shouldn't underestimate the effort it takes to get that really precise because it's six numbers for the tool, and it's numbers for the base. So it's the position of the origin and it's the orientation in space for that origin. And that's for the base and for the tool. And where you use your touch probe on a CNC machine to get an edge finding algorithm or something, on the robot, you have to do more than that because the edge tells you the position of the origin, but it doesn't tell you how that is tilted in space. And you have to tell the robot how that really happens. And if that's off by, let's call it, one degree, that's quite a lot because then everything you do with the robot is off by one degree.
So that's where really you have to make a good choice on how precise do you want to be, and how to get there because that calibration of the base and the tool can be quite tedious, to be exact. But depending on what you want to do, and how precise you want to be, that can take quite long. If you would just, even for machining, if you just have a big tool on the machine, you might not worry too much about that precision.
One aspect that you should not forget about when you start programming toolpath in Fusion is you want to keep the dynamic load of the machine pretty low. You want to keep the speeds as equal as you can. So if you want to cut something, you want the lead in, the lead out, the feed, and the ramping feed rate to be equal, in a way. There's no reason to ramp in to something fast and then slow down because what you do is you induce vibration at the point where you transition from ramping to cutting. And that's not beneficial for anyone.
Same is true for the lead in radius. There's no reason to make that small because if you want to make that really small, you get plenty of acceleration, and that's going to induce vibration. So keep the feed rates equal and really increase your lead in radius until you hit some limits. But it's usually like 10 times more than you would do on a CNC machine unless there's a reason to stay smaller.
And once you did all your programming and tool path generation, there's another thing you have to do and that's checking. And checking is more complex for the robots I found because you don't just care about the points that define your tool path. You really care about the orientation of the tool path. And you can easily see that in Fusion, so there's a checkbox to show the tool axis in the preview. And like on the picture, you see that there are four circles on a sphere, and the points are equally spaced, and you could assume that that's going to be a nice tool path.
But if you look at how the tool axes are oriented, you notice that there's something going on. So you would expect all of those tool axes to form the taper, to be a part of a cone, but there are some oscillation going on, and that's not good. You don't want to have that with the robot because what it means is you have your tool tip that just moving on a circle, but your orientation changes from every small point to it's tiny neighbor, and that means that the whole machine, all joints of the robot, have to move just to get that small oscillation running, and that will induce vibration, and you don't want that. That checking is really important. And if you don't see that, you might end up with the part that has shatter marks all over the planet.
Now, I want to show you a little bit of what I've done to the post processor for Fusion to get code for the Kuka. So I started with the Fusion post that's available. Why did I do that? So the first thing is I'm a Fusion user for my CNC machine, and there was no reason to get used to another tool set. So I really wanted to use Fusion to do machining on the Kuka arm as well. So that was the first idea. Why not keeping the same tool?
The second thing that's really important for me is I can has the same origin defined on both machines. What I mean by that? What I mean is I have zero point clamping machine on my CNC. So I can have my work piece. Let's say that stock of steel, I can put that on a given point, on a known point, on a CNC machine. I can do machining on there. And then I can take that vise off, put it onto the robot.
The robot knows the position of the device, as well. And then the robot could do some engraving from strange orientations, or do some other stuff to the part, like maybe some grinding or some painting, God knows what. And I can still use it and the same software, and the same machining environment. And I can even have the same CAM set up because I can set the origin to be exactly the same on both machines. And that's pretty important because otherwise you would have to translate and track all your orientation changes from one machine to the other.
So that's a good reason to stay in Fusion, and I've been really glad to find a post that already working in Fusion. And then I did some modifications to that, basically, based on the experiences from using the Kuka for printing applications.
So you will find that post in the material handout. Watch out to run that stuff on a machine because it's really experimental, and you should really check what's coming out of the post processor at the end of the day.
Some things that are really important. For that code to run on a machine, on a Kuka machine, you don't need any special package. It's really plain Kuka robot language. That's kind of the G code style for robots, from Kuka, and you don't need a special package to run that code. So that was important for me because I don't have a special package to run on my machine. So I have to stay in that plain Kuka robot language envelope.
And what I started changing based on the original post was I implemented SPLINE motions with all the advantages I mentioned, so that you would stay on the same path no matter how fast you execute the path. And you can limit the amount of points you need to define a certain path because you get really good interpolation, and you don't get artifacts because of linear segments used to approximate a circle, for example.
Another thing that I wanted to add, so that's fine option comes with a few options, you see. That will be detailed in the handout.
Another second thing that I changed was the turntable support. So my robot has six axes, as they all do, but I have an additional turntable with a vise mounted onto it, and that allows me to orient my part so that the Kuka arm can machine all sides, but basically, the robot stays in the same plane. So you avoid collisions by that, and you get more repeatable results. Otherwise, you would have to move around with the whole robot, and it's just easier to do it with a turntable. And I wanted to get that running. This was huge, and so I started working on that as well.
And then I changed some basic settings on how you define your base, like your origin for the tool, and the origin for your work piece, just based on my workflow that I used on the robot before. So that's just personal preference in a way.
So finally, I'm going to show one example of a really simple tool path, just a five axis [INAUDIBLE] tool path. You can have a look at the Fusion preview. So it's really just lead in, lead out. One circle will move with different angles for the other tool. And the first, the left side video shows what looks like if you look from the part upward to the spindle. So you see it's a circular move. It's going to reorient, and let's drop down.
And on the right side, you see the same machining tool path, but this time the vise sitting on the turntable is turned by the turntable and the camera as well. So it looks a bit weird because your viewpoint is changing. But have a look. It's the same tool path at the end of the day. So that's the lead in move, and now the turntable starts turning. The robot actually stays in the same position almost. It's just changing the angle of the tool. And there we go. Lead out, and retract. OK.
So that's where I am now. So it's still a work in progress. Plenty of features that are going to be tested and need more documentation on some of the features as well.
That's a little example of how the code looks like. So for all of you who have had a look into G code, it's pretty much the same. So there's some setting up, selecting tools, selecting the base, setting up the spindle speeds, and at some point in time, it just starts getting lines full of numbers telling the machine where to go and how fast to go.
So that's it for my site. I hope you learned something, and I hope we all learn something in the upcoming question session. And thanks for your joining, and I'm looking forward to the question session. Thank you all.