Loose belts during calibration

one thing is that the estimate of the anchor locations changes on each pass, so
most of the 2nd column is working with a different estimate than the first
column (that doesn’t explain the top dot of the 2nds column though)

David Lang

Date: Mon, 30 Sep 2024 23:22:16 +0000
From: Andith via Maslow CNC Forums notifications@maslowcnc.discoursemail.com
Reply-To: Maslow CNC Forums
incoming+17ee8e8746b81c35f952ac3fa3ff168b@maslowcnc.discoursemail.com
To: david@lang.hm
Subject: [Maslow CNC] Loose belts during calibration

I think what he was saying is that the error distribution isn’t completely clustered in the corners so the height of the arms alone doesn’t fully explain the resulting errors. For instance, the first column stays very red nearly all the way down, then fades quickly to black. However, in the second column, the first point is black, and in the third column, the second point is black. If it was solely the height of the arms, then those patches of black do not make much sense and you’d expect things to more radiate out evenly towards the center. Also, why are the first and bottom rows nearly completely error free (except in the far corners), but similar results don’t show up in the columns (i.e., if the lower arms are keeping the machine in place in the top and bottom rows giving us all the dark dots, then why doesn’t it have any effect on keeping nearby errors out of their columns?). The graph definitely indicates something going on in those corners, but I don’t think the arm hei
ght quite explains everything wrong in the graph. It’s possible there is a combination of issues and not solely the arm height.

1 Like

And here that is with the corresponding planes sliced off the bottom

Or, looking directly on

So now I’m wondering if what I’m really saying is that the order of arm heights currently means that we are solving for 4 intersecting planes (which we know), whereas we could be solving for a single plane, at least something that’s very close to it.

1 Like

Lee H wrote

So now I’m wondering if what I’m really saying is that the order of arm
heights currently means that we are solving for 4 intersecting planes (which
we know), whereas we could be solving for a single plane, at least something
that’s very close to it.

We aren’t actually calculating a plan of all the anchors or arm ends, we are
solving 4 separate equasions for each point (one for each arm) and looking for
what numbers come closest to satisfying all of them.

David Lang

1 Like

