Skew Correction Documentation

Basic Information:

Printer Model: E3V2
MCU / Printerboard: Creality 4.2.7
klippy.log
klippy-4.log (7.4 MB)

Fill out above information and in all cases attach your klippy.log file (use zip to compress it, if too big). Pasting your printer.cfg is not needed
Be sure to check our “Knowledge Base” Category first. Most relevant items, e.g. error messages, are covered there

Describe your issue:

…Uploaded Klippy just in case but don’t think it’s really needed.

When running Skew correction i followed all the steps in the documentation and got everything to work for the most part, even adding into my start/end print macros.

However under the Veryifying Corrections section of the documentation I can GET_CURRENT_SKEW, but when entering the command CALC_MEASURED_SKEW I get an error during the print saying that AC, BD, DC (or some variation is missing). But according to the documentation the input values for SET_SKEW are XY or XZ or YZ. And there is nowhere to put those AC, BD, DC measurements and as far as I’ve been able to read into the documentation they’re simply for interpreting the printed model. I tried in Printer.cfg, error. In my macros.cfg error.

Can anyone shed some light on what i’ve done wrong or why Klipper is asking for a value that’s not used when adding to the cfg.

Did you read this here already:
https://www.klipper3d.org/Skew_Correction.html

For me that answers everything.

Yep, and followed all those directions to the T. But nowhere in the documentation does it say to use AC, BD, DC in your configs, only XY, XZ, YZ… but the calc_measured_skew gcode command wants there to be AC, BD, DC values somewhere and returns an error when prompted.

As i’ve said i tried to input them into printer.cfg but that returns an error and the same for my macros.cfg. Maybe i’m doing something dumb like leaving out a : or something the right spot or not indenting properly but I tried multiple variations with no success without an error telling me it’s not a value.

Verifying your correction
After skew_correction has been configured you may reprint the calibration part with correction enabled. Use the following gcode to check your skew on each plane. The results should be lower than those reported via GET_CURRENT_SKEW.

CALC_MEASURED_SKEW AC=<ac_length> BD=<bd_length> AD=<ad_length>

I think you are mistaken here.
The XY, XZ and YZ define the planes for what you can correct skew.
Normally you do it for XY to compensate for skew on your bed plane. But in total there are three planes to compensate for if you want to make it perfect.

How about this paragraph:

Make sure [skew_correction] is in printer.cfg. You may now use the SET_SKEW gcode to configure skew_correcton. For example, if your measured lengths along XY are as follows:

Length AC = 140.4
Length BD = 142.8
Length AD = 99.8

SET_SKEW can be used to configure skew correction for the XY plane.

SET_SKEW XY=140.4,142.8,99.8

You may also add measurements for XZ and YZ to the gcode:

SET_SKEW XY=140.4,142.8,99.8 XZ=141.6,141.4,99.8 YZ=142.4,140.5,99.5

I hope you did print such a model or maybe buy the Califlower from Adam that handles the calculation in an Excel sheet:

Printed the calibration object linked on the Documentation page and took my measurements following that.

When i tried to enter set_skew then followed by Length AC = my measurement in the console it returned an error that it wasn’t accepted (can’t remember the exact error off the top of my head and can try again when i get home)

Tried copying and pasting from the documentation page and substituting in the numbers for my measurements with the same result. The only thing it would allow me to enter was the set_skew xy (xz, yz)= my measurements since they’re just an amalgamation of the AC, BD, AD numbers then save_config.

After all that get_current_skew would bring up the values and they were at the bottom of my printer.cfg where they should be so it is applying them.

But the whole issue is the calc_measured_skew wants AC, BD, AD values, But i couldn’t enter them into printer.cfg or enter them in the console input and that’s where my confusion comes into play.

I’m confused…
There is no need to enter/store AC, BD or AD into your printer.cfg!
This is just a value triplet for calculating the skew for a particular plane.

If you print the respective calibration model laying on your bed you will determine skew for the XY plane (= bed).
So you measure the lenght of AC, BD and AD and enter it into the command:
SET_SKEW XY=AC,BD,AD
Then you run this command in your console and I think afterwards you have to save the skew profile to use it later:
SKEW_PROFILE SAVE=MySkewProfile and then run SAVE_CONFIG to store it at the bottom of your printer.cfg.

