After the robot is complete with its mechanical platform, the hardware is up and running, the software is almost done (a real software development is a neverending story), we would like to check on the field what we have had in mind since the beginning.
The first thing to do is measuring the diameter of the wheels and the axle (distance between the center of the wheels) with a caliper. This is the first measure we can input in the program but, unfortunately, it is not enough precise. Since, as already said, the errors in odometry are cumulative, even a very small error in mechanical parameters estimation can lead to significant error in final positioning. In a real world the wheels are not a perfect circle so we have to input an "average diameter". The wheels don't turn perfectly at a right angle on there axis, in this case too we need an average measure.
In a successive approximation fashion we start correcting parameters until the robot travels on a straight line and for a given distance, extimated with a tape measure, but we experiment that, after some turns and some meters of traveling, the position is stil several centimeters far from where we suppose. The manoeuvre of turning for a given angle may be inaccurate because of wrong axle and/or wrong wheels diameters, these errors can be added or subtracted each other in different ways in different directions of turning. Finding right values could be a very boring job. Fortunately (sometimes it happens) there is a very well experimented method to easily find wich kind of error we have and its magnitude.
At University of Michigan, Johann Borenstein and Liqiang Feng already developed an easy test several years ago:
Using some trigonometry they obtained practical formulas to evaluet how much each parameter affects the final systematic error and also to have an estimation of non-systematic errors. I will not explain what is very well explained in that paper and in a lot of other similar papers, I will discuss instead some practical issues experimented in performing this test, also providing some useful tools.
The video shows how I have executed the test on a flat surface, following the square a little bit smaller than what UMBmark suggests. The test is very easy because we just need a ruler to measure a small distance, but it's very accurate because the robot travels for several meters and cumulates an appreciable error. The test can be performed several times to have an extimation of the repeatibility, i.e. non-systematic errors.
To make easier aligning the robot on the reference system and accurately measuring the returning coordinates, a reference grid can be printed in both A4 format or A3 format according tho the dimesions and/or precision of your robot. As seen on the video some good reference must be choosen on the platform to determine the starting and returning point of the robot. I've choosen a couple of very cheap laser pointer to show points at coordinates +12cm and -12cm ahead and behind the robot, exactly on the Y axis. An example of usage of reference grid can be seen here.
To help computing UMBmark formulas, an Open Office spreadsheet can be downloaded.
Beyond the formulas, an idea about the corrections needed can be graphically acknowledged as soon as the centers of gravity for clockwise and counter-clockwise returning points have been drawn on the reference grid. If you want the exact mathematical reasons for this behavior, you could read every single demonstration on Johann Borenstein paper, but it's not difficult to understand that:
- the center of gravities (CG) for CW and CCW paths falls in opposite quadrants of the reference system, drawing a slanted segment between them
- the length of the segment drawn between CW CG and CCW CG is proportional to error in axle measure only, because it affects the error in the same way on turning both CW or CCW
- the symmetry of this segment with respect to the origin of the reference system (starting point) is proportional to the error in wheels diameter only, since they affect the error in different way turning CW or CCW.
I can tell by experience, that any other method to correct mechanical parameters is more difficult, less precise and more tedious than UMBmark.