The calibration tool is feature complete, but requires one more round of code refactoring.
I recently added a feature to test the whole design for repeatablity. The basic idea is to to take a reference picture of each nozzle and compare it to a picture take after unload and load.
OpenCV provides a function called phaseCorrelate which estimates the shift between to pictures in (sub)pixel. The process is calibrated by moving the hotend a known distance in the beginning. The camera I'm using has about 4.2µm/pixel resolution.
Below are the results of 200 load/unload cycles with two tools in the sequence T0 -> T1 -> T0 -> T1 -> ... . The plot on the left shows all nozzle positions, while the right part is X and Y separated over time.
In short, the repeatability is in the ballpark of 20µm over 200 load/unload cycles which is identical to a 200 or 400 layer print (depending on the slicer). The Y axis seems to have a steady trend. The reason is yet unclear to me. It can't be step loss, because this would affect both tools. Thermal drift (the test lasts about 40 Minutes) maybe? Overall I'm not concerned about it, it is good enough for the purpose.