wanji_lidar_scan_task.h 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //
  2. // Created by huli on 2020/9/8.
  3. //
  4. #ifndef NNXX_TESTS_WANJI_LIDAR_TASK_H
  5. #define NNXX_TESTS_WANJI_LIDAR_TASK_H
  6. #include "Point2D.h"
  7. #include "Point3D.h"
  8. #include <pcl/point_types.h>
  9. #include <pcl/common/common.h>
  10. #include "../error_code/error_code.h"
  11. #include <vector>
  12. #include <mutex>
  13. #include "../task/task_command_manager.h"
  14. //万集雷达模块的任务指令,从Task_Base继承,
  15. class Wanji_lidar_scan_task:public Task_Base
  16. {
  17. public:
  18. Wanji_lidar_scan_task();
  19. Wanji_lidar_scan_task(const Wanji_lidar_scan_task& other)= default;
  20. Wanji_lidar_scan_task& operator =(const Wanji_lidar_scan_task& other)= default;
  21. ~Wanji_lidar_scan_task();
  22. public://API functions
  23. //初始化任务单,必须初始化之后才可以使用,(必选参数)
  24. // input:p_task_cloud_lock 三维点云的数据保护锁
  25. // output:p_task_point_cloud 三维点云容器的智能指针
  26. //注:task_frame_maxnum默认为0,如果为0,则使用laser默认的点云的采集帧数最大值 TASK_FRAME_MAXNUM_DEFAULT
  27. Error_manager task_init(std::chrono::system_clock::time_point command_time,
  28. std::mutex* p_task_cloud_lock,
  29. pcl::PointCloud<pcl::PointXYZ>::Ptr p_task_point_cloud);
  30. //初始化任务单,必须初始化之后才可以使用,(可选参数)
  31. // input:task_statu 任务状态
  32. // input:task_statu_information 状态说明
  33. // input:tast_receiver 接受对象
  34. // input:task_over_time 超时时间
  35. // input:p_task_cloud_lock 三维点云的数据保护锁
  36. // output:p_task_pmutexoint_cloud 三维点云容器的智能指针
  37. //注:task_frame_maxnum默认为0,如果为0,则使用laser默认的点云的采集帧数最大值 TASK_FRAME_MAXNUM_DEFAULT
  38. Error_manager task_init(Task_statu task_statu,
  39. std::string task_statu_information,
  40. void* p_tast_receiver,
  41. std::chrono::milliseconds task_over_time,
  42. std::chrono::system_clock::time_point command_time,
  43. std::mutex* p_task_cloud_lock,
  44. pcl::PointCloud<pcl::PointXYZ>::Ptr p_task_point_cloud
  45. );
  46. public://get or set member variable
  47. std::chrono::system_clock::time_point get_command_time();
  48. //获取 三维点云容器的智能指针;
  49. std::mutex* get_task_cloud_lock();
  50. //获取 三维点云容器的智能指针
  51. pcl::PointCloud<pcl::PointXYZ>::Ptr get_task_point_cloud();
  52. protected://member variable
  53. //下发指令的时间点. 从command_time提前一个扫描周期, 然后取最新的点
  54. std::chrono::system_clock::time_point m_command_time;
  55. //三维点云的数据保护锁,任务输入, (实际上多个雷达会同时往一个pcl点云容器里面填充数据,防止数据冲突,需要对容器加锁.)
  56. std::mutex* mp_task_cloud_lock;
  57. //采集结果,三维点云容器的智能指针,任务输出
  58. //这里只是智能指针,实际内存由任务发送方管理管理,初始化时必须保证内存有效。
  59. pcl::PointCloud<pcl::PointXYZ>::Ptr mp_task_point_cloud;
  60. private:
  61. };
  62. #endif //NNXX_TESTS_WANJI_LIDAR_TASK_H