I'm looking at problem concerning stud welding programming. I recently got asked if I knew how to speed up the process of getting an industrial robot programmed quickly. This is a workcell where a Panasonic robot welds studs on a sheet metal casing. The sheet metal case is clamped on a "4th axis", and can rotate +/- 90 degrees to bring the sides of the casing in a horizontal orientation for the welding.
here's an example I made to give you an idea Programming is done by a proprietary program from Panasonic, called DTPS, and it's taking a lot of grunt to program the positions of the studs (180 pcs on one side). This production facility manufactures low volume high mix parts. So same type of products, but a lot of varying sizes.
The process now consists of an engineer opening a STEP file in a CAD program, converting the studs to a thumbnail pin model, saving the entire model as VRML (mesh). Then, the robot programmer imports the VRML model, and has to select a vertex on the thumbnail pin so the proprietary program knows the position the tool has to travel to. Times 2 actually, because after the welding, the robot has to move straight op because the stud is in the clamp.
It's a shame really the convoluted way these relative simple operations are programmed.
Yesterday evening I've played around with FreeCAD a bit, and it seems that traversing the attributes list (after importing the STEP file) will quickly give me all the stud positions. If I can come to a solution where I can generate a path for positioning all these studs (different types) then it would enormously simplify the workflow. Being able to work from the original data.
So I guess my question to you developers is:
What are the best steps to approach this problem. If I can contribute something to an open source project I'd be happy to do just that. I have programming experience and Python is not a problem. However I dread diving headlong into a codebase I'm not familiar with at all, or do not know the design considerations / best practises. I guess I'm trying to limit this to a certain scope so I can decide if this is something within my abilities and time.
Summarized, the way I see a working solution is like so:
- load the STEP model
- define an axis (4th axis) in relation to the imported STEP assembly
- be able to define which side is op (4th axis rotation)
- select a plane to touch off heigh
- select a hole/cylinder to touch off by probe (the center will be the starting point for the probing routine)
- Automatically select studs by name
- move studs around in a list, so the order can be changed
- per stud, define some offsets, like approach above a plane, so an initial gap is between stud and sheet metal case, and travel so the stud is out of the clamp before moving on.
- output the tasks to an ASCII type file which can be further processed.
Thank you for reading this far
Best,
Bas