Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        public override void UninitCalib()
        {
            PlatformUp?.EnterAuto(this).Jump("Wait", PlatformUpJumpHeight);
            PlatformCarrier?.EnterAuto(this).MoveAbs("Wait");

            PlatformUp?.ExitAuto();
            PlatformCarrier?.ExitAuto();
        }