Linear axis Tripteron Kinematics

Hi, Im building a Linear axis Tripteron Kinematics and got to the stage of running klipper and writing the kinematics script. And i know what it needs to do, but i don’t know how to get it into the python script.
Down below i explain the main kinematics of the printer.
The LAT (Linear Axis Tripteron) has 3 sliders: the x slider, the y slider, the z slider. The x and y sliders can pass each other but cant pass the z slider. The can only move away from the z slider. I have tried to illustrate this (picture 1). To translate the position of the sliders to the position of the toolhead i made these formulas:
Toolhead X = sliderX - sliderY
Toolhead Y = (SliderY + sliderX) / 4 + SliderZ / 2
Toolhead Z = 2 * SliderZ - SliderX - SliderY
And the homing sequence is also different because it homes to all max positions. Therefore the z slider homes first but the other two sliders need to move with it and those home after the z slider has homed.
I don’t know if i have specified enough. If you can help me out it would be great.
Greetings Felix

You might find this discussion interesting: New generic_cartesian kinematics (incl. CoreXYU/CoreXYUV, generic IDEX and AWD)

Off topic
This is probbebly everything i need to get it working. The only thing is that i can’t install that version of klipper. In kiauh i have set the github as repo. But as soon as i try to install klipper it fails at: Installing Python 3.10.12 virtual environment…
with the error:
ERROR: Could not open requirements file: [Errno 2] No such file or directory: ‘/home/felix/klipper/scripts/klippy-requirements.txt’

Edit: I needed to put: ,generic-cartesian behind the repo link

Error loading kinematics ‘generic_cartesian’
Dont know what to do. I have installed klipper throug the repository but still get this error.

Edit: My math doesnt work out apperently
My math:
stepper a = y-x
stepper b = 0.25y+0,25x+0.5z
stepper c = 2
z-x-y

i will get back to trouble shouting tommorow

My math was indeed not correct but im still unable to get klipper running with the generic cartesian kinematics. I don’t know if its the math or the fact that im only using 3 carriages. Is the generic cartesian kinematic suitable for this purpose or do i need to make a custom kinematic?

My math
toolhead pos > carriage pos
Z+X/2-Y/2 = carriage a
Z-X/2-Y/2 = carriage b
Z+Y/2 = carriage c
Carriage pos > Toolhead pos
b-a = X
2c-a-b = Y
0,5c-0,25a-a,25b = Z

Here is the klippy log if someone is able to understand it
klippy.log (3.8 KB)

I replied in the other thread about the bug, which should now be fixed. As for kinematics configuration, are these formulas correct for the toolhead coordinates?

I just wasn’t able to find anything with a very brief searching.

If yes, then

solve([t_x=s_x-s_y,t_y=(s_x+s_y)/4+s_z/2,t_z=2*s_z-s_x-s_y],[s_x,s_y,s_z]);
[[s_x=(-t_z+4t_y+2t_x)/4,s_y=-((t_z-4t_y+2t_x)/4),s_z=(t_z+4*t_y)/4]]

and you should use

[carriage x]
...
[carriage y]
...
[carriage z]
...
[kinematic_stepper a]
kinematics = y+0.5*x-0.25*z
...
[kinematic_stepper b]
kinematics = y-0.5*x-0.25*z
...
[kinematic_stepper c]
kinematics = y+0.25*z
...

Thanks for the reply and the fast bugfix,
The main challenge is the homing procedure, right now with the generif Cartesian kinematics it homes the toolhead to its axis. So it moves the toolhead in the x direction to home x. But if the carriages would move to their max or min, like a delta printer moves its arms to the top position. That would make the homing sequence a lot easier. But i dont know if that would be possible with the kinematics?

Update: got it moving without tearing itself appart. Right know i use the force_move function to manual home it.

At the moment, it is not possible. It seems this device requires completely custom homing procedure. This was not yet developed and supported, and I’m not sure how easy or difficult would it be to implement it. Do you have a video of a homing procedure how it would normally look like?

Also, take a look at this post in generic cartesian kinematics thread:

I added a new command SET_STEPPER_KINEMATICS which can be used in custom homing procedures, as explained in the post. Perhaps you can use that for proper homing of your printer?

I think that will do. Right now the software part of the printer works and doesn’t have any flaws. The main issue I’m having is flexing arms what results in the toolhead moving about 10mm in z height between x and y moves. I printed the arms in PLA so this was of course expected to happen. I of course could let it be cnc machined out of aluminium or steel but that would exceed the budget by quite bit. I will first limit the flex as much as possible with what I can do.

Just updated to the newest release of generic cartesian klipper repo. But i get the error ;
Carriage(s) x, y, z must be referenced by some stepper(s) kinematics

Once the underlying issue is corrected, use the “RESTART”
command to reload the config and restart the host software.
Printer is halted

I did not change the config file except for the homing override tab but i tried without it but it didn’t matter. Did i miss something or is it a bug?
klippy (3).log (14.3 KB)

Edit: I missed something, i ignored the fact that “kinematic_stepper” needed to be removed

I think i found another bug. Because i don’t know what it else could be. Im setting up the homing override. And the Y axis only moves in the negative direction if i execute any variation of the SET_STEPPER_KINEMATICS STEPPER=‘stepper b’ KINEMATICS=-y DISABLE_CHECKS=1 command. Even if i change the direction of the stepper itself. So if i use the ET_STEPPER_KINEMATICS STEPPER=‘stepper b’ KINEMATICS=x (or y or z) DISABLE_CHECKS=1 command and then set the position it will always move in the negative direction no mather what. Could it be the kinematics? If i just set the position and move the x or z axis it does move up so it isnt the stepper itself.

Sorry, I don’t think I was able to reproduce your problem from the description. For me, on a regular cartesian kinematics, the commands

SET_STEPPER_KINEMATICS STEPPER='stepper x' KINEMATICS=x DISABLE_CHECKS=1

and

SET_STEPPER_KINEMATICS STEPPER='stepper x' KINEMATICS=-x DISABLE_CHECKS=1

work as expected: the toolhead changes the direction of X axis with these commands. So, can you post the full klippy.log of your attempt with the current code from my branch, along with the commands that you tried to execute?

Just curious, did you manage to get your printer working with generic_cartesian kinematics?

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.