/// <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(); }
/// <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); }