123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- //
- // 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<pcl::PointXYZ>::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<pcl::PointXYZ>::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<pcl::PointXYZ>::Ptr Wanji_lidar_scan_task::get_task_point_cloud()
- {
- return mp_task_point_cloud;
- }
|