// // Created by huli on 2020/9/8. // #include "wanji_lidar_scan_task.h" //构造函数,构造函数锁定任务类型为LASER_TASK,后续不允许更改 Wanji_lidar_scan_task::Wanji_lidar_scan_task() { //构造函数锁定任务类型为 WANJI_LIDAR_SCAN,后续不允许更改 m_task_type = WANJI_LIDAR_SCAN; m_task_statu = TASK_CREATED; m_task_statu_information.clear(); m_task_error_manager.error_manager_clear_all(); mp_task_point_cloud = NULL; mp_task_cloud_lock = NULL; } //析构函数 Wanji_lidar_scan_task::~Wanji_lidar_scan_task() { } //初始化任务单,必须初始化之后才可以使用,(必选参数) // input:p_task_cloud_lock 三维点云的数据保护锁 // output:p_task_point_cloud 三维点云容器的智能指针 //注:task_frame_maxnum默认为0,如果为0,则使用laser默认的点云的采集帧数最大值 TASK_FRAME_MAXNUM_DEFAULT Error_manager Wanji_lidar_scan_task::task_init(std::chrono::system_clock::time_point command_time, std::mutex* p_task_cloud_lock, pcl::PointCloud::Ptr p_task_point_cloud) { if(p_task_point_cloud.get() == NULL) { return Error_manager(POINTER_IS_NULL, MINOR_ERROR, "Wanji_lidar_scan_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_command_time = command_time; mp_task_cloud_lock=p_task_cloud_lock; mp_task_point_cloud = p_task_point_cloud; return Error_code::SUCCESS; } //初始化任务单,必须初始化之后才可以使用,(可选参数) // input:task_statu 任务状态 // input:task_statu_information 状态说明 // input:tast_receiver 接受对象 // input:task_over_time 超时时间 // input:task_frame_maxnum 点云的采集帧数最大值 // input:task_save_flag 是否保存 // input:task_save_path 保存路径 // input:p_task_cloud_lock 三维点云的数据保护锁 // output:p_task_point_cloud 三维点云容器的智能指针 //注:task_frame_maxnum默认为0,如果为0,则使用laser默认的点云的采集帧数最大值 TASK_FRAME_MAXNUM_DEFAULT Error_manager Wanji_lidar_scan_task::task_init(Task_statu task_statu, std::string task_statu_information, void* p_tast_receiver, std::chrono::milliseconds task_over_time, std::chrono::system_clock::time_point command_time, std::mutex* p_task_cloud_lock, pcl::PointCloud::Ptr p_task_point_cloud ) { if(p_task_point_cloud.get() == NULL) { return Error_manager(POINTER_IS_NULL, MINOR_ERROR, "Wanji_lidar_scan_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_command_time = command_time; mp_task_cloud_lock=p_task_cloud_lock; mp_task_point_cloud = p_task_point_cloud; return Error_code::SUCCESS; } std::chrono::system_clock::time_point Wanji_lidar_scan_task::get_command_time() { return m_command_time; } //获取 三维点云容器的智能指针 std::mutex* Wanji_lidar_scan_task::get_task_cloud_lock() { return mp_task_cloud_lock; } //获取 三维点云容器的智能指针 pcl::PointCloud::Ptr Wanji_lidar_scan_task::get_task_point_cloud() { return mp_task_point_cloud; }