Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Multi-Axis Screw Mapping #469

Open
MZachmann opened this issue Jan 29, 2021 · 6 comments
Open

Support Multi-Axis Screw Mapping #469

MZachmann opened this issue Jan 29, 2021 · 6 comments
Assignees
Labels
CNC/Laser/Automation support Support for functions related to CNC machines, Laser cutters and more general automation enhancement Additional functionality, performance or other feature request
Milestone

Comments

@MZachmann
Copy link

This is an enhancement request for multi-axis screw mapping. That is the ability to have piece-wise linear adjustment to position (of both a moving axis and any dependent axes) based on a lookup table.

The most common example is to correct for inaccurate leadscrews (one dependent axis). In my case it adjusts for not-perfectly-straight and not-perfectly-coplanar linear rails (two or three dependent axes).

This probably isn't much applicable to 3d printers. It is targeted more for cnc mills and routers and machines like pick-and-place.

With a small modification it would be relatively simple to support directional leadscrew wear (different profile coming vs going) as well as backlash. I don't use either.

The request tracks a lengthy/instructive dialog on the forum at: https://forum.duet3d.com/topic/20308/cnc-screw-mapping

Comments

  1. The code and doc are at least usable other than they occupy M800, 801, 802, and 810 currently - which I assume is a non-starter. I have done zero performance testing or optimization on the code. I also have slightly different usual code style so it may have style conflicts.
  2. This translates the incoming g-code linear stream hence lines are endpoint-accurate only. At least for me and most applications I can think of that's irrelevant. In the cases where it really matters (for intersections) adding internal nodes to the lines can take care of it.
@MZachmann
Copy link
Author

Here's the doc file explanation of the enhancement.
Screw Mapping in RRF.docx

@T3P3 T3P3 assigned dc42 May 4, 2023
@T3P3 T3P3 added enhancement Additional functionality, performance or other feature request CNC/Laser/Automation support Support for functions related to CNC machines, Laser cutters and more general automation labels May 4, 2023
@T3P3
Copy link
Contributor

T3P3 commented Mar 6, 2024

This is a fairly advanced feature that's only really useful to people who can correctly determine the maps. please commend to this thread if its something you would use, and preferably link to the machine that you have that you would use it on.

@MZachmann
Copy link
Author

MZachmann commented Mar 6, 2024

I use this on my CNC, where it's necessary, all the time but I agree this is an advanced feature. It's better than, but roughly equivalent to screw mapping in mach4 and linuxcnc or screw compensation in path pilot. For a 3d printer this has no real value since dimensions aren't critical. For a milling machine or CNC router it does have applications and is moderately easy to calculate. On my CNC it increases accuracy from 1/32" to .003". There's a github writeup in my fork of this: https://github.com/MZachmann/RepRapFirmware and the source code has a good intro comment.

The code introduces virtually no delay unless it's being used and the use cost is minimal - but there is a moderate amount of code and it won't fit in an older board.

My CNC machine is Camaster Stinger II. Path Pilot is the software for Tormach mills; mach4 is generic milling machine software.

@T3P3 T3P3 added this to the After 3.6 milestone Nov 26, 2024
@T3P3
Copy link
Contributor

T3P3 commented Feb 7, 2025

@MZachmann We are nearly at the point of releasing 3.6 and starting to look at what to work on for 3.7. There has been a large number of changes between 3.4.x and 3.6, especially in the motion system. Would it be possible to update you fork to the 3.6-dev codebase and test against that?

@MZachmann
Copy link
Author

Sure. I'll update this in a day or two.

@MZachmann
Copy link
Author

I'm pretty sure I've got a working update. I need a replacement for the AdjustPosition I was doing but that's relatively minor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CNC/Laser/Automation support Support for functions related to CNC machines, Laser cutters and more general automation enhancement Additional functionality, performance or other feature request
Projects
None yet
Development

No branches or pull requests

3 participants