// // Created by zx on 23-11-28. // #ifndef CERES_TEST_TransitData_H #define CERES_TEST_TransitData_H #include #include #include #include "tool/timedlockdata.hpp" #include "thread/singleton.h" #include #define NUM_ 4 class TransitData : public Singleton { friend Singleton; public: struct MeasureInfo { float x; float y; float transx; float transy; float theta; float width; float wheelbase; float ftheta; int border_plc; int border_display; std::string error; MeasureInfo &operator=(const MeasureInfo &info) { x = info.x; y = info.y; theta = info.theta; transx = info.transx; transy = info.transy; width = info.width; wheelbase = info.wheelbase; ftheta = info.ftheta; border_plc = info.border_plc; border_display = info.border_display; error = info.error; return *this; } }; public: void setImage(cv::Mat image, int id); void setImageCL(cv::Mat &image, int id); void setMask(std::vector mask, int id); void setMeasureInfo(MeasureInfo info); bool getImage(cv::Mat &image, int id, float timeout); bool getImageCL(cv::Mat &image, int id, float timeout); bool getMask(std::vector &mask, int id, float timeout); bool getMeasureInfo(MeasureInfo &info, float timeout); private: TransitData(); std::mutex mutex_; TimedLockData image_[NUM_]; TimedLockData imageCL_[NUM_]; TimedLockData> mask_[NUM_]; TimedLockData measureInfo_; }; #endif //CERES_TEST_TransitData_H