Addendum: I collected some more test data.

With the part pointing "forwards" -- that is, close to the Reference orientation -- the VR[1] Found Pos has values of X -151, Y 16, and R 0.1. But the VR[1] *Offset* is X -44, Y 23, and R 2.0.

With the part "backwards" (roughly 180deg in R), VR[1] Found Pos is X -190, Y 20, R -173, with an Offset value of X -295, Y 1, R -171

So I tried forcing the part into +90 and -90 rotations, which would normally not occur in production.

For a Found Pos of X -240, Y -3,R -89, the Offset becomes X -231, Y -109(!), R -87.

For a Found Pos of X -199, Y 10, R 92, the Offset becomes X -211, Y 117, R 94.

So, the Found Pos values line up well with the physical location of the part -- the R values are right about where I would expect them to be, after manually rotating the part. The Offset R values are also pretty close (there seems to be a consistent 2deg difference), but the X and Y values are *way* off where they should be.

This suggests to me that the Found Pos offsets are being applied in/around the wrong Frame, somehow. My best guess, looking at these numbers, is that the R rotation is being applied, not around the centroid/Origin of the part, but around a point roughly X-100 from the part's actual location. The robot picks the part correctly in the "Forward" orientation simply b/c that's the orientation I taught the Pick Ref Pos in.

I'm still at a loss as to what could cause this, though. I've re-done the TrakFrame and Vision Cal from scratch multiple times, following the steps in the manual.