Maslow Home Maslow Community Garden Newsletter

Holey Triangular Calibration


A button to swap between metric and imperial units would be convenient.


I ran Holey Calibration. I haven’t cut anything yet (have to wait for Tuesday) but I like the numbers it generated. (1.0 KB)
HoleyCal_Results1.txt (2.2 KB)

Edit: @Joshua, as soon as I entered the new motor distance, I was given this error:
I entered the rest of the settings, unplugged the power and USB to the arduino/shield but it still does this. I thought someone else had a similar issue but I didn’t find anything searching this thread.

I’ll have to redo the “set chain length” Tuesday night.


Here is a description of what, why, when about the “Unable to find valid machine position” case


This is strange behavior. It looks like it is calculating the sled position as a function of the chain lengths. Usually, it goes the other way: sled position => chain lengths. Because the kinematics.forward is a numeric solution, it could be an issue in that function.

Here is where the code issues that error.

For now, the best we can do is recommend that you return the sled to the home position (0,0) before modifying the calibration in GC. @WoodCutter4, I know this is too late for you now.

Actually, I just looked into the code. There are several reasons the machine will report this message. Below is a screenshot of the code.

  1. If the kinematcs.forward method is unable to converge on a position before KINEMATICSMAXGUESS (200)
  2. If the chain-lengths are greater than sysSettings.chainLength.

I am guessing (2.) is the most likely cause. I would go into “System Settings” and look at your “Chain Length” setting. For some reason, it might be too short. If your chain-length settings are less than the 2000 mm, it will issue this error.

Another thing is the “KINEMATICSMAXGUESS” setting. In the GC kinematics.forward function, it is 5000. However, in the Firmware kinematics.forward function, it is only 200. This seems suspicious, too. If there is no issue with the chain-length, you can go into the code and modify this “KINEMATICSMAXGUESS” setting. I did a quick search. It is located in the file, “/cnc_ctrl_v1/Kinematics.h”, on line 27. To change it, simply replace the “200” with “5000”. Then, save the file, re-compile, re-upload, and try again.


Thanks for looking at this, Josh. I replied in @c0depr1sm 's thread that I did in fact home the sled before doing this. It is surprising that this happened by making such a small change in motor distance (from 3613.15 to 3613.77). The actual length of both chains are ~3810mm.

Edit: I will verify sysSettings.chainLength and if it looks good, I’ll update “KINEMATICSMAXGUESS” setting from “200” to “5000” and let you know what happens.

Edit 2: If no one else is having this issue, I must be doing something wrong/in the wrong order. It is quite a bummer to lose so much time when time is limited :frowning:


I haven’t posted on this topic for a while, but I have done some work. I thought it would be good to provide a basic update.

Current Status

Created a branch from schmittjoshc/GroundControlUpdate-master repository, schmittjoshc/GroundControlUpdate-HoleyCalibrationGuiDev.

  • Integrated the widgets into the GC calibration framework
  • Added a widget which chooses between Triangular and Holey Calibration processes.
  • Maintained the Measurements and Calibration widgets from this previous post, 227
  • Removed the “Machine Parameters” widget. Instead, it will leverage the widgets that are already in the calibration process.
  • Added functionality to pull the initial parameters from the existing GC settings class.

Next Steps

  • Need to add comments and guidelines into the widgets.
    • Add things to explain: this is what is happening, this is what you need to do
  • Add a widget to cut test-pattern
  • Add functionality to push the calibration result back into GC and the Firmware

Related to WebControl

At one point, I decided to implement the GUI into base GC, because it was working on my machine. Right now, it is not clear to me whether or not WebControl or GC is the better long-term solution. I didn’t want to make more work for myself than necessary. However, in the code, I have separated the GUI parts from the functional parts as much as possible. This means I am attempting to minimize the amount of work required to integrate the functionality into another GUI. It might be good to understand what python code is re-used in WebControl. This could inform a better organization of the calibration tools.