To make skew correction generally available you just have to define the section [skew_correction] somewhere in your printer config.
Then you want to put SKEW_PROFILE LOAD=MySkewProfile at the end of your slicer start code/PRINT_START macro.
And then put SET_SKEW CLEAR=1 at the start of your slicer end code/PRINT_END macro.

Where do you find any information that you need putting something into printer.cfg WRT calc_measured_skew?

This is a command that provides information about the calculated skew based on the values you measure, e.g. to compare two measurements.

It is pretty clearly explained here: Skew correction - Klipper documentation

1 Like

My apologies for not being the clearest on this, I understand and did all that as directed by the documentation and it works fine and is at the bottom of my config. and loads properly. That’s not where I’m having trouble.

Where i’m having trouble is the last part of the documentation section under Verify your correction. When using the calc_measured_skew, when printing the object get_current_skew works fine and brings up my XY, XZ and YZ skew numbers.

But copying and pasting the calc_measured_skew code from the documentation page while printing the new calibration object as directed, i get “unable to parse” error. If i simply enter calc_measured_skew it gives me a “Missing AC” error, If i try calc_measured_skew AC= I also get “unable to parse” error.

I’m reprinting the calibration object again and will try it again after the print. If it shows up then yes i am indeed the technological retard i know i am and freely admit to. If the command needs to be run after the print, not during, then that’s my fault as well due to me getting rammy, it’s not clearly stated in the docs for idiots like me when other commands can be run mid-print.

If it doesn’t work I and I get the same errors will post screenshots or upload a new Klippy log.

In my confusion/sleep deprivation I only tried to enter them into my printer.cfg after I kept getting errors in console for the gcode command calc_measured_skew, tried different variations and one said “missing AC” thinking it wanted those numbers to reference. Once i got the error on restart i deleted it and re saved config.

Re Printed the calibration object, 4th time. I’m still getting “Error on ‘CALC_MEASURED_SKEW AC= BD= AD=’: unable to parse” when entered into console, @theophile Tried copy and paste, manually entered without “<ac_length>”, even tried substituting XY, XZ, YZ for shits and giggles with no luck. No matter when it’s entered, during or after print.

GET_CURRENT_SKEW works fine as it should.

I added SET_SKEW CLEAR=1 at the start of my end_print gcode macro with no change.

If I enter CALC_MEASURED_SKEW it recognizes it as a command but returns “Error on ‘CALC_MEASURED_SKEW’: missing AC” Granted that’s probably not a proper command @Sineos that’s why I thought it needed to be somewhere and tried my luck with printer.cfg before deleting it after getting the error that it wasn’t a proper value.

So I’ve followed all the documentation instructions, in order, as prescribed and it all works for all 3 planes, XY, XZ, YZ. Prints come out much more accurate and i no longer have a lilt on my Z so happy about all that.

UNTIL i get to the verify your correction section and I get errors thrown with the given command in the docs. So hopefully that clarifies everything and all that i’ve tried to do that hasn’t worked beyond the docs page and there won’t be a need to copy and paste the docs page anymore telling me it’s clear hahaha.

My apologies for the length of this, and if i sound frustrated. I’m not trying to be a dick at all, just trying to keep some sense of humor about this as it’s been driving me crazy for days and i’m just hoping to get some more direction on what it could possibly be or where i might have gone wrong.

New Klippy log uploaded as well.
klippy-6.log (5.9 MB)

The command needs to look like:

CALC_MEASURED_SKEW AC=140.2 BD=140.8 AD=99.7

With the numbers being what you measured in your test print.

Okay so i am just an idiot haha. I’ll try to remember that any time i see < > to replace with my own numbers. Thank you i’ll give it a shot.

Thank you, after starting all over (couldn’t remember the measured numbers) the command works when corrected.

Is there an easy way to “recall” with a gcode command the set_skew values? since those are what’s needed for the calc_measured_skew?

Not that I’d be aware of.
You could add your measurements as comments into the printer.cfg for future reference.

Thanks that’s what I gathered.

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