TCP 5-axis kinematics

More
21 Dec 2018 02:18 #122670 by grandixximo
Replied by grandixximo on topic TCP 5-axis kinematics
It's a shame that there is still no way to switch Kinematics anytime without having the machine jog, i hope to see it one day!

Please Log in or Create an account to join the conversation.

More
21 Dec 2018 16:02 #122708 by 3D-Master
Replied by 3D-Master on topic TCP 5-axis kinematics
well it kinda is a drawback because i wanted to write a Kinematics calibration program where i touch off a precision ball, then with TCP enabled rotate the C axis 90 degrees, then disable TCP and touch off again, repeat until the axis is at 0 degrees again and then turn the B axis 90 degrees in both directions to be able to accurately probe the center of rotation. (thats how i do it at work on the hermle)

Please Log in or Create an account to join the conversation.

More
25 Jan 2019 19:26 #124848 by automata
Replied by automata on topic TCP 5-axis kinematics
Hi,
We have developed a patch for linuxcnc 2.8pre with joints/axes separation which allows you to switch between 2 different kinematics which will allow the axes positions to be updated from the new kinematics during the switch.
The new axes positions are calculated from the current joint positions. You donot need B,C axes to be at 0 position during the switch.
I will upload this patch to github in the near future.
We have been using this patch for a non-standard machine developed for which we needed G2,G3 arc commands to be used in X,Y axes in one configuration and in X,B axes in another configuration from the same Gcode file.
We have selected to do it via G12.1 P,Q (new gcode added to the gcode interpreter). So the patch is a little long and touches multiple files.

Good work on the 5 axis kinematics and implementation. Impressive...
-automata

Please Log in or Create an account to join the conversation.

More
25 Jan 2019 20:32 #124855 by automata
Replied by automata on topic TCP 5-axis kinematics
jsskangas:

With regards to you comments on Axis vs joint velocities and accelerations being related by non-linear functions...
Do you have any idea how commercial controllers solve them?
One way I can think of is to break down the commanded line into small segments and check for the axes to joints velocity and acceleration transformations/kinematics for each segment and limit the overall velocity of the commanded motion by the limitation of the lease joints velocity. Is this viable in real life? It could be done inside the interpreter OR before the motion block is passed to realtime with a feed value.

For jerk limitation and S curve planning, my observation has been the both Siemens and Fanuc donot use true jerk limitation in their lower and mid level offerings. Fanuc uses a jerk time limiter method (parameter 1772). This is also called the acceleration change time and is specified on a vector path instead of each individual joints/axes. It also has a jerk change time percentage which allows for bell shaped acceleration.
My take on this has been to first do the planning as a trapezoidal planner and then convert that to a jerk percentage planner as is shown in this article ( support.motioneng.com/Software-MPI_04_00...s/diff_mtn_types.htm ).
Do you have any insight into these issues?
-automata

Please Log in or Create an account to join the conversation.

More
26 Jan 2019 03:25 #124872 by Leon82
Replied by Leon82 on topic TCP 5-axis kinematics
As far as comercial,
Fanuc uses twp (tilting work plane) for 3+2. This let's you use canned cycles and normal cuttercomp, g43. Xyz move as xyz. The control tracks the work offset point.

Then when you are doing 4or5 axis work it uses TCP and g43.4 .

Most major machines do this but all call it something different

Please Log in or Create an account to join the conversation.

More
26 Jan 2019 14:48 #124896 by robh
Replied by robh on topic TCP 5-axis kinematics

automata wrote: jsskangas:

For jerk limitation and S curve planning, my observation has been the both Siemens and Fanuc donot use true jerk limitation in their lower and mid level offerings. Fanuc uses a jerk time limiter method (parameter 1772). This is also called the acceleration change time and is specified on a vector path instead of each individual joints/axes. It also has a jerk change time percentage which allows for bell shaped acceleration.
My take on this has been to first do the planning as a trapezoidal planner and then convert that to a jerk percentage planner as is shown in this article ( support.motioneng.com/Software-MPI_04_00...s/diff_mtn_types.htm ).
Do you have any insight into these issues?
-automata


if you read the manual for the M80/M800 mitsubishi controls they even still do it like this it seems too, as they do have a nice section on it how it works, they seem to apply the jerk limit after the planning also, and this is on a current new level control. only when you have there smooth pathing for high speed machining things seem to get alittle different .

your takeon the fanuc way also seems correct from what i have read and understood, again only when you apply there nano path control but thats just a high speed look ahead in truth.

