Optical Calibration Demo and Three Hours Working on a Bug

Ponoko had a $20 credit for your first cut, so I did a 7.1-inch x 7.1-inch 0.25 inch mdf board and fit four platforms to make up the camera mount. Figure I’d use two at the base, one in the middle and one at the top. I put holes in it for bolts to hold it together… Maybe a few more holes than I needed… but no big whoop. I’ll 3-D print the bushings once I see the actual size of the inner hole.

Just ran the calibration using rotation correction of the calibration points from -6 inches to +6 inches around center.

Prior to calibration, my X and Y root-mean-squared-error (square root of the sum of squares/number of measurements) were 1.4 mm and 0.86 mm, respectively, with maximum x and y error being -2.777 mm and -1.712 mm, respectively.

After calibration, my X and Y RMSE were 0.261 mm and 0.644 mm, respectively, with maximum x and y error being -0.372 mm and -1.055 mm, respectively.

So, I got my X error to within 0.5 mm but the Y error didn’t improve as much. This should, theoretically, translate across the entire sheet.

There’s still plenty of variation in errors that might be due to inaccuracy in measurements, inaccuracy in camera placement, or issues with the ring kit (jumpiness) or even sled sticking:

X coordinate errors:

-6 -3 0 3 6
6 -0.16 -0.137 -0.279 0.525 -0.372
3 0.375 -0.299 0 -0.092 -0.327
0 0.227 -0.254 -0.076 0.239 -0.325
-3 0.042 0.025 -0.172 0.271 -0.076
-6 -0.15 0.523 -0.223 0.257 -0.114

Y coordinate errors:

-6 -3 0 3 6
6 0.368 -1.032 0.57 -0.358 0.799
3 -0.306 0.82 -0.779 0.937 -0.111
0 -0.633 0.389 -0.752 0.413 -0.939
-3 0.031 0.175 0.256 -0.51 0.635
-6 -0.19 -1.055 0.938 -0.888 0.298

This method should work well for quantifying what changes results in improvement (i.e., different linkage kits, different sled material, different motor separations, etc.)

1 Like

Here’s a couple pictures and a video.

Video up at:



Thanks for all of that info. It clears up some of the things for me.

When I look at your tables they seem a little random as you scan across rows or up/down columns. Is not what I’d expect. I’d expect a continuity of error magnitude, changing some, but not bouncing around like some of these. Maybe the sled is sticking a little? Are the calculations for chain sag, stretch, etc. still in play?

In any case, what I think would be important is do exactly what you are doing, but block out all of the “correction calculations” in the software. What I’m trying to say (don’t know programming that well) is have the Maslow try to find its position just on measurements of motor locations, chain correction for over or under, etc. Block out all of the calculations that have been derived for trying to correct for non-geometry things. Then take your measurements.

They may be further “off” from desired locations, but follow a “normal curve” and not be erratic.

Here is a website that I have found to do a “curve fit” for y and x based on x+y coordinate locations.

It shows many types of curve fits for this type of data. Maybe one of our Maslonians is a good mathematician and can know how to use this type of surface program.

I expect the “native Maslow” would produce a surface fit that would be smooth and continuous, without discontinuities. Those equations I would think would be easier to use to find the “correction amount” for each x and y in lieu of interpolating the data for each time.

Just my thoughts.

Keep up the great work.


Yes, I noticed that as well and that’s what I’ve been pondering about. I had graphed out the Y-error components and it seems it goes from being off in a positive direction, then a negative, then positive, then negative… almost like the sled is moving up and down as it moves horizontally.

The other calibration factors are still in play and I don’t think at such a small scale it makes a difference. Those factors have macroscopic effects… that is, the difference those values make in chain length calculations 3-inches apart are much smaller than the resolution of the error, so disabling them wouldn’t make a difference… they definitely do not cause the “erratic” movement.

