public override void DoCalib() { if (PlatformUp != null) { var isFirst = true; foreach (var pos in PlatformUpPos) { if (isFirst) { isFirst = false; PlatformUp.EnterAuto(this).Jump(pos, 0); } else { PlatformUp.EnterAuto(this).Jump(pos, PlatformUpJumpHeight); } } } { var ret = XyzPlarformCalibration.CalcAffineTransform(ProductPos.Select(p => new PosXYZ(p.X, p.Y, 0)).ToList(), PlatformUpPos.Select(p => new PosXYZ(p.X, p.Y, 0)).ToList()); Log($"计算产品坐标到上平台转换矩阵:\r\n" + $"{ret.Item1[0, 0]:F6},{ret.Item1[0, 1]:F6},{ret.Item1[0, 2]:F6},{ret.Item1[0, 3]:F6}\r\n" + $"{ret.Item1[1, 0]:F6},{ret.Item1[1, 1]:F6},{ret.Item1[1, 2]:F6},{ret.Item1[1, 3]:F6}\r\n" + $"{ret.Item1[2, 0]:F6},{ret.Item1[2, 1]:F6},{ret.Item1[2, 2]:F6},{ret.Item1[2, 3]:F6}\r\n" + $"{ret.Item1[3, 0]:F6},{ret.Item1[3, 1]:F6},{ret.Item1[3, 2]:F6},{ret.Item1[3, 3]:F6}\r\n", LogLevel.Info); Log($"计算误差:\r\n{ret.Item2:F2}\r\n", LogLevel.Info); OutputTransform = new TransformParams(ret.Item1); } }
public override void UninitCalib() { PlatformUp?.EnterAuto(this).Jump("Wait", PlatformUpJumpHeight); PlatformCarrier?.EnterAuto(this).MoveAbs("Wait"); PlatformUp?.ExitAuto(); PlatformCarrier?.ExitAuto(); }