Holey Triangular Calibration

@Joshua, I made a tweak to my top beam by adding a shim under the left most support to square things up and and re-ran your HoleyCal NC file with your firmware and GC. This time I laid the board down on a table to take the measurements with my tape measure and machinist ruler and plugged them into your script.

I am happy to report that the cuts improved to under 1/32" of error if any on my square and circle test cut! makercam-test.nc (2.6 KB)
I know feel ready to take on some projects with everything dialed in, thanks again.:grinning:

4 Likes

That’s awesome! Gives me hope… Although now I’m feeling like I need to start over and make a new frame :disappointed:

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.

RunHoleyCalibration.py (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:
image
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.

1 Like

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

1 Like

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.

(edit)
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.

1 Like

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.

6 Likes

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

1 Like

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.

2 Likes

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.

(edit)

Limitation

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).

6 Likes

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!!

1 Like

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!
Paul

3 Likes

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!
Paul

1 Like

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

1 Like

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::

@Joshua,

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?

Thanks!

1 Like

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.

1 Like

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…RunHoleyCalibrationRESULTS_20190307.py (2.2 KB)

2 Likes

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.

1 Like