What I do potentially believe is causing this is:

  1. making too small of adjustments to home in on the center at max feed rate (I posted a question about this).
  2. sled sticking. It’s a piece of veneer plywood and I sanded it down even, but the sled still tears at the paper its sliding over… just from the weight of the sled. It appears my vertical accuracy is worse than horizontal. I think that’s because with horizontal, I have two motors acting against each other, but for vertical, I have two motors acting with each other against gravity and friction.
  3. ring kit being imperfect or jerky. the carriages don’t move really smoothly and I noticed on a project I did, the horizontal cuts were very slightly “wavy” (sander took care of it so wasn’t that bad). I did sand off the inside of the ring and removed the powder coating so that’s not the issue.
  4. camera not perfectly centered… I wouldn’t expect this to cause “waviness”, but its something to track nevertheless.

Thanks, I’ll look at it. Interpolation was easy for me to implement since I have already coded it about a 1,000 times in my life in other software and I just copied and pasted the code. Since right now I’m testing against discrete points and I have the error measurement of those discrete points, I think it’s best to continue to use the error matrix and not a curve… just to eliminate “errors” that the curve will introduce at those discrete points if I can’t fit it perfectly… if you follow.

I had seen somewhere in these blogs where we weren’t sure about the correction calculations, and that is why I thought blocking them would provide insight. I didn’t know that their values were to be so small. Can you check each of their values for each point to be sure? (print them next to the table points)

Can we make a better sled for you? What would you like to have?


It’s not so much as the size of the values, it’s the difference of the values over small distances and that they move in the same direction… unless we do something like multiply the chain angle by a large value in the formula (and we don’t), there’s nothing to cause oscillations. Regardless, I’ll change chain sag to zero just to eliminate it. I’m not testing in corners at the moment where it might come in handy

I’m looking for some HDPE to place under the sled to see if it lowers the friction and makes a difference. My wife has a large cutting board but I would get in trouble if I used it. I haven’t read through the forums yet to find where people got theres… Also, I was trying to find a way to laser cut a template for a sled so I can ensure perfect centering of the router body with the ring kit, but I’ve not found a reasonable service yet for such a large cut.

Where are you located?

I’m in Tallahassee

1 Like

This is so dang cool. Amazing work. :+1: :+1: :+1: :+1: :+1:

What a great point. This technique could provide us a very accurate and automated way to compare other changes which is something we need to be able to find what works the best

1 Like

I have a Shaper Origin that can cut that. Send me a SVG file.

I’m using this, fixed to the sole of my sled with #2 flat-head wood screws.

1 Like

Cool idea and you have put a lot of work into it. I wonder if you could replace the endoscope with an optical mouse. They do pattern recognition so they can work on any surface. You might not need anything besides the plywood. I think going with 4 sheets of the test pattern you are going to wind up with alignment errors. I like the idea though.

What I was trying to do was to get something like this laser cut… don’t use this file for anything because I was trying to adjust hole size to account for kerfing by the laser… I don’t think your Shaper Origin will be able to cut the small holes…It has holes for all three linkage kits and the R22002 router base.


I did research into this and don’t think it will work. Someone did a research paper on using two mice (because you need to know rotation) and calculated the error as it moved a robot around. The problem is that it calculates it’s position by the delta with its previous position… and because there’s some amount of error, even really small, in that calculation, over time it adds up to something substantial. I don’t recall what I calculated, but I think just moving around the perimeter of the board would have resulted in position error of several millimeters. Regardless, I honestly think this camera system potentially has really good accuracy. I have 10 pixel/mm resolution and if the calibration pattern is good, I should be well within the tolerance needed.

I was worried about the alignment, but I don’t think I can get a 4-foot x 8-foot laminated sheet. I think if I can manage with making the holes accurately enough, I’ll be ok. We will find out though… They came in today and look good. Now I just need to figure out how to make the hole without messing it up.

Thanks… just ordered one!

My smallest bit is 1/16" . Any size larger than that it can do to .001"

Yeah. I have a ring kit, @pillageThenBurn’s linkage kit and working on getting @dlang’s kit. I think I can do other things with this system than just track these registration points at fixed points. I think tracking error in real-time along a path (i.e., a drawn line) is very doable.

Let me know if I should ping @dlang for you. He’s not to far from me.

Thank you