コード例 #1
0
ファイル: AutoCalibTool.cs プロジェクト: qutus18/RTCVision
        /// <summary>
        /// Load Tool AutoCalib theo CameraIndex
        /// </summary>
        /// <param name="CameraIndex"></param>
        public void Load(int CameraIndex)
        {
            string[] writeStrings = new string[10];
            string   urlTool      = Helper.CreatDirectionAutoCalib(CameraIndex);

            //
            if (File.Exists(urlTool + "\\info.txt"))
            {
                string[] readString = File.ReadAllLines(urlTool + "\\info.txt");
                foreach (string item in readString)
                {
                    if (item.IndexOf("CalNpointOK,") >= 0)
                    {
                        CalNpointOK = bool.Parse(item.Split(',')[1]);
                    }
                    if (item.IndexOf("CalTTMatrixOK,") >= 0)
                    {
                        CalTTMatrixOK = bool.Parse(item.Split(',')[1]);
                    }
                }
            }
            else
            {
                CalNpointOK   = false;
                CalTTMatrixOK = false;
            }
            //
            if (CalNpointOK && CalTTMatrixOK)
            {
                Matrix4x4[] tempArrMatrix = Helper.LoadAutoCalibMatrix(urlTool);
                if (tempArrMatrix != null)
                {
                    TransMatrixPBASE = tempArrMatrix[0];
                    TransformTT      = tempArrMatrix[1];
                    TransMatrixPOROV = tempArrMatrix[2];
                }
            }
            //
            if (File.Exists(urlTool + "\\CalibNPointToolRBCam.vpp"))
            {
                CalibNPointToolRBCam = (CogCalibNPointToNPoint)Cognex.VisionPro.CogSerializer.LoadObjectFromFile(urlTool + "\\CalibNPointToolRBCam.vpp", typeof(System.Runtime.Serialization.Formatters.Binary.BinaryFormatter), CogSerializationOptionsConstants.All);
            }
            PointTransformToolFromNPointCalib = CalibNPointToolRBCam.GetComputedUncalibratedFromCalibratedTransform();
        }
コード例 #2
0
ファイル: AutoCalibTool.cs プロジェクト: qutus18/RTCVision
        /// <summary>
        /// Tính toán AutoCalib
        /// </summary>
        /// <returns></returns>
        public bool Calculate()
        {
            // Tính toán ma trận chuyển hệ Robot sang hệ Camera POROV TransformMatrixPOROV
            var tempArrMatrix = TransformMatrixCal.CalPBaseAndPOROC(ListAutoCalibPointsRB[9], ListAutoCalibPointsRB[10], ListAutoCalibPointsCam[9], ListAutoCalibPointsCam[10]);

            TransMatrixPOROV = tempArrMatrix[1];
            TransMatrixPBASE = tempArrMatrix[0];
            if (TransMatrixPOROV == null)
            {
                return(false);
            }

            // Chuyển đổi sang ma trận Robot trên hệ tọa độ Camera
            List <PointWithTheta> ListAutoCalibPointsRB_OCam = Helper.CalTransRobotToOCam(ListAutoCalibPointsRB, TransMatrixPOROV, TransMatrixPBASE);

            // Thêm điểm vào Tool Calib N Point, tính toán trả về Tool chuyển đổi điểm qua N Point
            if (NumberPoints >= 11)
            {
                for (int i = 0; i < 9; i++)
                {
                    CalibNPointToolRBCam.AddPointPair(ListAutoCalibPointsRB_OCam[i].X, ListAutoCalibPointsRB_OCam[i].Y, ListAutoCalibPointsCam[i].X, ListAutoCalibPointsCam[i].Y);
                }
                CalibNPointToolRBCam.Calibrate();
                if (!CalibNPointToolRBCam.Calibrated)
                {
                    MessageBox.Show("N Point Calib Fail!");
                    return(false);
                }
                else
                {
                    PointTransformToolFromNPointCalib = CalibNPointToolRBCam.GetComputedUncalibratedFromCalibratedTransform();
                    CalNpointOK = true;
                }
            }
            return(true);
        }