custom_type.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. //
  2. // Created by gf on 23-7-21.
  3. // 自定义类型
  4. //
  5. #ifndef NAVIGATION_CUSTOM_TYPE_H
  6. #define NAVIGATION_CUSTOM_TYPE_H
  7. #include <map>
  8. //////////////////////////////////////////////////
  9. /// 封装的enum模板类,解决原生enum无法参与位运算问题
  10. template<typename Enum>
  11. class MyEnum {
  12. using Self = MyEnum<Enum>;
  13. using EnumType = Enum;
  14. public:
  15. MyEnum(const MyEnum &other)
  16. : i(other.i) {
  17. }
  18. MyEnum(const Enum &e)
  19. : i((int) e) {
  20. }
  21. MyEnum(const int ival)
  22. : i(ival) {
  23. }
  24. operator int() const {
  25. return i;
  26. }
  27. MyEnum operator|(const MyEnum &another) {
  28. MyEnum g;
  29. g.i = another.i | Self::i;
  30. return g;
  31. }
  32. MyEnum operator|(const EnumType f) {
  33. return *this | MyEnum(f);
  34. }
  35. MyEnum operator&(const MyEnum &another) {
  36. MyEnum g;
  37. g.i = another.i & Self::i;
  38. return g;
  39. }
  40. MyEnum operator&(const EnumType f) {
  41. return *this & MyEnum(f);
  42. }
  43. private:
  44. int i;
  45. };
  46. //////////////////////////////////////////////////
  47. //////////////////////////////////////////////////
  48. /// MPC返回值
  49. enum MpcError {
  50. success = 0,
  51. no_solution = 1,
  52. failed
  53. };
  54. //////////////////////////////////////////////////
  55. //////////////////////////////////////////////////
  56. /// 基准可选方向
  57. enum Direction {
  58. eForward = 0x0001,
  59. eBackward = 0x0002,
  60. eLeft = 0x0004,
  61. eRight = 0x0008
  62. };
  63. //////////////////////////////////////////////////
  64. //////////////////////////////////////////////////
  65. /// AGV运动模式(最低1位:0单车,1整车。低2位:0同向,1反向。低3位:0主车在前,1主车在后)
  66. enum ActionMode{
  67. eSingle = 0x0000,
  68. eDouble = 0x0001,
  69. eMainInForward = 0x0000,
  70. eMainInBackward = 0x0008,
  71. eChildSameToMain = 0x0000,
  72. eChildOppositeToMain = 0x0002
  73. };
  74. //using ActionModes = MyEnum<ActionMode>;
  75. //////////////////////////////////////////////////
  76. //////////////////////////////////////////////////
  77. /// AGV指令类型
  78. enum ActionType {
  79. eReady = 0,
  80. eStop = 0,
  81. eRotation = 1,
  82. eHorizontal = 2,
  83. eVertical = 3,
  84. eClampClose = 5,
  85. eClampHalfOpen = 6,
  86. eLifterRise = 7, //提升机构上升
  87. eLifterDown =8,
  88. eClampFullyOpen = 9
  89. };
  90. //////////////////////////////////////////////////
  91. //////////////////////////////////////////////////
  92. /// 提升机构运动状态
  93. enum LifterStatus {
  94. eInvalid = 0,
  95. eRose = 1,//上升到位
  96. eDowned = 2//下降到位
  97. };
  98. //////////////////////////////////////////////////
  99. //////////////////////////////////////////////////
  100. /// 并行夹持和提升机构运作
  101. enum eClamLiftActionType{
  102. eByteCLampClose = 1,
  103. eByteClampHalfOpen=2,
  104. eByteClampFullyOpen=4,
  105. eByteLifterDown=8,
  106. eByteLifterUp=16
  107. };
  108. //////////////////////////////////////////////////
  109. //////////////////////////////////////////////////
  110. /// plc区域+编号载车板 对应 车位表
  111. enum eRegionId{
  112. eRegion0 = 0,
  113. eRegion1 = 1,
  114. eRegion2,
  115. eRegion3,
  116. eRegion4,
  117. eRegion5,
  118. eRegion6,
  119. eRegion7,
  120. eRegion8,
  121. eRegion9,
  122. eRegion10,
  123. eRegion11
  124. };
  125. enum eCarrierIdInRegionId{
  126. eCarrier0 = 0,
  127. eCarrier1 = 1,
  128. eCarrier2,
  129. eCarrier3,
  130. eCarrier4,
  131. eCarrier5,
  132. eCarrier6,
  133. eCarrier7,
  134. eCarrier8,
  135. eCarrier9,
  136. eCarrier10,
  137. eCarrier11
  138. };
  139. //
  140. typedef std::pair<unsigned short,unsigned short > Region_Carry;
  141. typedef std::map<unsigned short ,Region_Carry> SpaceNo2Region_Carry;
  142. //class SpacesNo2Region_Carry{
  143. //public:
  144. // SpaceNo2Region_Carry spacesNo2Region_Carry;
  145. //public:
  146. // SpacesNo2Region_Carry(){
  147. // spacesNo2Region_Carry[0] = Region_Carry(eRegion0,eCarrier0);
  148. // spacesNo2Region_Carry[1] = Region_Carry(eRegion0,eCarrier0);
  149. // spacesNo2Region_Carry[2] = Region_Carry(eRegion0,eCarrier0);
  150. // spacesNo2Region_Carry[3] = Region_Carry(eRegion0,eCarrier0);
  151. // spacesNo2Region_Carry[4] = Region_Carry(eRegion0,eCarrier0);
  152. // spacesNo2Region_Carry[5] = Region_Carry(eRegion0,eCarrier0);
  153. // spacesNo2Region_Carry[6] = Region_Carry(eRegion0,eCarrier0);
  154. // spacesNo2Region_Carry[7] = Region_Carry(eRegion0,eCarrier0);
  155. // spacesNo2Region_Carry[8] = Region_Carry(eRegion0,eCarrier0);
  156. // spacesNo2Region_Carry[9] = Region_Carry(eRegion0,eCarrier0);
  157. //
  158. // spacesNo2Region_Carry[10] = Region_Carry(eRegion0,eCarrier0);
  159. // spacesNo2Region_Carry[11] = Region_Carry(eRegion0,eCarrier0);
  160. // spacesNo2Region_Carry[12] = Region_Carry(eRegion0,eCarrier0);
  161. // spacesNo2Region_Carry[13] = Region_Carry(eRegion0,eCarrier0);
  162. // spacesNo2Region_Carry[14] = Region_Carry(eRegion0,eCarrier0);
  163. // spacesNo2Region_Carry[15] = Region_Carry(eRegion0,eCarrier0);
  164. // spacesNo2Region_Carry[16] = Region_Carry(eRegion0,eCarrier0);
  165. // spacesNo2Region_Carry[17] = Region_Carry(eRegion0,eCarrier0);
  166. // spacesNo2Region_Carry[18] = Region_Carry(eRegion0,eCarrier0);
  167. // spacesNo2Region_Carry[19] = Region_Carry(eRegion0,eCarrier0);
  168. //
  169. // spacesNo2Region_Carry[20] = Region_Carry(eRegion0,eCarrier0);
  170. // spacesNo2Region_Carry[21] = Region_Carry(eRegion0,eCarrier0);
  171. // spacesNo2Region_Carry[22] = Region_Carry(eRegion0,eCarrier0);
  172. // spacesNo2Region_Carry[23] = Region_Carry(eRegion0,eCarrier0);
  173. // spacesNo2Region_Carry[24] = Region_Carry(eRegion0,eCarrier0);
  174. // spacesNo2Region_Carry[25] = Region_Carry(eRegion0,eCarrier0);
  175. // spacesNo2Region_Carry[26] = Region_Carry(eRegion0,eCarrier0);
  176. // spacesNo2Region_Carry[27] = Region_Carry(eRegion0,eCarrier0);
  177. // spacesNo2Region_Carry[28] = Region_Carry(eRegion0,eCarrier0);
  178. // spacesNo2Region_Carry[29] = Region_Carry(eRegion0,eCarrier0);
  179. //
  180. // spacesNo2Region_Carry[30] = Region_Carry(eRegion0,eCarrier0);
  181. // spacesNo2Region_Carry[31] = Region_Carry(eRegion0,eCarrier0);
  182. // spacesNo2Region_Carry[32] = Region_Carry(eRegion0,eCarrier0);
  183. // spacesNo2Region_Carry[33] = Region_Carry(eRegion0,eCarrier0);
  184. // spacesNo2Region_Carry[34] = Region_Carry(eRegion0,eCarrier0);
  185. // spacesNo2Region_Carry[35] = Region_Carry(eRegion0,eCarrier0);
  186. // spacesNo2Region_Carry[36] = Region_Carry(eRegion0,eCarrier0);
  187. // spacesNo2Region_Carry[37] = Region_Carry(eRegion0,eCarrier0);
  188. // spacesNo2Region_Carry[38] = Region_Carry(eRegion0,eCarrier0);
  189. // spacesNo2Region_Carry[39] = Region_Carry(eRegion0,eCarrier0);
  190. //
  191. // spacesNo2Region_Carry[40] = Region_Carry(eRegion0,eCarrier0);
  192. // spacesNo2Region_Carry[41] = Region_Carry(eRegion0,eCarrier0);
  193. // spacesNo2Region_Carry[42] = Region_Carry(eRegion0,eCarrier0);
  194. // spacesNo2Region_Carry[43] = Region_Carry(eRegion0,eCarrier0);
  195. // spacesNo2Region_Carry[44] = Region_Carry(eRegion0,eCarrier0);
  196. // spacesNo2Region_Carry[45] = Region_Carry(eRegion0,eCarrier0);
  197. // spacesNo2Region_Carry[46] = Region_Carry(eRegion0,eCarrier0);
  198. // spacesNo2Region_Carry[47] = Region_Carry(eRegion0,eCarrier0);
  199. // spacesNo2Region_Carry[48] = Region_Carry(eRegion0,eCarrier0);
  200. // spacesNo2Region_Carry[49] = Region_Carry(eRegion0,eCarrier0);
  201. //
  202. // spacesNo2Region_Carry[50] = Region_Carry(eRegion0,eCarrier0);
  203. // spacesNo2Region_Carry[51] = Region_Carry(eRegion0,eCarrier0);
  204. // spacesNo2Region_Carry[52] = Region_Carry(eRegion0,eCarrier0);
  205. // spacesNo2Region_Carry[53] = Region_Carry(eRegion0,eCarrier0);
  206. // spacesNo2Region_Carry[54] = Region_Carry(eRegion0,eCarrier0);
  207. // spacesNo2Region_Carry[55] = Region_Carry(eRegion0,eCarrier0);
  208. // spacesNo2Region_Carry[56] = Region_Carry(eRegion0,eCarrier0);
  209. // spacesNo2Region_Carry[57] = Region_Carry(eRegion0,eCarrier0);
  210. // spacesNo2Region_Carry[58] = Region_Carry(eRegion0,eCarrier0);
  211. // spacesNo2Region_Carry[59] = Region_Carry(eRegion0,eCarrier0);
  212. //
  213. // spacesNo2Region_Carry[60] = Region_Carry(eRegion0,eCarrier0);
  214. // spacesNo2Region_Carry[61] = Region_Carry(eRegion0,eCarrier0);
  215. // spacesNo2Region_Carry[62] = Region_Carry(eRegion0,eCarrier0);
  216. // spacesNo2Region_Carry[63] = Region_Carry(eRegion0,eCarrier0);
  217. // spacesNo2Region_Carry[64] = Region_Carry(eRegion0,eCarrier0);
  218. // spacesNo2Region_Carry[65] = Region_Carry(eRegion0,eCarrier0);
  219. // spacesNo2Region_Carry[66] = Region_Carry(eRegion0,eCarrier0);
  220. // spacesNo2Region_Carry[67] = Region_Carry(eRegion0,eCarrier0);
  221. // spacesNo2Region_Carry[68] = Region_Carry(eRegion0,eCarrier0);
  222. // spacesNo2Region_Carry[69] = Region_Carry(eRegion0,eCarrier0);
  223. //
  224. // // --------------------------------------------
  225. // spacesNo2Region_Carry[100] = Region_Carry(eRegion0,eCarrier0);
  226. // spacesNo2Region_Carry[101] = Region_Carry(eRegion2,eCarrier1);
  227. // spacesNo2Region_Carry[102] = Region_Carry(eRegion0,eCarrier0);
  228. // spacesNo2Region_Carry[103] = Region_Carry(eRegion0,eCarrier0);
  229. // spacesNo2Region_Carry[104] = Region_Carry(eRegion0,eCarrier0);
  230. // spacesNo2Region_Carry[105] = Region_Carry(eRegion0,eCarrier0);
  231. // spacesNo2Region_Carry[106] = Region_Carry(eRegion0,eCarrier0);
  232. // spacesNo2Region_Carry[107] = Region_Carry(eRegion0,eCarrier0);
  233. // spacesNo2Region_Carry[108] = Region_Carry(eRegion0,eCarrier0);
  234. // spacesNo2Region_Carry[109] = Region_Carry(eRegion0,eCarrier0);
  235. //
  236. // spacesNo2Region_Carry[110] = Region_Carry(eRegion0,eCarrier0);
  237. // spacesNo2Region_Carry[111] = Region_Carry(eRegion0,eCarrier0);
  238. // spacesNo2Region_Carry[112] = Region_Carry(eRegion0,eCarrier0);
  239. // spacesNo2Region_Carry[113] = Region_Carry(eRegion0,eCarrier0);
  240. // spacesNo2Region_Carry[114] = Region_Carry(eRegion0,eCarrier0);
  241. // spacesNo2Region_Carry[115] = Region_Carry(eRegion0,eCarrier0);
  242. // spacesNo2Region_Carry[116] = Region_Carry(eRegion0,eCarrier0);
  243. // spacesNo2Region_Carry[117] = Region_Carry(eRegion0,eCarrier0);
  244. // spacesNo2Region_Carry[118] = Region_Carry(eRegion0,eCarrier0);
  245. // spacesNo2Region_Carry[119] = Region_Carry(eRegion0,eCarrier0);
  246. //
  247. // spacesNo2Region_Carry[120] = Region_Carry(eRegion0,eCarrier0);
  248. // spacesNo2Region_Carry[121] = Region_Carry(eRegion0,eCarrier0);
  249. // spacesNo2Region_Carry[122] = Region_Carry(eRegion0,eCarrier0);
  250. // spacesNo2Region_Carry[123] = Region_Carry(eRegion0,eCarrier0);
  251. // spacesNo2Region_Carry[124] = Region_Carry(eRegion0,eCarrier0);
  252. // spacesNo2Region_Carry[125] = Region_Carry(eRegion0,eCarrier0);
  253. // spacesNo2Region_Carry[126] = Region_Carry(eRegion0,eCarrier0);
  254. // spacesNo2Region_Carry[127] = Region_Carry(eRegion0,eCarrier0);
  255. // spacesNo2Region_Carry[128] = Region_Carry(eRegion0,eCarrier0);
  256. // spacesNo2Region_Carry[129] = Region_Carry(eRegion0,eCarrier0);
  257. //
  258. // spacesNo2Region_Carry[130] = Region_Carry(eRegion0,eCarrier0);
  259. // spacesNo2Region_Carry[131] = Region_Carry(eRegion0,eCarrier0);
  260. // spacesNo2Region_Carry[132] = Region_Carry(eRegion0,eCarrier0);
  261. // spacesNo2Region_Carry[133] = Region_Carry(eRegion0,eCarrier0);
  262. // spacesNo2Region_Carry[134] = Region_Carry(eRegion0,eCarrier0);
  263. // spacesNo2Region_Carry[135] = Region_Carry(eRegion0,eCarrier0);
  264. // spacesNo2Region_Carry[136] = Region_Carry(eRegion0,eCarrier0);
  265. // spacesNo2Region_Carry[137] = Region_Carry(eRegion0,eCarrier0);
  266. // spacesNo2Region_Carry[138] = Region_Carry(eRegion0,eCarrier0);
  267. // spacesNo2Region_Carry[139] = Region_Carry(eRegion0,eCarrier0);
  268. //
  269. // spacesNo2Region_Carry[140] = Region_Carry(eRegion0,eCarrier0);
  270. // spacesNo2Region_Carry[141] = Region_Carry(eRegion0,eCarrier0);
  271. // spacesNo2Region_Carry[142] = Region_Carry(eRegion0,eCarrier0);
  272. // spacesNo2Region_Carry[143] = Region_Carry(eRegion0,eCarrier0);
  273. // spacesNo2Region_Carry[144] = Region_Carry(eRegion0,eCarrier0);
  274. // spacesNo2Region_Carry[145] = Region_Carry(eRegion0,eCarrier0);
  275. // spacesNo2Region_Carry[146] = Region_Carry(eRegion0,eCarrier0);
  276. // spacesNo2Region_Carry[147] = Region_Carry(eRegion0,eCarrier0);
  277. // spacesNo2Region_Carry[148] = Region_Carry(eRegion0,eCarrier0);
  278. // spacesNo2Region_Carry[149] = Region_Carry(eRegion0,eCarrier0);
  279. //
  280. // spacesNo2Region_Carry[150] = Region_Carry(eRegion0,eCarrier0);
  281. // spacesNo2Region_Carry[151] = Region_Carry(eRegion0,eCarrier0);
  282. // spacesNo2Region_Carry[152] = Region_Carry(eRegion0,eCarrier0);
  283. // spacesNo2Region_Carry[153] = Region_Carry(eRegion0,eCarrier0);
  284. // spacesNo2Region_Carry[154] = Region_Carry(eRegion0,eCarrier0);
  285. // spacesNo2Region_Carry[155] = Region_Carry(eRegion0,eCarrier0);
  286. // spacesNo2Region_Carry[156] = Region_Carry(eRegion0,eCarrier0);
  287. // spacesNo2Region_Carry[157] = Region_Carry(eRegion0,eCarrier0);
  288. // spacesNo2Region_Carry[158] = Region_Carry(eRegion0,eCarrier0);
  289. // spacesNo2Region_Carry[159] = Region_Carry(eRegion0,eCarrier0);
  290. //
  291. // spacesNo2Region_Carry[160] = Region_Carry(eRegion0,eCarrier0);
  292. // spacesNo2Region_Carry[161] = Region_Carry(eRegion0,eCarrier0);
  293. // spacesNo2Region_Carry[162] = Region_Carry(eRegion0,eCarrier0);
  294. // spacesNo2Region_Carry[163] = Region_Carry(eRegion0,eCarrier0);
  295. // spacesNo2Region_Carry[164] = Region_Carry(eRegion0,eCarrier0);
  296. // spacesNo2Region_Carry[165] = Region_Carry(eRegion0,eCarrier0);
  297. // spacesNo2Region_Carry[166] = Region_Carry(eRegion0,eCarrier0);
  298. // spacesNo2Region_Carry[167] = Region_Carry(eRegion0,eCarrier0);
  299. // spacesNo2Region_Carry[168] = Region_Carry(eRegion0,eCarrier0);
  300. // spacesNo2Region_Carry[169] = Region_Carry(eRegion0,eCarrier0);
  301. //
  302. // }
  303. //};
  304. //////////////////////////////////////////////////
  305. #endif //NAVIGATION_CUSTOM_TYPE_H