flux
Take a look at this Configuration Reference
https://github.com/synthetos/TinyG/wiki/TinyG-Configuration
Specifically, at the end of the document is a section called "Hidden Parameters".
$ML- Minimum Line Segment
Don't change this unless you are seriously tweaking TinyG for your application. It can cause many things to break. This value does not appear in system group listings ($sys)
$ml=0.08 - Do not change this value
$MA - Minimum Arc Segment
Don't change this unless you are seriously tweaking TinyG for your application. It can cause many things to break. This value does not appear in system group listings ($sys)
$ma=0.10 - Do not change this value
What these mean is subject to interpretation, but my assumption on first read a while ago was that linear moves less than 0.08mm ( or arcs with lengths specified less than 0.1mm) would likely fail or cause issues such as your drift.
When I opened your test.7.gcode file, I saw all line segments, no arcs, and numerous line segments <<0.08mm.
I am suspicious that these extremely short segments are at the root of your drift issue.
Interestingly, I cannot get a proper output from my CAM simulator with the test case you just posted, circles.gcode. I may get some time later in the week to try running it on tinyG.
Also, could you clarify what you mean by
I ran it with actual PCB (twice, with identical results), but you could just run it in the air. It takes about 20 minutes to run on my settings.
Are you saying that you actually cut PCB copper, twice, with circles.gcode and the results appear to be A.; cut without drift, yet the final X0 position is offset by -19mm or that the two runs are B.;the same, showing accumulated drift error as the cuts are made? I am assuming your answer is B.
I suspect you chose to draw r=1.0mm circles in circles.gcode since many of the PCB pad features in test.7.gcode appear to be r=1.0mm circles or half circles. But what appears to be a secondary cut path in test.7.gcode, perhaps for additional clearance, has many r=0.5mm circles and arcs; those are the ones yielding line segments as small as 0.012 (quick look), <<< $ml=0.08.
Alden will likely be the key commentator here, I believe he is traveling this week so we may not hear from him for a few days.