The python code is generating some obj file. This file includes a colored point cloud. You need a 3d visualizer like Meshlab (https://www.meshlab.net/). Paste the obj file into Mashlab and the point cloud should be visible. For a better visualization please use the Dot Decorator Shading option and maximize the point size:
grafik

2 Likes

Thanks! I’ll play around with that today.

Very cool! I have it working:

1 Like

@bar, is your graph (immediately above) based on the same data as before or on your individual and separate data? If it is not based on the same data, the graphs still appear nearly identical.

1 Like

I’m getting some pretty different results than you when I add my own calibration data though. I’m seeing this error message at the end of the run and when I visualize the points I’m seeing that they don’t seem to have found a good fit.

 message: Desired error not necessarily achieved due to precision loss.
 success: False
  status: 2
     fun: 13.137568958451139
       x: [ 6.236e+01  2.153e+02  1.496e+03  8.950e+02  3.834e+03
            1.805e+03  1.100e+03  3.763e+03  1.028e+03]
     nit: 36
     jac: [-2.363e-02 -1.241e-01  1.687e-02  1.485e-03 -4.232e-03
           -3.864e-02  1.921e-03  5.213e-02  2.142e-02]
    nfev: 3330
    njev: 332
[0.0, 0.0, np.float64(62.36200217953408)]
[ 215.27596959 1495.70409647  895.01778061]
[3833.99868113 1805.15888435 1100.46886546]

or slightly better:

1 Like

Could you give me your data. Then I will try to improve it …

1 Like

Here is the data that I used for the second one:

measurements_str = ‘[{bl:1515.103, br:2804.748, tr:2447.121, tl:876.392}, {bl:1422.588, br:2756.036, tr:2475.148, tl:950.036}, {bl:1330.711, br:2709.874, tr:2506.532, tl:1028.783}, {bl:1242.074, br:2666.919, tr:2541.451, tl:1110.755}, {bl:1152.336, br:2625.891, tr:2579.771, tl:1195.702}, {bl:1066.214, br:2588.245, tr:2621.357, tl:1282.753}, {bl:980.827, br:2554.013, tr:2666.022, tl:1371.564}, {bl:898.978, br:2524.223, tr:2713.698, tl:1461.807}, {bl:821.227, br:2497.490, tr:2764.155, tl:1553.227}, {bl:944.488, br:2329.336, tr:2616.864, tl:1627.878}, {bl:1012.958, br:2358.208, tr:2563.315, tl:1541.466}, {bl:1085.974, br:2391.109, tr:2512.789, tl:1456.095}, {bl:1163.225, br:2426.964, tr:2465.281, tl:1372.721}, {bl:1243.953, br:2467.498, tr:2420.992, tl:1291.723}, {bl:1327.933, br:2510.706, tr:2380.056, tl:1213.508}, {bl:1411.503, br:2556.705, tr:2342.673, tl:1138.744}, {bl:1497.150, br:2604.523, tr:2309.074, tl:1068.168}, {bl:1585.489, br:2656.684, tr:2279.324, tl:1002.466}, {bl:1667.671, br:2511.146, tr:2112.284, tl:1141.007}, {bl:1584.689, br:2456.440, tr:2143.682, tl:1199.078}, {bl:1502.899, br:2404.733, tr:2179.849, tl:1262.327}, {bl:1424.807, br:2354.971, tr:2219.914, tl:1330.091}, {bl:1348.434, br:2311.382, tr:2263.679, tl:1401.604}, {bl:1274.167, br:2269.034, tr:2310.974, tl:1476.625}, {bl:1205.273, br:2230.083, tr:2361.523, tl:1554.373}, {bl:1138.548, br:2194.955, tr:2415.171, tl:1634.507}, {bl:1079.124, br:2163.861, tr:2471.699, tl:1716.818}, {bl:1224.834, br:1998.560, tr:2332.173, tl:1818.502}, {bl:1277.310, br:2030.427, tr:2272.002, tl:1741.745}, {bl:1337.668, br:2069.144, tr:2214.870, tl:1666.638}, {bl:1400.651, br:2111.442, tr:2160.817, tl:1594.290}, {bl:1469.800, br:2156.544, tr:2110.105, tl:1525.117}, {bl:1540.848, br:2205.785, tr:2063.022, tl:1459.522}, {bl:1613.832, br:2256.357, tr:2019.828, tl:1397.913}, {bl:1689.476, br:2311.992, tr:1980.706, tl:1341.026}, {bl:1767.205, br:2369.918, tr:1946.009, tl:1289.412}, {bl:1874.848, br:2232.223, tr:1782.040, tl:1442.737}, {bl:1800.506, br:2169.567, tr:1819.334, tl:1489.251}, {bl:1729.763, br:2111.992, tr:1861.715, tl:1540.601}, {bl:1663.028, br:2057.909, tr:1908.385, tl:1596.547}, {bl:1596.614, br:2005.305, tr:1959.225, tl:1656.760}, {bl:1535.011, br:1956.136, tr:2013.652, tl:1720.557}, {bl:1477.750, br:1912.553, tr:2071.423, tl:1787.679}, {bl:1424.756, br:1871.767, tr:2132.372, tl:1857.828}, {bl:1377.448, br:1834.585, tr:2196.184, tl:1930.625}, {bl:1535.784, br:1671.982, tr:2067.609, tl:2051.593}, {bl:1579.858, br:1711.243, tr:1999.647, tl:1983.935}, {bl:1626.737, br:1754.349, tr:1934.441, tl:1918.369}, {bl:1679.242, br:1805.071, tr:1872.314, tl:1855.840}, {bl:1735.475, br:1857.018, tr:1813.671, tl:1796.772}, {bl:1795.798, br:1914.472, tr:1758.675, tl:1741.457}, {bl:1858.199, br:1972.911, tr:1707.722, tl:1690.241}, {bl:1923.732, br:2034.606, tr:1661.377, tl:1643.515}, {bl:1990.999, br:2099.288, tr:1619.839, tl:1601.684}, {bl:2118.648, br:1975.276, tr:1461.009, tl:1762.422}, {bl:2054.838, br:1906.267, tr:1506.227, tl:1800.766}, {bl:1992.405, br:1839.545, tr:1557.307, tl:1843.472}, {bl:1935.405, br:1776.350, tr:1612.866, tl:1890.445}, {bl:1879.400, br:1715.296, tr:1672.559, tl:1941.557}, {bl:1827.359, br:1657.826, tr:1735.990, tl:1996.276}, {bl:1780.064, br:1603.743, tr:1802.717, tl:2054.471}, {bl:1735.708, br:1556.257, tr:1872.413, tl:2115.800}, {bl:1696.967, br:1511.372, tr:1944.812, tl:2179.989}, {bl:1859.721, br:1355.756, tr:1831.984, tl:2314.380}, {bl:1894.787, br:1404.484, tr:1754.977, tl:2254.677}, {bl:1935.021, br:1458.223, tr:1680.348, tl:2197.196}, {bl:1978.722, br:1516.236, tr:1608.515, tl:2142.826}, {bl:2027.842, br:1579.506, tr:1539.710, tl:2091.848}, {bl:2079.692, br:1645.947, tr:1474.593, tl:2044.457}, {bl:2134.315, br:1714.577, tr:1413.529, tl:2000.983}, {bl:2192.851, br:1785.312, tr:1356.977, tl:1961.695}, {bl:2253.459, br:1859.439, tr:1305.766, tl:1926.733}, {bl:2390.540, br:1752.253, tr:1156.735, tl:2091.746}, {bl:2333.405, br:1672.674, tr:1213.594, tl:2124.234}, {bl:2278.664, br:1596.319, tr:1276.381, tl:2160.532}, {bl:2227.080, br:1522.269, tr:1343.589, tl:2200.825}, {bl:2180.013, br:1451.095, tr:1414.659, tl:2244.878}, {bl:2134.581, br:1383.361, tr:1489.202, tl:2292.417}, {bl:2093.555, br:1318.262, tr:1566.513, tl:2343.277}, {bl:2056.586, br:1257.757, tr:1646.180, tl:2397.209}, {bl:2023.411, br:1204.119, tr:1728.091, tl:2454.052}, {bl:2189.214, br:1060.403, tr:1637.787, tl:2597.797}, {bl:2218.668, br:1122.683, tr:1551.292, tl:2544.825}, {bl:2253.013, br:1189.148, tr:1466.310, tl:2494.027}, {bl:2291.470, br:1260.379, tr:1383.377, tl:2446.263}, {bl:2334.725, br:1335.048, tr:1302.730, tl:2401.745}, {bl:2380.096, br:1412.990, tr:1225.046, tl:2360.599}, {bl:2428.669, br:1493.835, tr:1150.780, tl:2323.007}, {bl:2481.321, br:1575.936, tr:1080.668, tl:2289.228}, {bl:2535.147, br:1657.885, tr:1015.540, tl:2259.358}, {bl:2679.652, br:1576.720, tr:886.828, tl:2426.905}, {bl:2628.118, br:1487.015, tr:960.040, tl:2455.066}, {bl:2580.080, br:1399.739, tr:1038.177, tl:2486.542}, {bl:2533.990, br:1313.286, tr:1119.862, tl:2521.646}, {bl:2490.742, br:1231.689, tr:1204.318, tl:2560.170}, {bl:2451.255, br:1149.625, tr:1290.990, tl:2601.989}, {bl:2415.340, br:1071.757, tr:1379.455, tl:2646.861}, {bl:2383.880, br:996.215, tr:1469.311, tl:2694.749}, {bl:2355.298, br:926.285, tr:1560.509, tl:2745.407},]’

Can you try this improvement. It seems my update is more robust. But I have to go to bed and wount wait until it converges …
calibrate.py (18.6 KB)

1 Like

I will give it a try right now!

I was couriouse :slight_smile:

message: Optimization terminated successfully.
success: True
status: 0
fun: 0.8912146317551359
x: [ 2.778e+00 -7.088e+01 2.087e+03 5.976e+01 2.869e+03
2.085e+03 1.565e+01 2.926e+03 3.042e+01]
nit: 1353
nfev: 2011
final_simplex: (array([[ 2.778e+00, -7.088e+01, …, 2.926e+03,
3.042e+01],
[ 2.778e+00, -7.088e+01, …, 2.926e+03,
3.042e+01],
…,
[ 2.778e+00, -7.088e+01, …, 2.926e+03,
3.042e+01],
[ 2.778e+00, -7.088e+01, …, 2.926e+03,
3.042e+01]]), array([ 8.912e-01, 8.912e-01, 8.912e-01, 8.912e-01,
8.912e-01, 8.912e-01, 8.912e-01, 8.912e-01,
8.912e-01, 8.912e-01]))
[0.0, 0.0, 2.7782756796101573]
[ -70.88035282 2086.97959977 59.76117711]
[2869.39989698 2085.46760851 15.6486237 ]
[2925.9100838242866, 0.0, 30.423941848456366]
Maslow Fittness is: 0.5313592927573974
residuals.obj (39.2 KB)

1 Like

That does look much better. The left side still seems to be a weakness, but maybe not to quite the same extent…interesting :thinking:

That is really interesting. The results are quite different (which both is and isn’t surprising). Oddly, @bar’s data has a slight triangular peak in the bottom middle to bottom middle-right area, that doesn’t show up at all in @Ulmair’s data. I wonder which graph is more representative of most users. Later, I can post the data from my calibration yesterday (not sure if I have the chops to make the graph above, but I definitely can pull the data).

What do your respective frame’s look like? Horizontal? Vertical? Do your corner anchors lie flush with the rest of the frame or higher than the frame?

1 Like

It would be super interesting to compare more data sets. There are some here that we can play with, although they are mostly quite old: GitHub - BarbourSmith/Calibration-Simulation

My frame from that test is horizontal and the basic frame that is on the website.