wj_lidar_task.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #ifndef WJ_LIDAR_TASK_HH
  2. #define WJ_LIDAR_TASK_HH
  3. #include <string.h>
  4. #include <mutex>
  5. #include <atomic>
  6. #include <chrono>
  7. #include "../task/task_command_manager.h"
  8. #include "../error_code/error_code.h"
  9. // 万集测量结果结构体
  10. typedef struct WJ_LIDAR_MEASURE_RESULT
  11. {
  12. int terminal_id;
  13. float x;
  14. float y;
  15. float angle;
  16. float length;
  17. float width;
  18. float height;
  19. float wheel_base;
  20. bool correctness;
  21. } wj_measure_result;
  22. typedef struct WJ_LIDAR_COMMAND_INFO
  23. {
  24. int terminal_id;
  25. std::chrono::steady_clock::time_point command_time;
  26. int timeout_in_milliseconds;
  27. } wj_command;
  28. /**
  29. * 万集测量任务单
  30. * */
  31. class Wj_lidar_Task : public Task_Base
  32. {
  33. public:
  34. // 父类继承,初始化函数
  35. virtual Error_manager init();
  36. // 构造函数
  37. Wj_lidar_Task();
  38. // 析构
  39. ~Wj_lidar_Task();
  40. // 获取命令
  41. Error_manager get_command(wj_command &command);
  42. // 设置测量命令
  43. Error_manager set_command(wj_command command);
  44. // 将测量结果存入该任务单
  45. Error_manager set_result(wj_measure_result result);
  46. // 将测量结果传出
  47. Error_manager get_result(wj_measure_result &result);
  48. // 获取测量结果是否已存入该任务单的指标
  49. bool get_result_flag();
  50. private:
  51. // 测量指令信息
  52. wj_command m_command;
  53. // 测量结果
  54. wj_measure_result m_wj_measure_result;
  55. // 访问测量结果互斥锁
  56. std::mutex m_mutex;
  57. // 标记结果是否已被设置
  58. std::atomic<bool> mb_result_flag;
  59. };
  60. #endif // !WJ_LIDAR_TASK_HH