wanji_lidar_scan_task.cpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. //
  2. // Created by huli on 2020/9/8.
  3. //
  4. #include "wanji_lidar_scan_task.h"
  5. //构造函数,构造函数锁定任务类型为LASER_TASK,后续不允许更改
  6. Wanji_lidar_scan_task::Wanji_lidar_scan_task()
  7. {
  8. //构造函数锁定任务类型为 WANJI_LIDAR_SCAN,后续不允许更改
  9. m_task_type = WANJI_LIDAR_SCAN;
  10. m_task_statu = TASK_CREATED;
  11. m_task_statu_information.clear();
  12. m_task_error_manager.error_manager_clear_all();
  13. mp_task_point_cloud = NULL;
  14. mp_task_cloud_lock = NULL;
  15. }
  16. //析构函数
  17. Wanji_lidar_scan_task::~Wanji_lidar_scan_task()
  18. {
  19. }
  20. //初始化任务单,必须初始化之后才可以使用,(必选参数)
  21. // input:p_task_cloud_lock 三维点云的数据保护锁
  22. // output:p_task_point_cloud 三维点云容器的智能指针
  23. //注:task_frame_maxnum默认为0,如果为0,则使用laser默认的点云的采集帧数最大值 TASK_FRAME_MAXNUM_DEFAULT
  24. Error_manager Wanji_lidar_scan_task::task_init(std::chrono::system_clock::time_point command_time,
  25. std::mutex* p_task_cloud_lock,
  26. pcl::PointCloud<pcl::PointXYZ>::Ptr p_task_point_cloud)
  27. {
  28. if(p_task_point_cloud.get() == NULL)
  29. {
  30. return Error_manager(POINTER_IS_NULL, MINOR_ERROR,
  31. "Wanji_lidar_scan_task::task_init p_task_point_cloud is null");
  32. }
  33. if(p_task_cloud_lock==NULL)
  34. {
  35. return Error_manager(POINTER_IS_NULL,MINOR_ERROR,
  36. "Laser_manager_task::task_init p_task_cloud_lock is null");
  37. }
  38. m_task_statu = TASK_CREATED;
  39. m_task_statu_information.clear();
  40. m_task_error_manager.error_manager_clear_all();
  41. m_command_time = command_time;
  42. mp_task_cloud_lock=p_task_cloud_lock;
  43. mp_task_point_cloud = p_task_point_cloud;
  44. return Error_code::SUCCESS;
  45. }
  46. //初始化任务单,必须初始化之后才可以使用,(可选参数)
  47. // input:task_statu 任务状态
  48. // input:task_statu_information 状态说明
  49. // input:tast_receiver 接受对象
  50. // input:task_over_time 超时时间
  51. // input:task_frame_maxnum 点云的采集帧数最大值
  52. // input:task_save_flag 是否保存
  53. // input:task_save_path 保存路径
  54. // input:p_task_cloud_lock 三维点云的数据保护锁
  55. // output:p_task_point_cloud 三维点云容器的智能指针
  56. //注:task_frame_maxnum默认为0,如果为0,则使用laser默认的点云的采集帧数最大值 TASK_FRAME_MAXNUM_DEFAULT
  57. Error_manager Wanji_lidar_scan_task::task_init(Task_statu task_statu,
  58. std::string task_statu_information,
  59. void* p_tast_receiver,
  60. std::chrono::milliseconds task_over_time,
  61. std::chrono::system_clock::time_point command_time,
  62. std::mutex* p_task_cloud_lock,
  63. pcl::PointCloud<pcl::PointXYZ>::Ptr p_task_point_cloud
  64. )
  65. {
  66. if(p_task_point_cloud.get() == NULL)
  67. {
  68. return Error_manager(POINTER_IS_NULL, MINOR_ERROR,
  69. "Wanji_lidar_scan_task::task_init p_task_point_cloud is null");
  70. }
  71. if(p_task_cloud_lock==NULL)
  72. {
  73. return Error_manager(POINTER_IS_NULL,MINOR_ERROR,
  74. "Laser_manager_task::task_init p_task_cloud_lock is null");
  75. }
  76. m_task_statu = task_statu;
  77. m_task_statu_information = task_statu_information;
  78. mp_tast_receiver = p_tast_receiver;
  79. m_task_over_time = task_over_time;
  80. m_task_error_manager.error_manager_clear_all();
  81. m_command_time = command_time;
  82. mp_task_cloud_lock=p_task_cloud_lock;
  83. mp_task_point_cloud = p_task_point_cloud;
  84. return Error_code::SUCCESS;
  85. }
  86. std::chrono::system_clock::time_point Wanji_lidar_scan_task::get_command_time()
  87. {
  88. return m_command_time;
  89. }
  90. //获取 三维点云容器的智能指针
  91. std::mutex* Wanji_lidar_scan_task::get_task_cloud_lock()
  92. {
  93. return mp_task_cloud_lock;
  94. }
  95. //获取 三维点云容器的智能指针
  96. pcl::PointCloud<pcl::PointXYZ>::Ptr Wanji_lidar_scan_task::get_task_point_cloud()
  97. {
  98. return mp_task_point_cloud;
  99. }