Is that button implemented?
What firmware to load to test this branch?


I don’t think it is test-ready, in terms of the Firmware. Right now, the buttons are in place, and most things are functioning as a GUI. However, there are a few more things needed before the Firmware can be tested.

To answer your question, the firmware is the same schmittjoshc/MaslowCNCFirmwareUpdate-master that I have been working with. There may be a few updates in the MaslowCNC/Firmware-master repository, that need to be merged back in.


For the bravest among you, The GUI could be testable. Everything is in place, and should be functional.

Remaining Issues

  • There is a popup at the end of all the calibration that warns you about exiting early. It shouldn’t be there
  • I haven’t actually tested the cut step (the one step before you enter your measurements). I did my best, but your machine might burn your house down as soon as you click “go”. It should be checked.
  • I haven’t actually re-downloaded the repository onto my machine to make sure it works like the version on my machine. This needs to be checked.

The Links:

How it Works

If you go to “Actions”=>“Calibrate”, it should lead you through the typical calibration. If you choose “Triangular” for your kinematics option, you will eventually make it to a widget that looks like the one below. If you choose “Holey Calibration”, you will go through the Holey Calibration steps. There is some descriptive text which should explain what to do. However, it is terse, and it may not be clear.

So, @gero, it is ready for testing. However, it does still need work.



You cannot offset the cuts from the home, (0,0) center. That means you cannot re-cut on a sheet by simply shifting the home position by a few inches, as was done here. This is an invalid operation. Instead, you will have to shift the stock by a few mm, leaving the home position at (0,0). Below is where I saw this done by @c0depr1sm. I don’t know how significantly this will impact the result, but it is a misalignment (between the calibration’s assumptions and the cut).


I downloaded to my Maslow laptop via TeamViewer this morning and poked around a bit. I didn’t do much with it since I’m out of town. Will get to try it tomorrow afternoon. Thanks for your awesome work!!


I got this newest version of the Holey Calibration installed, and configured.

I ran Jamtek’s circle and square test and I cut another Sled, this time out of phenolic plywood that I got at Woodcraft.

Both cuts were dead on! Amazing!

The Maslow was already fantastic. This just put the icing on the cake. Woot!

Thanks for doing this!


Did you use the GUI, or did you run the script?


I used the GUI.

I guess I should also give you some notes:

The picture of Holey Calibration doesn’t show up inside Ground Control, so I had to look at the picture in this thread while taking measurements.

The calibration crashed on my on the second to last step, the first time, when I clicked on the “Push to Machine” button. The second time it saved the settings and didn’t crash.

My Maslow hates too many decimal places. It just won’t work unless I delete back to about 2 or 3.

Lastly, the first time I try to move the sled after calibration, Maslow complains about not knowing chain length. If I ignore that warning it starts working fine anyway.

Other than those things it’s great.

I’m so happy!


That is awesome. I committed those changes on Monday, and it sounds like you’ve already been able to use it.

I can see that I didn’t upload that *.png. I can do that easily enough.

Did you have to reduce the number of decimal points to get it to work, or was it just the first time it crashed, and the second time it worked?

I wonder if this is a similar issue to @WoodCutter4’s issue here


