With the unmodified AXIS printer there is a lot of axis skew especially on the xy plane - at least for me. I had about 5mm skew on x with 100mm in y. That causes any rectangular shapes to become a parallelogram. Thats probably not helpful if you want to print something beyond weird art.
So there are a couple of methods to correct for the skew:
1) Get your printer right - or - get a right printer
2) Modify the 3D model - probably not want you want to or always can do
3) Use some G-Code extension (https://www.thingiverse.com/thing:3050059) or G-Code post-processing tool (https://github.com/MechanizedMedic/gskewer)
4) Enable Marlin firmware skew compensation
I will explain the details for 4) as it seems the most convenient solution in my opinion.
Again, there are a couple of different options to use:
4a) Set correction length values via Marlin's configuration.h
4b) Set correction factor via Marlin's configuration.h
4c) Just enable skew correction and use M commands
The 4c) option seems to provide the best flexibility as you can just modifiy the values w/o changing the firmware. So how this is done?
Steps:
- Uncomment #define SKEW_CORRECTION in configuration.h to enable the skew correction feature
- Uncomment #define SKEW_CORRECTION_GCODE to enable M582 command
- Save the configuration.h, compile the updated firmware and upload to your printer
- Print some test structures like https://www.thingiverse.com/thing:2563185
- The calculation of the skew factor is described in the configuration.h and there is also a very good video on youtube (https://www.youtube.com/watch?v=YfAb5IaHDSo)
- After you have measured the test structure and calculated the skew factor you can use the M582 command to set the skew factor on the printer
- M582 S<xy_skew_factor> will just set the factor for the xy-plane
- M582 I<xy_skew_factor> J<xz_skew_factor> K<yz_skew_factor> will set skew factors on all axis
- Don't forget to save the configuration with M500
- If you want to check the configuration use M503 to display the settings
Now to the results:
Skew compensation is obviously working pretty well. The not-so-straight line on the right side of the left test structure is mainly because the print came of the bed and warped a bit upwards. Please note that straight movements on the x- or y-axis will have now a small component of movement in the other axis as well (e.g. a movement in x will include some small movement in y as well). The printer will make some more noise and you might get some more ringing or other visible artifacts due to more vibrations. You can also compensate for xz/yz skew in a similar way.
Hope this was helpful.
I think for small skews it is fine to simply add multiple skew factors together. The error is relatively small compared to adding the arctan() i.e. exact skew angles together.