laser_task_command.puml 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. @startuml
  2. skinparam classAttributeIconSize 0
  3. <<<<<<< HEAD
  4. title Laser_task 雷达模块的任务指令
  5. =======
  6. title binary_buf是二进制缓存
  7. >>>>>>> origin/hl
  8. note left of Laser_task
  9. //laser_task_command,是雷达任务指令的相关功能
  10. //功能:用作应用层向laser模块传输任务,的指令消息
  11. //用法:应用层直接调用laser的接口函数,并将Laser_task类作为参数传递
  12. //CLaser类则按照Laser_task的功能码和指定的参数,执行相应的功能
  13. //并将结果填充到Laser_task,返回给应用层
  14. end note
  15. class Laser_task
  16. {
  17. //雷达模块的任务指令,从Task_Base继承,
  18. //补充了雷达专属的数据输入和输出
  19. ==public:==
  20. //构造函数,构造函数锁定任务类型为LASER_TASK,后续不允许更改
  21. Laser_task();
  22. //析构函数
  23. ~Laser_task();
  24. ..
  25. //初始化任务单,必须初始化之后才可以使用,(必选参数)
  26. // input:task_statu 任务状态
  27. // output:p_task_point_cloud 三维点云容器的智能指针
  28. // input:p_task_cloud_lock 三维点云的数据保护锁
  29. //注:task_frame_maxnum默认为0,如果为0,则使用laser默认的点云的采集帧数最大值 TASK_FRAME_MAXNUM_DEFAULT
  30. Error_manager task_init(Task_statu task_statu,
  31. pcl::PointCloud<pcl::PointXYZ>::Ptr p_task_point_cloud,
  32. std::mutex* p_task_cloud_lock);
  33. ..
  34. //初始化任务单,必须初始化之后才可以使用,(可选参数)
  35. // input:task_statu任务状态
  36. // input:task_statu_information状态说明
  37. // input:task_frame_maxnum点云的采集帧数最大值
  38. // output:p_task_point_cloud 三维点云容器的智能指针
  39. // input:p_task_cloud_lock 三维点云的数据保护锁
  40. //注:task_frame_maxnum默认为0,如果为0,则使用laser默认的点云的采集帧数最大值 TASK_FRAME_MAXNUM_DEFAULT
  41. Error_manager task_init(Task_statu task_statu,
  42. std::string & task_statu_information,
  43. unsigned int task_frame_maxnum,
  44. pcl::PointCloud<pcl::PointXYZ>::Ptr p_task_point_cloud,
  45. std::mutex* p_task_cloud_lock);
  46. ..
  47. //push点云,把 point_xyz 添加到 p_task_point_cloud 里面。
  48. Error_manager task_push_point(pcl::PointXYZ point_xyz);
  49. ==public:==
  50. //获取 点云的采集帧数最大值
  51. unsigned int get_task_frame_maxnum();
  52. //获取采集的点云保存路径
  53. std::string get_task_save_path();
  54. //获取 三维点云容器的智能指针
  55. pcl::PointCloud<pcl::PointXYZ>::Ptr get_task_point_cloud();
  56. ..
  57. //设置 任务状态
  58. void set_task_statu(Task_statu task_statu);
  59. //设置 任务状态说明
  60. void set_task_statu_information(std::string & task_statu_information);
  61. //设置 点云的采集帧数最大值
  62. void set_task_frame_maxnum(unsigned int task_frame_maxnum);
  63. //设置采集的点云保存路径
  64. void set_task_save_path(std::string task_save_path);
  65. //设置 三维点云容器的智能指针
  66. void set_task_point_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr p_task_point_cloud);
  67. //设置 错误码
  68. void set_task_error_manager(Error_manager & error_manager);
  69. ==protected:==
  70. //点云的采集帧数最大值,任务输入
  71. unsigned int m_task_frame_maxnum;
  72. //点云保存文件的路径,任务输入
  73. std::string m_task_save_path;
  74. //三维点云的数据保护锁,任务输入
  75. std::mutex* mp_task_cloud_lock;
  76. //采集结果,三维点云容器的智能指针,任务输出
  77. //这里只是指针,实际内存由应用层管理,初始化时必须保证内存有效。
  78. pcl::PointCloud<pcl::PointXYZ>::Ptr mp_task_point_cloud;
  79. }
  80. class Task_Base
  81. {
  82. //任务单基类
  83. ==public:==
  84. //初始化任务单,初始任务单类型为 UNKONW_TASK
  85. virtual Error_manager init();
  86. ..
  87. //更新任务单
  88. Error_manager update_statu(Task_statu task_statu,std::string statu_information="");
  89. ..
  90. //获取任务类型
  91. Task_type get_task_type();
  92. ..
  93. //获取任务单状态
  94. Task_statu get_statu();
  95. ..
  96. //获取状态说明
  97. std::string get_statu_information();
  98. ==protected:==
  99. Task_type m_task_type; //任务类型
  100. Task_statu m_task_statu; //任务状态
  101. std::string m_task_statu_information; //任务状态说明
  102. Error_manager m_task_error_manager;//错误码,任务故障信息,任务输出
  103. }
  104. Laser_task <-- Task_Base : inherit
  105. @enduml