little off topic for this post i think..

Please Log in or Create an account to join the conversation.

More
26 Jan 2019 15:00 #124898 by r.lol
Replied by r.lol on topic TCP 5-axis kinematics
Kindly checkout Switch Kins Branch I've added a new gCode G12.1, which invokes a switch in kinematics.

Any mathematical function can be written in either cases.

Further I also have planned to have variables passing along with G12.1 Pxx Qx.xx which can be transported to Kinematics switch method.

One can call G12.1 in order to switch between 2 modes.

Please Log in or Create an account to join the conversation.

More
26 Jan 2019 15:04 #124899 by r.lol
Replied by r.lol on topic TCP 5-axis kinematics

automata wrote: Hi,
We have developed a patch for linuxcnc 2.8pre with joints/axes separation which allows you to switch between 2 different kinematics which will allow the axes positions to be updated from the new kinematics during the switch.
The new axes positions are calculated from the current joint positions. You donot need B,C axes to be at 0 position during the switch.
I will upload this patch to github in the near future.
We have been using this patch for a non-standard machine developed for which we needed G2,G3 arc commands to be used in X,Y axes in one configuration and in X,B axes in another configuration from the same Gcode file.
We have selected to do it via G12.1 P,Q (new gcode added to the gcode interpreter). So the patch is a little long and touches multiple files.

Good work on the 5 axis kinematics and implementation. Impressive...
-automata


Here's the branch .

Please Log in or Create an account to join the conversation.

More
26 Jan 2019 17:08 #124905 by 3D-Master
Replied by 3D-Master on topic TCP 5-axis kinematics

Kindly checkout Switch Kins Branch I've added a new gCode G12.1, which invokes a switch in kinematics.

Any mathematical function can be written in either cases.

Further I also have planned to have variables passing along with G12.1 Pxx Qx.xx which can be transported to Kinematics switch method.

One can call G12.1 in order to switch between 2 modes.


so basically if i position a tool relative to the center of rotation (z/c axis) for example it shows x50y0 then i enable TCP, rotate 90 degrees, disable TCP and the readout shows X0Y50? this is what i was hoping forever Linuxcnc should be able to do.

how would that work? specify two kinematic files in the hal/ini? or call the kinematics like this G12.1 <5axis>?

but most importantly, how do i update to 2.8 and would my machine config work with 2.8?

i need a video demonstration asap, if anyone could share i would be very happy!

thanks

Please Log in or Create an account to join the conversation.

More
29 Jan 2019 11:59 #125157 by automata
Replied by automata on topic TCP 5-axis kinematics
Hi 3D-Master,
Your expectation is on the correct lines but slightly off.
Please bear my pedagogy for a bit, but I believe a few lines of explaination will bring the problem into a good perspective for the casual reader too.

We can liken the machine operation to that of a Robot. There are 2 reference cartesian coordinate frames (with rotation matrix), one attached to the base (World coordinates) and one attached to the Tool tip (tool frame).
The essential objective of kinematics (both forward and inverse) is to transform the tool frame coordinates (expressed in the world frame coordinates) into the joint frame (actual positions of each joint) and vice-versa).
In the case of using RTCP, the position to achieve is specified in cartesian/task coordinates attached to the workpiece (similar to the tool position of the robot). This position needs to be transformed to the joint coordinates for the machine to move. Further for comparison, the joint coordinates of the machine need to be transformed into the cartesian frame attached to the workpiece (tool tip in the robot analogy).
So, we have Joints and axes which are related via kinematics. At startup J0 <-> X, J1<->Y, J2<->Z, J3<->A, J4<->B, J5<->C.
So your expectation for transforming between the two frames is:
1. Start machine in joint coordinate space. Move tool to J0 to 50.
2. Switch kinematics to task space, and observe that X=50, Y=0.
3. Switch kinematics back to Joint space. Move J5 by 90 degrees.
4. Switch to task space and observe that X=0,Y=50.
This is possible with current implementation of kinematics in linuxcnc without any patches applied.
Can you clarify if you want something different?
The patch we have made allows switching between two different kinematics applied to the same machine. Of course you can consider the joints positions as trivial kinematics and the machine kinematics as something else. But point remains that linuxcnc has had the capability of switching between joints(trivial) and task kinematics atleast since the merge of joints axes branch.
Regards,
-automata

Please Log in or Create an account to join the conversation.

Time to create page: 0.108 seconds
Powered by Kunena Forum