123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- #pragma once
- #include "CCalib.h"
- #include "ILocalizationManager.h"
- #include "ICalibration.h"
- /*
- CTD:Camera Tip Distance
- 1、放置玻璃片在上视相机上方
- 2、保证已完成旋转中心标定。已经调用过SetHeadActualPos
- 3、调用StartCalib开始标定
- */
- class __declspec(dllexport) CCTDCalib :
- public CCalib
- {
- enum CTDCalibType { useRotationCenter, NoUseRotationCenter };
- public:
- /**
- * @brief 构造函数,创建CCTDCalib对象
- *
- * @param id 标定的唯一标识符,用于区分不同的标定任务
- * @param name 标定的名称,方便识别和管理标定任务
- */
- CCTDCalib(int id, std::string name);
- /**
- * @brief 析构函数,销毁CCTDCalib对象
- */
- ~CCTDCalib() {}
- /**
- * @brief 设置上视相机对象
- *
- * @param camera 指向CCameraBase类型的相机对象指针,用于后续的拍照操作
- */
- void SetLookUpCamera(CCameraBase* camera) { m_pLookUpCamera = camera; }
- //旋转中心变化,重新更新相机到吸嘴间的距离
- void UpdateCameraToHead(XY_DOUBLE_STRUCT rotCenter, XY_DOUBLE_STRUCT& cameraToHead);
- //没有旋转中心标定,直接用上视相机拍照吸嘴位置
- LONG HeadActualPosCalib(int nozzleTemp);
- //计算相机到吸嘴距离
- void CalCameraToHead();
- /**
- * @brief 开始标定操作
- *
- * 该函数会执行一系列的操作,包括相机拍照、视觉定位、轴移动等,
- * 最终计算出头部到相机的相对位置,并将结果保存到标定参数中。
- *
- * @return int 标定操作的结果,成功返回OK,失败返回相应的错误码
- */
- int CameraPosCalib();
- /**
- * @brief 设置标定参数
- *
- * 将当前的标定参数保存到数据库中,以便后续使用。
- */
- virtual void SetParam() override;
- /**
- * @brief 获取标定参数
- *
- * 从数据库中读取之前保存的标定参数,更新到当前对象的标定参数结构体中。
- */
- virtual LONG GetParam() override;
- /**
- * @brief 获取头部到相机的位置
- *
- * 根据传入的头部位置和之前标定得到的头部到相机的相对位置,
- * 计算并返回头部到相机的位置。
- *
- * @param headPos 头部的位置
- * @return XY_DOUBLE_STRUCT 头部到相机的位置
- */
- XY_DOUBLE_STRUCT GetHeadToCameraPos(XY_DOUBLE_STRUCT headPos);
- /**
- * @brief 获取相机到头部的位置
- *
- * 根据传入的相机位置和之前标定得到的头部到相机的相对位置,
- * 计算并返回相机到头部的位置。
- *
- * @param cameraPos 相机的位置
- * @return XY_DOUBLE_STRUCT 相机到头部的位置
- */
- XY_DOUBLE_STRUCT GetCameraToHeadPos(XY_DOUBLE_STRUCT cameraPos);
- //保存当前标定所使用的数据
- void SetLookUpTempID(int lookUpTemp) {
- m_stParam.m_nLookUpTempID = lookUpTemp;
- SetParam();
- }
- void SetHeadTempID(int tempID) {
- m_stParam.m_nBondTempID = tempID;
- SetParam();
- }
- void SetNozzleTempID(int temp) {
- m_stParam.m_nTipTempID = temp;
- SetParam();
- }
- void SetXYCalib(CXYCalib* HeadXYcalib,CXYCalib* lookupXYCalib) {
- m_pHeadCameraXYCalib = HeadXYcalib;
- m_pLookUpXYCalib = lookupXYCalib;
- }
- LONG MoveToCameraCalibPos();
- LONG MoveToHeadCalibPos();
- private:
- // 标定的查找参数结构体,用于存储标定过程中的各种参数和结果
- CALIB_LOOKUP m_stParam;
- // 上视相机对象指针,用于进行拍照操作
- CCameraBase* m_pLookUpCamera = nullptr;
- CXYCalib* m_pHeadCameraXYCalib = nullptr;
- CXYCalib* m_pLookUpXYCalib = nullptr;
- };
|