Maslow Home Maslow Community Garden Newsletter

Holey Triangular Calibration


I believe a “dynamic” calibration would be tough to implement… I like the idea though. This morning I thought about having two calibrations, one for accuracy across the whole sheet and one for accuracy near the middle and made a version of the newcal-holes that would handle two sets of holes (one at the extremes and another closer in to the middle… about a 2-foot x 2-foot square). I can get “good” calibration numbers if I calibrate to either of the two.

However, I can’t get good numbers if I try to calibrate to both at the same time (i.e., an 9-hole calibration) and I think the problem is the accuracy in measurements… and in particular, the measurements to Mark 5. This measurement is crucial in determining the rotation of the hole pattern (i.e., how level the frame is and how uniform and consistent between the chains that the chain wear is). The problem comes in when you measure Mark 5 for the outer holes and it results in calculations that the frame is tilted counterclockwise a small amount but when you measure Mark 5 for the inner holes and it results in calculations that the frame is tilted clockwise a small amount. These reconcilable differences results in a poor calibration. The accuracy to Mark 5 is paramount and that’s what I need to figure out how to do better.


Lesson of the day, don’t enter too many digits into the “Motor Offset Height in mm”… If there are too many digits, I think the front end gets truncated. Took a while to figure out why it thought 0,0 was WAYYYY up on the board. Probably need to put a fix in… will make an github issue.


Please help


what do you measure

  1. make sure you’re using the latest version of Ground and Maslow Firmware (1.20 as of now)

  2. switch to ‘triangular kinematics’ (in a previous screen i believe)

  3. you’ll be asked to measure the radius from the center drill bit to the outside of the ring connector (i’m pretty sure, i have a different linkage myself)

the main thing though is that the screenshot above is for the old (non triangular) design…

also: this conversation (the setup of your machine) is best suited to another topic, as this topic is for @madgrizzle 's slimmed down calibration fork, which is still under development…


Review this thread… it’s not completed, but gets you through most of the process…

1 Like

Small update. In the calculations, I never used the distance between Holes 1 and 4… Therefore, I decided to try to eliminate a step and iteratively determine dH0M5 based upon the value that gives that calculates dH1H4 the closest to the measured dH1H4. It’s a sloppy routine that starts with a very high estimated dH0M5 and then decreases it until the error starts getting worse. Since it may not ever arrive at a prescribed minimum error, this change in error direction is a good indicator of being real close to it.


Another update… I spent a bunch of time over the holiday weekend trying to get the calibration working better. Couple things I discovered:

  1. The measurements to Mark 5 are absolutely critical and very difficult to make. The problem is that Mark 5 has to be dead center, directly below Hole 0 (at 0,0). Since calibration requires a measurement from Hole 2 to Mark 5, I have to hang my level on a dowel inserted into Hole 0, get the bubble to level, and then because the level doesn’t have a center line mark, I have to take the average of the measurements from Hole 2 to the left edge and right edge. That’s 3-4 measurements that I have to make and each one has room for error. A plumb bob won’t work because the frame is tilted backwards. The reason this whole thing is significant is that using my painstakingly taken measurements, the lowest Error Magnitude I was able to reach was around 2.0 with some of the inner holes still having errors of over 3 mm (way significant). However, if I shifted the Mark 5 measurement for the outer holes a mere 1 mm to the left and the inner holes a mere 1 mm to the right, my Error Magnitude dropped to 1.0 and most holes were within 1 mm (way better). So having a good way of finding Mark 5 is important. I was thinking of getting an auto-adjusting laser level that will project a plumb vertical line to facilitate the Mark 5 measurement, however, because the frame is tilted back 15 degrees, I have to make sure I’m dead center in front of the thing, otherwise, the vertical line mark will be off… Another source of potential error.

  2. My shed has settled unevenly. I suspected that was the case, but I didn’t realize how much until I measured about a 1-inch difference from the floor to the left motor mount and right motor mounts… The level I placed on top beam seems level, but maybe it’s not good enough. So I ordered an electronic water level since I have to do the leveling without help.

  3. Though the calibration routine is designed to adjust for out of level, it appears that “top beam tilt” value fights against the difference in chain tolerance. As the top beam tilts, the right chain tolerance seems to increases to counteract the effect. Eventually I end up with a 20 mm difference in left motor and right motor Y coordinates, a left chain with a 0.0 chain tolerance, but a right chain with a 0.25 chain tolerance… These are brand new chains from the same spool. It’s hard to imagine there would be hardly any difference in chain tolerance between the two… and again, I don’t think my top beam is so far out of whack that there’s a 20 mm difference in heights.

So what I’ve done so far is to make the calibration routine ( a bit flexible so that you can calibrate to outer holes, inner holes, or both outer and inner. I can get “good” Error Magnitudes (<1.0) with calibrating to outer holes, to inner holes, but not to both simultaneously. I can only accomplish that if I adjust my measurements to Mark 5 as mentioned above.

And as I mentioned previously, just because I have a low Error Magnitude, doesn’t mean they produce good cuts. So my plan of attack is to eliminate as many variables as possible by leveling the frame this weekend, set chain tolerances to 0.0 for each, and do another set of cuts/measurements. If the frame is level, the chains are identical, then Mark 5 should really measure to be half the distance between the two bottom holes. If not, something is wrong.


Appreciate the updates :slightly_smiling_face:


Hey @madgrizzle,

Do you have access to a 3d printer?
I printed some guides for when measuring my motor distance.
It has a slot on one side to hold tape and a U shaped guide on the other side with a window and mark in the center. So you can feed your tape through it and see where the exact center line is.

Would gladly share these with you.

Not near my work computer at the moment. But can share tomorrow. Though they will need to be adjusted for your hole size.


I would be glad if these where sold internationally. I’m serious.


Yes I do. I’d be very interested in it.

1 Like

I’m actually at an emergency vet with my pup right now. Will post when I have some time.

What is the diameter of the holes you are drilling?


1/4 inch… hope all is well


ugh … not going as hoped thats for sure. Looking like we’re going to need some surgery.
Thanks for the well wishes.

Gonna take me a couple days to get back to my work computer. Ill try to post them this weekend.


Another small update… I decided to rebuild my top beam using a coupler to add a 2 foot section to a 10 foot section ( Previously, I stacked a 2-foot section to each end of the 10 foot beam (1 foot of each overlapping the 10 foot). I noticed things weren’t “perfect” so I did the rebuild… I also made it so I can slide the top beam arms in and out from the frame to improve alignment. It’s a work in progress…


so this is still a total of 12’? or are you adding 2’ to each end for a total of 14’?


12-feet, just used a single coupler… expensive enough for what they are. ebay find.


I just ran into something interesting… I don’t know if something is messed up in the firmware I’ve modified, but when I set zero on the sprockets and feed out 320 links of chain, the sprocket doesn’t return to exactly zero. I’m confident it was really zero when I set zero on it (used chain and bullet level trick). Both sprockets are off by a few degrees. I checked the settings in the log and everything seems “normal”:


And whats even weirder… it knew because when I went to reset zero, I hit automatic and the sprockets returned to zero. Extend chain distance is set to 2032… 2032/6.35 = 320. Since that’s divisible by 10, the 12 o’clock sprocket should have returned to 12 o’clock, precisely. The firmware code looks good… so this isn’t making much sense to me. It uses SingleAxisMove so it doesn’t use triangularInverse, which is where I’ve made changes.