TCP 5-axis kinematics
That's interesting. So there is an established G-code for this?
So, not exactly what I was hoping for.
Still, it is an interesting idea to simply create a new feed or tool-length G-code that does this calculation. G94.1 Xn Yn Zn... for example.
Other controls use different codes, sometimes an m code and they all call it something different too.
3D-Master wrote: how do you tell linuxcnc where the center of rotation of ABC is?
You can't tell it, and to an extent it doesn't need to know.
It would be useful to be able to do this to get a more accurate graphical preview, but it has no effect on what the G-code does.
well, at least what i think (correct me if i have a false thought) is, Linuxcnc should be able to grab the variables from the .var file in order to be able to change/correct (calibrate) the center of rotation on the fly (meaning no restart of the machine). also then you could have the machine origin where you want.
Basically afaiu the center of rotation is "locked" to the machine origin right? that means i would have to manually write the position in the ini file and then start the machine. But then when it is running it may shift over time and when i start the machine again the theoretical center of rotation is no more at the physical center of rotation so i have to manually recalibrate -restart the machine. Thats what i would like to avoid and make it automatic via subprogram and variables.
I would have to check, but I think that the graphical preview assumes that the centre of rotation is at the origin of the current working coordinate system. (not the machine coordinate system)
The motion planner doesn't make any assumptions, it simply does not care as things stand.
Sorry I have been away for while,
I have had so much work that I have had no time to do anything else.
I will read all messages soon and I will give some input to this topic.
I have solution for 3+2 indexing work where zeropoint is fixed to workpiece,
and its translated along with rotated part.
This is now a subprogram that moves one zeropoint.
To make this as standard linuxcnc command will need a lot more.
Feedrate in 5-axis motion is a topic of it's own.
There are basically two different 5-axis modes.
First is fixed to table, this means that coordinate system is fixed on part.
When part or tool rotates coordinate system will rotate along with them.
This means when you command rotary axis motion, position relative to part will not change.
So this translates to no feed rate change from rotary motion.
This is one and most best feature of it.
Second one is coordinate system fixed on machine.
This means that coordinate system will not rotate along with part.
Best thing about this is that X axis is still along original X axis regardless of rotary position.
to calculate this compensation is not a easy task and you need compensate rotary feed rate as well.
And this will complicate things a lot, easiest way is to run this mode in inverse time mode.
Commercial controllers do this feed compensation automatically.
But I have only seen Fanuc based controllers to do this non-rotating mode.
I will not go in to acceleration in 5-axis motion or motion planning in 5-axis motion.
I do not have so much experience in math in this topic that I could say something...
But I will try to give my best feedback on this issue.
We could do a general kinematics module for LinuxCNC.
Where you only define what rotary axes you have and relative distances between these axes.
Then rotary center needs to defined relative to machine zero.
I think we need to push this from one man's solution to of the box example in basic linuxcnc installation.
This will need solid documentation how it works and simple explanation how to define parameters correctly to get it work.
Usually I do use my zeropoint at rotary center, this is by the way more safe cause you will know exact place of your machine vice or other stuff.
But there are some situation where you need take zeropoint to known feature on part.
Example when you need to do second phase of part and run 3+2 machining to it.
If you know the center of rotation you can set the post processor to calculate the offsets for 3+2 work.
this is exactly what we want to avoid. We want to be able to position the part wherever we want and still get the same part or when you have to correct something on an existing part, which needs 5 axis work