laser_task_command.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. //laser_task_command,是雷达任务指令的相关功能
  2. //功能:用作应用层向laser模块传输任务,的指令消息
  3. //用法:应用层直接调用laser的接口函数,并将Laser_task类作为参数传递
  4. //CLaser类则按照Laser_task的功能码和指定的参数,执行相应的功能
  5. //并将结果填充到Laser_task,返回给应用层
  6. #ifndef __LASER_TASK_COMMAND__HH__
  7. #define __LASER_TASK_COMMAND__HH__
  8. #include "Point2D.h"
  9. #include "Point3D.h"
  10. #include <pcl/point_types.h>
  11. #include <pcl/common/common.h>
  12. #include "../error_code/error_code.h"
  13. #include <vector>
  14. #include <mutex>
  15. #include "../task/task_command_manager.h"
  16. //雷达模块的任务指令,从Task_Base继承,
  17. //补充了雷达专属的数据输入和输出
  18. class Laser_task:public Task_Base
  19. {
  20. public:
  21. //构造函数
  22. Laser_task();
  23. //析构函数
  24. ~Laser_task();
  25. //初始化任务单,必须初始化之后才可以使用,(必选参数)
  26. //input:task_type 任务类型
  27. // input:task_statu任务状态
  28. // output:p_task_point3d_cloud_vector三维点云容器指针
  29. //注:task_points_number默认为0,如果为0,则使用laser默认的点云的采集数量
  30. Error_manager task_init(Task_statu task_statu,
  31. pcl::PointCloud<pcl::PointXYZ>::Ptr p_task_point3d_cloud_vector,
  32. std::mutex* lock);
  33. //初始化任务单,必须初始化之后才可以使用,(可选参数)
  34. // input:task_type 任务类型
  35. // input:task_statu任务状态
  36. // input:task_statu_information状态说明
  37. // input:task_points_number点云的采集数量
  38. // output:p_task_point3d_cloud_vector三维点云容器指针
  39. // lock:
  40. //注:task_points_number默认为0,如果为0,则使用laser默认的点云的采集数量
  41. Error_manager task_init(Task_statu task_statu,
  42. std::string & task_statu_information,
  43. int task_points_number,
  44. pcl::PointCloud<pcl::PointXYZ>::Ptr p_task_point3d_cloud_vector,
  45. std::mutex* lock);
  46. //获取 点云的采集数量
  47. int get_task_points_number();
  48. //push点云
  49. Error_manager push_point(pcl::PointXYZ point);
  50. //获取 三维点云容器
  51. pcl::PointCloud<pcl::PointXYZ>::Ptr get_task_point3d_cloud_vector();
  52. //获取 错误码
  53. Error_manager get_task_error_manager();
  54. //设置 任务状态
  55. void set_task_statu(Task_statu task_statu);
  56. //设置 任务状态说明
  57. void set_task_statu_information(std::string & task_statu_information);
  58. //设置 点云的采集数量
  59. void set_task_points_number(int task_points_number);
  60. //设置 三维点云容器
  61. void set_task_point3d_cloud_vector(pcl::PointCloud<pcl::PointXYZ>::Ptr p_task_point3d_cloud_vector);
  62. //设置 错误码
  63. void set_task_error_manager(Error_manager & error_manager);
  64. //获取采集的点云保存路径
  65. std::string get_save_path();
  66. //设置采集的点云保存路径
  67. void set_save_path(std::string save_path);
  68. protected:
  69. //点云的采集数量,任务输入
  70. int m_task_points_number;
  71. std::string m_save_path;
  72. //采集结果,三维点云容器,任务输出
  73. //这里只是指针,实际内存由应用层管理,初始化时必须保证内存有效。
  74. pcl::PointCloud<pcl::PointXYZ>::Ptr pm_task_point3d_cloud_vector;
  75. //错误码,任务故障信息,任务输出
  76. Error_manager m_task_error_manager;
  77. //
  78. std::mutex* mp_cloud_lock;
  79. };
  80. #endif //__LASER_TASK_COMMAND__HH__