dispatch_coordinates.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. //
  2. // Created by huli on 2021/3/24.
  3. //
  4. #ifndef NNXX_TESTS_DISPATCH_COORDINATES_H
  5. #define NNXX_TESTS_DISPATCH_COORDINATES_H
  6. #include "../error_code/error_code.h"
  7. #include "../dispatch/dispatch_parameter.pb.h"
  8. #include "../tool/singleton.h"
  9. #include "../tool/point3D_tool.h"
  10. #include <glog/logging.h>
  11. #include <map>
  12. //调度的坐标系
  13. class Dispatch_coordinates:public Singleton<Dispatch_coordinates>
  14. {
  15. // 子类必须把父类设定为友元函数,这样父类才能使用子类的私有构造函数。
  16. friend class Singleton<Dispatch_coordinates>;
  17. public:
  18. #define DISPATCH_COORDINATES_PARAMETER_PATH "../setting/dispatch_coordinates.prototxt"
  19. //出入口的功能模式
  20. enum Passageway_functioning_pattern
  21. {
  22. PASSAGEWAY_FUNCTIONING_PATTERN_UNKNOWN = 0, //未知
  23. PASSAGEWAY_FUNCTIONING_PATTERN_INLET = 1, //单向入口
  24. PASSAGEWAY_FUNCTIONING_PATTERN_OUTLET = 2, //单向出口
  25. PASSAGEWAY_FUNCTIONING_PATTERN_BIDIRECTION = 3, //双向口
  26. };
  27. private:
  28. // 父类的构造函数必须保护,子类的构造函数必须私有。
  29. Dispatch_coordinates();
  30. public:
  31. //必须关闭拷贝构造和赋值构造,只能通过 get_instance 函数来进行操作唯一的实例。
  32. Dispatch_coordinates(const Dispatch_coordinates& other) = delete;
  33. Dispatch_coordinates& operator =(const Dispatch_coordinates& other) = delete;
  34. ~Dispatch_coordinates();
  35. public://API functions
  36. //初始化 调度的坐标系 模块。如下三选一
  37. virtual Error_manager dispatch_coordinates_init();
  38. //初始化 调度的坐标系 模块。从文件读取
  39. Error_manager dispatch_coordinates_init_from_protobuf(std::string prototxt_path);
  40. //初始化 调度的坐标系 模块。从protobuf读取
  41. Error_manager dispatch_coordinates_init_from_protobuf(Dispatch_proto::Dispatch_coordinates_parameter_all& dispatch_coordinates_parameter_all);
  42. public://get or set member variable
  43. protected://member functions
  44. public://member variable
  45. //楼上车位的坐标 1~165
  46. std::map<int, Point3D_tool::Point3D> m_packspace_coordinates;
  47. //一楼出入口的坐标 1100~1107
  48. std::map<int, Point3D_tool::Point3D> m_passageway_coordinates;
  49. //搬运器在2~4楼交界处 的坐标 1201~1206 1301~1306 1401~1406
  50. //搬运器在电梯井的坐标 2101~2112 2201~2212
  51. //机器手在一楼出入口的坐标 1100 和 1107
  52. std::map<int, Point3D_tool::Point3D> m_carrier_coordinates;
  53. //机器手在2~4楼交界处 的坐标 1201~1206 1301~1306 1401~1406
  54. //机器手在一楼出入口的坐标 1101~1106
  55. std::map<int, Point3D_tool::Point3D> m_catcher_coordinates;
  56. Point3D_tool::Point3D_box m_carrier_box;//搬运器 限定范围
  57. Point3D_tool::Point3D_box m_catcher_box;//机器手 限定范围
  58. float m_catcher_b_min;
  59. float m_catcher_b_max;
  60. float m_catcher_d1_min;
  61. float m_catcher_d1_max;
  62. float m_catcher_d2_min;
  63. float m_catcher_d2_max;
  64. float m_default_wheelbase; //默认轴距 2700mm
  65. float m_catcher_1th_floor_z; //机器手在1楼的z周高度, 1
  66. float m_catcher_2th_floor_z; //机器手在2楼的z周高度, 2620
  67. float m_catcher_3th_floor_z; //机器手在3楼的z周高度, 5220
  68. float m_catcher_4th_floor_z; //机器手在4楼的z周高度, 5410
  69. float m_carrier_1th_floor_z; //搬运器在1楼的z周高度, 1
  70. float m_carrier_2th_floor_z; //搬运器在2楼的z周高度, 2525
  71. float m_carrier_3th_floor_z; //搬运器在3楼的z周高度, 5125
  72. float m_carrier_4th_floor_z; //搬运器在4楼的z周高度, 7725
  73. float m_catcher_d1_d2_distance; //机器手2D1-2D2零位间距1903mm
  74. float m_catcher_wheel_base_limit; //机器手下降过程中的轮距限制 3000mm
  75. float m_carrier_y_y1_distance; //小跑车 y-y1的间距1500mm
  76. float m_carrier_default_y1_back; //小跑车的默认y1, 回到中跑车 4500mm
  77. float m_carrier_default_y1_leave; //小跑车的默认y1, 离开中跑车 10500mm
  78. float m_carrier_default_y_back; //小跑车的默认y, 回到中跑车 3000mm
  79. float m_carrier_default_y_leave; //小跑车的默认y, 离开中跑车 9000mm
  80. float m_carrier_default_x_left; //中跑车的默认x, 左侧电梯井 1mm
  81. float m_carrier_default_x_right; //中跑车的默认x, 左侧电梯井 32600mm
  82. int m_passageway_terminal_id_min; //通道口终端id最小值, 默认0
  83. int m_passageway_terminal_id_max; //通道口终端id最大值, 默认7
  84. int m_passageway_terminal_number; //通道口终端个数, 默认8
  85. std::map<int, Passageway_functioning_pattern> m_passageway_functioning_pattern_map;//出入口的功能模式
  86. int m_car_wheel_base_min; //汽车轮距最小值, 默认1000
  87. int m_car_wheel_base_max; //汽车轮距最大值, 默认4000
  88. private:
  89. };
  90. #endif //NNXX_TESTS_DISPATCH_COORDINATES_H