Hey guys, I’m actually working on this at the moment (I have another hour or so before I need to go back to work!). After leveling my top bar with a laser (much better than the 4’ bubble level I used initially) I just completed “standard” calibration and have the best accuracy yet (<=1/16" all across the board). I also did the calibration bench mark cut but haven’t run the numbers yet. I just completed Holey Calibration (using “Master-Update” not GUI update…sorry Joshua!) and have really good numbers. I have been copying my ini file at every step to help with troubleshooting in case I have the same issue as I noted above.

Before I update my settings per Holey Cal results, I have some questions to make sure I do this the right way…I’m nervous about losing my current calibration! :sweat_smile::


I’m not sure where to find this variable. I can see in the ini file that that “Advanced Settings”, “chainlength” = 3810. Can you point me in the right direction?
Edit: If this setting needs changed, I will want to do it before entering my numbers, since my issue came up immediately upon entering the updated motor distance? Or, is it OK to update the numbers and then make the change if I have the problem?

I have this file open and can do it but if this works for everyone else with 200, I’m a bit nervous to change mine.
Edit: If this setting needs changed, I will want to do it before entering my numbers, since my issue came up immediately upon entering the updated motor distance? Or, is it OK to update the numbers and then make the change if I have the problem?

Is there a log file that I should capture as well, in case of some issue, to aid in troubleshooting?



I wouldn’t worry about it too much. Once you have the initial calibration and parameters entered into the script, you won’t lose anything unless you delete that script.

If you go to Settings, and click on the very top button that says something like “System Settings”, you’ll get several options. One will be “Advanced Settings”

I am not sure if there are any risks. Functionally, the only thing that could change is how long it takes to calculate the initial sled position.


All is well! I’m doing the calibration benchmark cut right now to compare. Is there another file that people are using to compare with? I have a circles and squares file that I’ve been using… (2.2 KB)


Looks like about what I would expect. That is a result I would be happy to use.

M3 and M9 are greater than a 2mm error (barely). The most likely cause of this difference is your measurement. It isn’t necessary, but you could double-check those measurements.


I will get more time tonight and will double check. I ran the benchmark test and the lines don’t look as straight but I haven’t measured and compared scores (will do tonight). I also ran my circles and squares code and the accuracy is more variable than before. I’ll compare measurements tonight and post.

I completed two calibrations today, standard and holey, and did a benchmark cut after each. Tonight I only had time to score the “standard”. I’ll have to wait till Saturday to score the holey benchmark cut and redo the holey benchmark cut/score if the measurements don’t check out.

I remeasured both “standard” and “holey” benchmark cuts with the plywood laying flat on the floor, as opposed to on the maslow.

@Joshua noticed:

I double checked the hole measurements with the sheet flat on the floor. After recalculating the numbers, the suggested settings, to me, seem barely different at all. Will updating my settings with the “check” numbers, and doing another benchmark cut, even show any differences with such a small change?

Here are the two scores:
With “standard” calibration numbers:

With “holey” calibration numbers:

I did another benchmark cut with the “check” numbers. I didn’t think it would make any difference but this is what I got…

I’m bummed to see this because I believe Joshua’s calibration technique is better and several people have posted improvements after running holey calibration. I still have some issues with the left side of my top bar flexing so I’m wondering if that has anything to do with this (if my top bar was absolutely rigid, holey might give me better numbers)?

After doing all the above I went to change the settings back and, this time, entering a different motor spacing didn’t cause any issues but when I entered a different Y offset, I got the same error I referenced above. I had already implemented what was suggested last time and still got the error. I went to set chain lengths and pressed automatic and hit the zero button when it was done. I then pressed move to center and the sled went all the way to the bottom center of the sheet. At this point 0,0 was so far off I had to wipe eeprom and start over. Of course, since I stopped taking detailed notes and ini copies at every step, it errored on me.

There have now been several people to report having this issue. I think I’m going to revert back to the official v1.25 from Joshua’s Holey update fw (v1.25 plus his updates) and try the same thing to see if I can reproduce it there.

Sled will not go to top of board same parts are cut different sizes
Cant get calibrated


can u please run the calibration for me? I cant seem to run it here.

  1. 39 3/16

2 39 1/8

  1. 39 5/16

  2. 39 7/8

  3. 27 1/16

  4. 26 1/8

  5. 27

  6. 46 5/8

  7. 47 7/8

  8. 47 13/16

  9. 46 5/8

  10. 12 1/4

current settings:


feed is under

vertical offset 360 (actual offset is 444.5, im trying to center up.

distance between motors 3027.9

sled weight is 22.2

i set chain tolerances to zero for this new maslow.

Thank you, JR