123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- //
- // Created by zx on 2019/12/30.
- //
- #include "locate_manager_task.h"
- #include <glog/logging.h>
- 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<int,pcl::PointCloud<pcl::PointXYZ>::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<int,pcl::PointCloud<pcl::PointXYZ>::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<int,pcl::PointCloud<pcl::PointXYZ>::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<int,pcl::PointCloud<pcl::PointXYZ>::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;
- }
|