monitor_emqx.cpp 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. //
  2. // Created by zx on 23-3-14.
  3. //
  4. #include "monitor_emqx.h"
  5. #include <math.h>
  6. #include <unistd.h>
  7. Monitor_emqx::Monitor_emqx(std::string nodeId)
  8. : Terminator_emqx(nodeId)
  9. {
  10. heat_=0;
  11. }
  12. Monitor_emqx::~Monitor_emqx()
  13. {
  14. }
  15. void Monitor_emqx::set_speedcmd_topic(std::string speedcmd)
  16. {
  17. speedcmd_topic_=speedcmd;
  18. }
  19. void Monitor_emqx::set_clampLifterCmd_topic(std::string topic)
  20. {
  21. clampLifterCmd_topic_=topic;
  22. }
  23. void Monitor_emqx::clamp_close(int mode)
  24. {
  25. MqttMsg msg;
  26. NavMessage::ToAgvCmd speed;
  27. heat_=(heat_+1)%255;
  28. speed.set_h1(heat_);
  29. speed.set_t1(eClampClose);
  30. speed.set_m1(mode);
  31. speed.set_end(1);
  32. msg.fromProtoMessage(speed);
  33. Publish(clampLifterCmd_topic_,msg);
  34. }
  35. void Monitor_emqx::clamp_half_open(int mode)
  36. {
  37. MqttMsg msg;
  38. NavMessage::ToAgvCmd speed;
  39. heat_=(heat_+1)%255;
  40. speed.set_h1(heat_);
  41. speed.set_t1(eClampHalfOpen);
  42. speed.set_m1(mode);
  43. speed.set_end(1);
  44. msg.fromProtoMessage(speed);
  45. Publish(clampLifterCmd_topic_,msg);
  46. }
  47. void Monitor_emqx::clamp_fully_open(int mode)
  48. {
  49. MqttMsg msg;
  50. NavMessage::ToAgvCmd speed;
  51. heat_=(heat_+1)%255;
  52. speed.set_h1(heat_);
  53. speed.set_t1(eClampFullyOpen);
  54. speed.set_m1(mode);
  55. speed.set_end(1);
  56. msg.fromProtoMessage(speed);
  57. Publish(clampLifterCmd_topic_,msg);
  58. }
  59. void Monitor_emqx::lifter_rise(int mode)
  60. {
  61. MqttMsg msg;
  62. NavMessage::ToAgvCmd speed;
  63. heat_=(heat_+1)%255;
  64. speed.set_h1(heat_);
  65. speed.set_t1(eLifterRise);
  66. speed.set_m1(mode);
  67. speed.set_end(1);
  68. msg.fromProtoMessage(speed);
  69. Publish(clampLifterCmd_topic_,msg);
  70. }
  71. void Monitor_emqx::lifter_down(int mode)
  72. {
  73. MqttMsg msg;
  74. NavMessage::ToAgvCmd speed;
  75. heat_=(heat_+1)%255;
  76. speed.set_h1(heat_);
  77. speed.set_t1(eLifterDown);
  78. speed.set_m1(mode);
  79. speed.set_end(1);
  80. msg.fromProtoMessage(speed);
  81. Publish(clampLifterCmd_topic_,msg);
  82. }
  83. /*
  84. void Monitor_emqx::set_speed(int mode,ActionType type,double v,double a,double L)
  85. {
  86. if(mode == eDouble && type == eVertical && fabs(L) < 1e-3)
  87. {
  88. printf(" Main agv mpc must set wheelBase\n ");
  89. return;
  90. }
  91. double w=fabs(a)>0.001?a:0.0;
  92. double velocity=fabs(v)>0.001?v:0;
  93. MqttMsg msg;
  94. NavMessage::ToAgvCmd speed;
  95. heat_=(heat_+1)%255;
  96. speed.set_h1(heat_);
  97. speed.set_t1(type);
  98. speed.set_v1(velocity);
  99. speed.set_w1(w);
  100. speed.set_l1(L);
  101. speed.set_m1(mode);
  102. speed.set_end(1);
  103. printf("real down(v:%f, w:%f)\n",velocity, w);
  104. msg.fromProtoMessage(speed);
  105. Publish(speedcmd_topic_,msg);
  106. }
  107. */
  108. void Monitor_emqx::set_speed(int mode,ActionType type,double v,double a)
  109. {
  110. double w=fabs(a)>0.0001?a:0.0;
  111. MqttMsg msg;
  112. NavMessage::ToAgvCmd speed;
  113. heat_=(heat_+1)%255;
  114. speed.set_h1(heat_);
  115. speed.set_t1(type);
  116. speed.set_v1(v);
  117. speed.set_w1(w);
  118. speed.set_v2(v);
  119. speed.set_w2(w);
  120. speed.set_v3(v);
  121. speed.set_w3(w);
  122. speed.set_m1(mode);
  123. speed.set_end(1);
  124. msg.fromProtoMessage(speed);
  125. Publish(speedcmd_topic_,msg);
  126. }
  127. void Monitor_emqx::stop()
  128. {
  129. MqttMsg msg;
  130. NavMessage::ToAgvCmd speed;
  131. heat_=(heat_+1)%255;
  132. speed.set_h1(heat_);
  133. speed.set_t1(eStop);
  134. speed.set_v1(0);
  135. speed.set_w1(0);
  136. speed.set_v2(0);
  137. speed.set_w2(0);
  138. speed.set_v3(0);
  139. speed.set_w3(0);
  140. speed.set_end(1);
  141. msg.fromProtoMessage(speed);
  142. Publish(speedcmd_topic_,msg);
  143. }
  144. void Monitor_emqx::set_ToAgvCmd(int clampLifterAction,int mode,ActionType type,double v[],double w[],
  145. double L,int P,double D,double Y1,double Y2){
  146. printf(" Cmd : clampLifter %d,mode:%d type:%d v:%f w:%f wheelBase:%f spaceid:%d distance:%f Y1:%f Y2:%f\n",
  147. clampLifterAction,mode,type,v[0],w[0],L,P,D,Y1,Y2);
  148. int count = 3;
  149. double w_correct[count];
  150. double velocity[count];
  151. for (int i = 0; i < count; ++i) {
  152. w_correct[i] =fabs(w[i])>0.0001?w[i]:0.0;
  153. velocity[i] =fabs(v[i])>0.0001?v[i]:0.0;
  154. }
  155. double yaw1 =fabs(Y1)>0.0001?Y1:0.0;
  156. double yaw2 =fabs(Y2)>0.0001?Y2:0.0;
  157. MqttMsg msg;
  158. NavMessage::ToAgvCmd agvCmd;
  159. heat_=(heat_+1)%255;
  160. agvCmd.set_h1(heat_);
  161. agvCmd.set_m1(mode);
  162. agvCmd.set_t1(type);
  163. agvCmd.set_v1(velocity[0]);
  164. agvCmd.set_w1(w_correct[0]);
  165. agvCmd.set_v2(velocity[1]);
  166. agvCmd.set_w2(w_correct[1]);
  167. agvCmd.set_v3(velocity[2]);
  168. agvCmd.set_w3(w_correct[2]);
  169. agvCmd.set_y1(yaw1);
  170. agvCmd.set_y2(yaw2);
  171. agvCmd.set_l1(L);
  172. agvCmd.set_p1(P);
  173. agvCmd.set_d1(D);
  174. agvCmd.set_cl(clampLifterAction);
  175. agvCmd.set_end(1);
  176. msg.fromProtoMessage(agvCmd);
  177. Publish(speedcmd_topic_,msg);
  178. }
  179. /*
  180. void Monitor_emqx::set_ToAgvCmd(int mode, ActionType type, double v[], double w[],
  181. double L, int P, double D,double Y1,double Y2) {
  182. int count = 3;
  183. double w_correct[count];
  184. double velocity[count];
  185. for (int i = 0; i < count; ++i) {
  186. w_correct[i] =fabs(w[i])>0.0001?w[i]:0.0;
  187. velocity[i] =fabs(v[i])>0.0001?v[i]:0.0;
  188. }
  189. double yaw1 =fabs(Y1)>0.0001?Y1:0.0;
  190. double yaw2 =fabs(Y2)>0.0001?Y2:0.0;
  191. MqttMsg msg;
  192. NavMessage::ToAgvCmd agvCmd;
  193. heat_=(heat_+1)%255;
  194. agvCmd.set_h1(heat_);
  195. agvCmd.set_m1(mode);
  196. agvCmd.set_t1(type);
  197. agvCmd.set_v1(velocity[0]);
  198. agvCmd.set_w1(w_correct[0]);
  199. agvCmd.set_v2(velocity[1]);
  200. agvCmd.set_w2(w_correct[1]);
  201. agvCmd.set_v3(velocity[2]);
  202. agvCmd.set_w3(w_correct[2]);
  203. agvCmd.set_y1(yaw1);
  204. agvCmd.set_y2(yaw2);
  205. agvCmd.set_l1(L);
  206. agvCmd.set_p1(P);
  207. agvCmd.set_d1(D);
  208. agvCmd.set_end(1);
  209. msg.fromProtoMessage(agvCmd);
  210. Publish(speedcmd_topic_,msg);
  211. }
  212. */
  213. //
  214. //void Monitor_emqx::set_ToAgvCmd(int mode, ActionType type, double v[], double w[], double diff_yaw[], double L, int P, double D) {
  215. //// if(mode == eDouble && type == eVertical && fabs(L) < 1e-3)
  216. //// {
  217. //// printf(" Main agv mpc must set wheelBase\n ");
  218. //// return;
  219. //// }
  220. // int count = 3;
  221. // double w_correct[count];
  222. // double velocity[count];
  223. // for (int i = 0; i < count; ++i) {
  224. // w_correct[i] =fabs(w[i])>0.0001?w[i]:0.0;
  225. // velocity[i] =fabs(v[i])>0.0001?v[i]:0.0;
  226. // }
  227. // for (int i = 0; i < 2; ++i) {
  228. // diff_yaw[i] =fabs(diff_yaw[i])>0.0001?diff_yaw[i]:0.0;
  229. // }
  230. // MqttMsg msg;
  231. // NavMessage::ToAgvCmd agvCmd;
  232. // heat_=(heat_+1)%255;
  233. // agvCmd.set_h1(heat_);
  234. // agvCmd.set_m1(mode);
  235. // agvCmd.set_t1(type);
  236. // agvCmd.set_v1(velocity[0]);
  237. // agvCmd.set_w1(w_correct[0]);
  238. // agvCmd.set_v2(velocity[1]);
  239. // agvCmd.set_w2(w_correct[1]);
  240. // agvCmd.set_v3(velocity[2]);
  241. // agvCmd.set_w3(w_correct[2]);
  242. // agvCmd.set_l1(L);
  243. // agvCmd.set_p1(P);
  244. // agvCmd.set_y1(diff_yaw[0]);
  245. // agvCmd.set_y2(diff_yaw[1]);
  246. // agvCmd.set_d1(D);
  247. //
  248. // agvCmd.set_end(1);
  249. // msg.fromProtoMessage(agvCmd);
  250. // Publish(speedcmd_topic_,msg);
  251. //}