// // Created by zx on 2019/12/30. // #include "locate_manager_task.h" #include Locate_manager_task::Locate_manager_task() { //构造函数锁定任务类型为 LOCATE_MANGER_TASK,后续不允许更改 m_task_type = LOCATE_MANGER_TASK; m_task_statu = TASK_CREATED; m_task_statu_information.clear(); m_task_error_manager.error_manager_clear_all(); m_task_save_flag = false;//默认不保存,false m_task_save_path.clear(); mp_task_point_cloud_map = NULL; mp_task_cloud_lock = NULL; m_task_locate_information.locate_x = 0; //整车的中心点x值 m_task_locate_information.locate_y = 0; //整车的中心点y值 m_task_locate_information.locate_angle = 0; //整车的旋转角 m_task_locate_information.locate_length = 0; //整车的长度 m_task_locate_information.locate_width = 0; //整车的宽度, 也是左右轮的距离 m_task_locate_information.locate_height = 0; //整车的高度 m_task_locate_information.locate_wheel_base = 0; //整车的轮距, 前后轮的距离 m_task_locate_information.locate_wheel_width = 0; //整车的轮距, 左右轮的距离 m_task_locate_information.locate_correct = false; //整车的校准标记位 } Locate_manager_task::~Locate_manager_task() { } //初始化任务单,必须初始化之后才可以使用,(必选参数) // input:p_task_cloud_lock 三维点云的数据保护锁 // output:p_task_point_cloud 三维点云容器的智能指针 Error_manager Locate_manager_task::task_init(std::mutex* p_task_cloud_lock, std::map::Ptr>* p_task_point_cloud_map) { if(p_task_point_cloud_map == NULL) { return Error_manager(POINTER_IS_NULL, MINOR_ERROR, "Laser_task::task_init p_task_point_cloud is null"); } if(p_task_cloud_lock==NULL) { return Error_manager(POINTER_IS_NULL,MINOR_ERROR, "Laser_manager_task::task_init p_task_cloud_lock is null"); } m_task_statu = TASK_CREATED; m_task_statu_information.clear(); m_task_error_manager.error_manager_clear_all(); m_task_save_flag = false; m_task_save_path.clear(); mp_task_cloud_lock=p_task_cloud_lock; mp_task_point_cloud_map = p_task_point_cloud_map; m_task_locate_information.locate_x = 0; //整车的中心点x值 m_task_locate_information.locate_y = 0; //整车的中心点y值 m_task_locate_information.locate_angle = 0; //整车的旋转角 m_task_locate_information.locate_length = 0; //整车的长度 m_task_locate_information.locate_width = 0; //整车的宽度, 也是左右轮的距离 m_task_locate_information.locate_height = 0; //整车的高度 m_task_locate_information.locate_wheel_base = 0; //整车的轮距, 前后轮的距离 m_task_locate_information.locate_wheel_width = 0; //整车的轮距, 左右轮的距离 m_task_locate_information.locate_correct = false; //整车的校准标记位 return Error_code::SUCCESS; } //初始化任务单,必须初始化之后才可以使用,(可选参数) // input:task_statu 任务状态 // input:task_statu_information 状态说明 // input:tast_receiver 接受对象 // input:task_over_time 超时时间 // input:task_save_flag 是否保存 // input:task_save_path 保存路径 // input:p_task_cloud_lock 三维点云的数据保护锁 // output:p_task_pmutexoint_cloud 三维点云容器的智能指针 Error_manager Locate_manager_task::task_init(Task_statu task_statu, std::string task_statu_information, void* p_tast_receiver, std::chrono::milliseconds task_over_time, bool task_save_flag, std::string task_save_path, std::mutex* p_task_cloud_lock, std::map::Ptr>* p_task_point_cloud_map, bool cloud_aggregation_flag ) { if(p_task_point_cloud_map == NULL) { return Error_manager(POINTER_IS_NULL, MINOR_ERROR, "Laser_task::task_init p_task_point_cloud is null"); } if(p_task_cloud_lock==NULL) { return Error_manager(POINTER_IS_NULL,MINOR_ERROR, "Laser_manager_task::task_init p_task_cloud_lock is null"); } m_task_statu = task_statu; m_task_statu_information = task_statu_information; mp_tast_receiver = p_tast_receiver; m_task_over_time = task_over_time; m_task_error_manager.error_manager_clear_all(); m_task_save_flag = task_save_flag; m_task_save_path = task_save_path; mp_task_cloud_lock=p_task_cloud_lock; mp_task_point_cloud_map = p_task_point_cloud_map; m_cloud_aggregation_flag = cloud_aggregation_flag; m_task_locate_information.locate_x = 0; //整车的中心点x值 m_task_locate_information.locate_y = 0; //整车的中心点y值 m_task_locate_information.locate_angle = 0; //整车的旋转角 m_task_locate_information.locate_length = 0; //整车的长度 m_task_locate_information.locate_width = 0; //整车的宽度, 也是左右轮的距离 m_task_locate_information.locate_height = 0; //整车的高度 m_task_locate_information.locate_wheel_base = 0; //整车的轮距, 前后轮的距离 m_task_locate_information.locate_wheel_width = 0; //整车的轮距, 左右轮的距离 m_task_locate_information.locate_correct = false; //整车的校准标记位 return Error_code::SUCCESS; } //更新定位信息 Error_manager Locate_manager_task::task_update_locate_information(Locate_information locate_information) { set_task_locate_information(locate_information); return Error_code::SUCCESS; } //获取保存文件的使能标志位 bool Locate_manager_task::get_task_save_flag() { return m_task_save_flag; } //获取保存路径 std::string Locate_manager_task::get_task_save_path() { return m_task_save_path; } //获取 三维点云容器的锁 std::mutex* Locate_manager_task::get_task_cloud_lock() { return mp_task_cloud_lock; } //获取 三维点云容器的智能指针map std::map::Ptr>* Locate_manager_task::get_task_point_cloud_map() { return mp_task_point_cloud_map; } //获取 所有雷达的三维点云是否聚集的标志位 bool Locate_manager_task::get_cloud_aggregation_flag() { return m_cloud_aggregation_flag; } //获取测量结果 整车的定位信息 Locate_information Locate_manager_task::get_task_locate_information() { return m_task_locate_information; } //获取测量结果 整车的定位信息 Locate_information* Locate_manager_task::get_task_locate_information_ex() { return &m_task_locate_information; } //设置保存文件的使能标志位 void Locate_manager_task::set_task_save_flag(bool task_save_flag) { m_task_save_flag = task_save_flag; } //设置保存路径 void Locate_manager_task::set_task_save_path(std::string task_save_path) { m_task_save_path = task_save_path; } //设置 保存标志位和路径 void Locate_manager_task::set_task_save_flag_and_path(bool task_save_flag, std::string task_save_path) { m_task_save_flag = task_save_flag; m_task_save_path = task_save_path; } //设置 三维点云容器的锁 void Locate_manager_task::set_task_cloud_lock(std::mutex* mp_task_cloud_lock) { mp_task_cloud_lock = mp_task_cloud_lock; } //设置 三维点云容器的智能指针 void Locate_manager_task::set_task_point_cloud(std::map::Ptr>* p_task_point_cloud_map) { mp_task_point_cloud_map = p_task_point_cloud_map; } //设置 所有雷达的三维点云是否聚集的标志位 void Locate_manager_task::set_cloud_aggregation_flag(bool cloud_aggregation_flag) { m_cloud_aggregation_flag = cloud_aggregation_flag; } //设置测量结果 整车的定位信息 void Locate_manager_task::set_task_locate_information(Locate_information task_locate_information) { m_task_locate_information = task_locate_information; }