[SOLVED]v2.9 and not the perpendicularity of X and Y matrixkins + XXYYZ

More
21 Nov 2025 10:13 - 21 Nov 2025 10:16 #338875 by abs32
But how to correctly write the value of one of the parameters in the settings? If earlier I could provide in a hal file
setp relkins.adjX.Y0 0

now it's an attempt to indicate

setp matrixkinx.C_xy 0

leads to abortion program launch

Through HalShow, the command setp matrixkinx.C_xy 0 is executed normally.
Last edit: 21 Nov 2025 10:16 by abs32.

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

More
21 Nov 2025 10:20 - 21 Nov 2025 10:21 #338876 by abs32
But another problem immediately appeared!

when you try to run a regular program, errors will appear
about the release of a program for A and B positive limits!
I don’t have A and B axles, but for 0-4 engines all the limits are set correctly
XXYYZ!
Last edit: 21 Nov 2025 10:21 by abs32.

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

More
21 Nov 2025 10:28 #338877 by Aciera
setting maxkins paramter values certainly works for me.
Example using 'HALCMD' entry in the [HAL] section of the inifile:
 

parameter values can also be changed during run time using an executable Mcode that calls 'halcmd' tool but doing so on a kinematics parameter may lead to joint following errors.
Attachments:

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

More
21 Nov 2025 11:43 - 21 Nov 2025 11:48 #338879 by abs32
We figured out the setting of the parameters, thank you. The program starts normally. Home search is normal.
But running any g-code program fails. Moreover, an attempt to move manually (with arrows on the keyboard) leads to the fact that only each motor moves separately - i.e. not two X X motors, but one X motor, which immediately leads to an accident.

#2025-11-20 для 2.9.4
#KINEMATICS = trivkins coordinates=XXYYZ
KINEMATICS=matrixkins

Where exactly and how exactly can we now indicate that we have 5 engines and an XXYYZ circuit?

ini-file:
[KINS]
    JOINTS = 5
   
    #2025-11-20 для 2.9.4
    #KINEMATICS = trivkins coordinates=XXYYZ
    KINEMATICS=matrixkins
    HALCMD = setp matrixkinx.C_xy 0 # Skew Y axis towards X axis


[HAL]
    HALFILE = 4.hal
    POSTGUI_HALFILE = postgui_call_list.hal
    
[TRAJ]
    COORDINATES =  XXYYZ
    LINEAR_UNITS = mm
    ANGULAR_UNITS = degree
    DEFAULT_LINEAR_VELOCITY = 25.00
    MAX_LINEAR_VELOCITY = 250.00


 
Last edit: 21 Nov 2025 11:48 by abs32.

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

More
21 Nov 2025 12:17 #338883 by Aciera
'matrixkins.comp' would need to be modified to map your tandem joints to the approriate axes.

Please attach your current ini file so I can have a look.

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

More
21 Nov 2025 12:53 #338890 by abs32
hal+ini
Attachments:

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

More
21 Nov 2025 13:02 #338892 by Aciera
Attachments missing

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

More
21 Nov 2025 13:03 - 21 Nov 2025 13:04 #338893 by abs32

File Attachment:

File Name: m_2025-11-21.zip
File Size:5 KB
Attachments:
Last edit: 21 Nov 2025 13:04 by abs32.

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

More
21 Nov 2025 13:16 - 21 Nov 2025 13:24 #338894 by abs32
probably, this is influenced only by that part of ini where the formula XXYYZ and then something like that? -


// Apply inverse matrix transform to the 3 cartesian coordinates
pos->tran.x = invdet * ( (e * i - f * h) * j[0]
+(c * h - b * i) * j[2]
+(b * f - c * e) * j[4]);

pos->tran.y = invdet * ( (f * g - d * i) * j[0]
+(a * i - c * g) * j[2]
+(c * d - a * f) * j[4]);

pos->tran.z = invdet * ( (d * h - e * g) * j[0]
+(b * g - a * h) * j[2]
+(a * e - b * d) * j[4]);

    // Pass rest of axes as identity
    //if (EMCMOT_MAX_JOINTS > 3) pos->a = j[3];
    //if (EMCMOT_MAX_JOINTS > 4) pos->b = j[4];
    if (EMCMOT_MAX_JOINTS > 5) pos->c = j[5];
    if (EMCMOT_MAX_JOINTS > 6) pos->u = j[6];
    if (EMCMOT_MAX_JOINTS > 7) pos->v = j[7];
    if (EMCMOT_MAX_JOINTS > 8) pos->w = j[8];

// Apply matrix transform to the 3 cartesian coordinates
j[0] = pos->tran.x * a + pos->tran.y * b + pos->tran.z * c;
j[1] = pos->tran.x * a + pos->tran.y * b + pos->tran.z * c;
j[2] = pos->tran.x * d + pos->tran.y * e + pos->tran.z * f;
j[3] = pos->tran.x * d + pos->tran.y * e + pos->tran.z * f;
j[4] = pos->tran.x * g + pos->tran.y * h + pos->tran.z * i;


    // Pass rest of axes as identity
   // if (EMCMOT_MAX_JOINTS > 3) j[3] = pos->a;
    //if (EMCMOT_MAX_JOINTS > 4) j[4] = pos->b;
    if (EMCMOT_MAX_JOINTS > 5) j[5] = pos->c;
    if (EMCMOT_MAX_JOINTS > 6) j[6] = pos->u;
    if (EMCMOT_MAX_JOINTS > 7) j[7] = pos->v;
    if (EMCMOT_MAX_JOINTS > 8) j[8] = pos->w;

?

This is certainly not a one-size-fits-all solution with automatic situation recognition, but for a specific situation

 
Last edit: 21 Nov 2025 13:24 by abs32.

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

More
21 Nov 2025 13:41 #338898 by abs32
Внес исправления как написал, скомпилировал, запустил = РАБОТАЕТ! Ай да Пушкин, ай да сукин сын!
Made corrections as written, compiled, launched = WORKS! Oh yes Pushkin,

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

Time to create page: 0.089 seconds
Powered by Kunena Forum