I had a large job yesterday, 100 pcbs 100x160mm with many different parts, and used that to check a few things. I had random misplaces on the boards, all parts moved by a certain distance. Sometimes that added up to 0.3mm, which is quite much in a fine pitch part. Some pcbs where perfect, then suddenly the next was off again. I then was brave and switched of the mark detection for the boards, and found all my problems went away! All boards were placed near perfect after switching it off.
It seems that the pcb mark detection does more harm as it helps. I guess the marks are detected, but the position deviation is not calculated correctly, leading to these placement errors. I use 1mm round fidicual marks, gold plated (ENIG), so very even, perfectly detectable.
This happens if mark detection parameters not adjusted well. Use bright light settings and adjust contrast. Your machine has no cover take care of changing light condition from side or top above machine.
I checked that today and found that the detection of the dots is not really reliable. For example, if I use a visual origin, the camera moves back and forth on the dot, not much, but enough to create the position deviations I had. The picture is good, sharp. But when I click on the Visiontest button I see that the position is not stable. It jumps randomly, see the images. I guess that is also the reason why it does not always drive to the park position after finishing a job, as it does not seem to detect the dot in 100% of the cases.
I experimented also with other dots, I milled a very sharp white dot on black background, 1.2mm diameter, the detection should be perfect, but it does not, still jumps around a bit.
I tried almost all combinations of the two settings I have, contrast and brightness, the small deviations are always there, I even tried in a darkened room with lights off. It seems as if the detection algorithm does not always find the true center of the spot, a common problem in image detection, especialy the algorithms from OpenCV show the same behaviour, I had those problems with my older Liteplacer too, which relied on OpenCV. Using a gaussian blur on the image made more stable, but also much slower. The OpenPNP founder created his own algorithms to overcome that problem. Since I have no access to the image settings or the software code, I cannot find out how to make this better. I have only contrast and brightness, no image detection pipeline settings to play with. I can work with this, it is just annoying that it does not always places things right as it could, and that in 1 out of 3 times it does not detect the dot at all and then does not drive to the park position after a job is finished.
I guess this is also due to the very small size of the dot in the camera image, there are only a few pixels for this dot to detect. Just an idea: Can I use a large dot too, say, 4 or 5 mm? Or would that make things worse?.