# TCP 5-axis kinematics

23 Aug 2021 07:52 #218466 by jurod
Replied by jurod on topic TCP 5-axis kinematics
I've seen everything possible before, but without success.
Where do the following points lie in space?
setp xyzbc-trt-kins.x-offset 0
setp xyzbc-trt-kins.y-offset 0
setp xyzbc-trt-kins.z-offset 0
setp xyzbc-trt-kins.x-rot-point 160
setp xyzbc-trt-kins.y-rot-point 0
setp xyzbc-trt-kins.z-rot-point 0

23 Aug 2021 08:04 - 23 Aug 2021 08:07 #218468 by Aciera
Replied by Aciera on topic TCP 5-axis kinematics
This is from the description:

xyzbc-trt-kins (switchkins)
Uses remapped user m codes for kins switch:
M429: Identity Kinematics
M428: XYZBC (TCP)
M430: userk Kinematics A
hal net is required to connect the analog out pin N,
Example (for N=3): net :kinstype-select <= motion.analog-out-03net :kinstype-select => motion.switchkins-type

Hal Input pins:xyzbc-trt-kins.x-offset, xyzbc-trt-kins.z-offset:
X and Z offsets are the offsets from the center of rotation of the B axis relative to the center of rotation of the C axis.
Hal Input pins:xyzac-trt-kins.x-rot-point, xyzac-trt-kins.y-rot-point, xyzac-trt-kins.z-rot-point:
X, Y and Z rot-point pins represent the offsets of the center of rotation of the C axisrelative to the machine absolute zero

But I'll say it again if your machine has indeed a rotary/tilting spindle then the -trt kinematics will not work for you. The math in the  -trt kinematics is not going to work for an -srt machine.
Last edit: 23 Aug 2021 08:07 by Aciera.

24 Aug 2021 06:54 #218589 by jurod
Replied by jurod on topic TCP 5-axis kinematics
so i have to go to kinematics xyzbc-trt-kins?

25 Aug 2021 09:16 - 26 Aug 2021 08:26 #218691 by Aciera
Replied by Aciera on topic TCP 5-axis kinematics
I have not really seen more than a quick glimpse of the spindle of your machine but if your machine has a rotary/tilting spindle like this:
linuxcnc.org/docs/2.8/html/motion/5-axis-figures/Figure-11.png
Then you should try '5axiskins'. Have a look at the simualtion at /configs/sim/axis/vismach/5axis/bridgemill

If you have a setup like one of these (ie a tilting/rotating mechanism on the machine table) then either 'xyzac-trt' or 'xyzbc-trt' will be useful to you:
linuxcnc.org/docs/2.8/html/motion/5-axis-figures/Figure-3.png

linuxcnc.org/docs/2.8/html/motion/5-axis-figures/Figure-7.png

There are also mixed types. If you are still unsure then please post a picture of your machine.

There is also documentation on a XYZBC-SRT kinematic by the same author who contributed the xyzac-trt and xyzbc-trt kinematic: forum.linuxcnc.org/media/kunena/attachme...5-axis-machines2.pdf

[edit2]
I made a simulation from the documented xyz-srt kinematic mentioned above and, as far as I can tell, it does basically the same as  '5axiskins' does in the 'bridgemill' simulation config.
Since I don't really have any hands on experience with 5-axis machining I can't say more than that.
##### Attachments:
Last edit: 26 Aug 2021 08:26 by Aciera.

23 Sep 2021 09:37 #221413 by jurod
Replied by jurod on topic TCP 5-axis kinematics
I am sending photo.
So should i go back to 2.8.2?
##### Attachments:

23 Sep 2021 16:19 #221438 by Aciera
Replied by Aciera on topic TCP 5-axis kinematics
Nice machine. Looks like the XYZBC-SRT kinematics would be the most likely to help you. The most important thing is to get the offsets of the rotational axis correct. Do you have any dimensional drawings of the machine head?

So should i go back to 2.8.2?

No, I think you would want to use the master version as you might find the 'switchable kinematics' feature useful.

03 Oct 2021 14:44 #222108 by jurod
Replied by jurod on topic TCP 5-axis kinematics
Dimensional drawing in the photo.
##### Attachments:

04 Oct 2021 11:29 - 04 Oct 2021 11:35 #222190 by Aciera
Replied by Aciera on topic TCP 5-axis kinematics
Have a look at 5axiskins.c in the linuxcnc/src/emc/kinematics folder. That kinematic is used in the simulation configuration found at /configs/sim/axis/vismach/5axis/bridgemill/5axis.ini

Inside '5axiskins.c' you will find some commentary and the definition of the DEFAULT_PIVOT_LENGTH that you will probably want to change to 160:

/********************************************************************
* Description: 5axiskins.c
* kinematics for XYZBC 5 axis bridge mill
*
* Derived from a work by Fred Proctor & Will Shackleford
*
* Author:
* System: Linux
*
*
* Notes:
* 1) pivot_length hal pin must agree with mechanical
* design (including vismach simulation) and augmented
* with current tool z offset
* (typ: mechanical_pivot_length + motion.tooloffset.z)
* 2) C axis: spherical coordinates aziumthal angle (t or theta)
* projection of radius to xy plane
* 3) B axis: spherical coordinates polar angle (p or phi)
* wrt z axis
* 4) W axis: tool motion. Negative values increase tool radial
* motion example: drilling into body at b,c angles
* 5) W axis motion is incorporated into the motion of the
* joints used for X,Y,Z positioning and no motor or
* hal pin connections are required for the joint specified
* as JW. However, a joint must be configured for W to
* support display of the W axis letter value for
* complicated reasons. (motion/control.c computes joint
* positions only for the number of configured kinematic
* joints (NO_OF_KINS_JOINTS) and the joint positions
* are needed to display axis letters via inverse
* kinematics.
* 6) If no coordinates module parameter is supplied, kins
* will use the required coordinates XYZBCW mapped
* to joints 0..5 in sequence.
* 7) Multiple joints may be assigned to an axis letter
* with the module coordinates parameter
* 8) If a coordinates module parameter is supplied,
* the kins will map coordinate letters in sequence
* to joint numbers beginning with joint 0.
* 9) Coordinates XYZBCW are required, AUV may be used
* if specified with the coordinates parameter and will
* be mapped one-to-one with the assigned joint.
********************************************************************/

// non-required coordinates (A,U,V) can be set by using
// the module coordinates parameter
#define REQUIRED_COORDINATES "XYZBCW"

#define DEFAULT_PIVOT_LENGTH 250

Note that this kinematic creates a hal-pin called 'pivot_length':

struct haldata {
hal_float_t *pivot_length;

Make sure you provide the required value (ie your 160mm plus any tool-length offset) in your hal. As in the file '5axisgui.hal' in the 'bridgemill' simulation configuration. You will probably want to remove the stuff for the vismach script so you will end up with something like this:

# compute pivot-length needed for 5axiskins

setp  pivotsum.in0  160

net :tool-len <= motion.tooloffset.z
net :tool-len => pivotsum.in1

net :pivot-len <= pivotsum.out
net :pivot-len => 5axiskins.pivot-length

Last edit: 04 Oct 2021 11:35 by Aciera.

09 Nov 2021 04:25 - 09 Nov 2021 04:26 #225768 by annhan
Replied by annhan on topic TCP 5-axis kinematics

hi all,

I am building the scara robot.
The switch kins is very good.

I want to move the scara in joint mode, but I want to use the position and Gcode in world mode.
When I run a gcode, it will calculate the position to know the angle of joins, after it move joins.

any idea helps me.

thank you so much

Last edit: 09 Nov 2021 04:26 by annhan.