monitor_emqx.cpp 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  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::clamp_close(int mode)
  20. {
  21. MqttMsg msg;
  22. NavMessage::ToAgvCmd speed;
  23. heat_=(heat_+1)%255;
  24. speed.set_h1(heat_);
  25. speed.set_t1(eClampClose);
  26. speed.set_m1(mode);
  27. speed.set_end(1);
  28. msg.fromProtoMessage(speed);
  29. Publish(speedcmd_topic_,msg);
  30. }
  31. void Monitor_emqx::clamp_open(int mode)
  32. {
  33. MqttMsg msg;
  34. NavMessage::ToAgvCmd speed;
  35. heat_=(heat_+1)%255;
  36. speed.set_h1(heat_);
  37. speed.set_t1(eClampOpen);
  38. speed.set_m1(mode);
  39. speed.set_end(1);
  40. msg.fromProtoMessage(speed);
  41. Publish(speedcmd_topic_,msg);
  42. }
  43. void Monitor_emqx::clamp_fully_open(int mode)
  44. {
  45. MqttMsg msg;
  46. NavMessage::ToAgvCmd speed;
  47. heat_=(heat_+1)%255;
  48. speed.set_h1(heat_);
  49. speed.set_t1(eClampFullyOpen);
  50. speed.set_m1(mode);
  51. speed.set_end(1);
  52. msg.fromProtoMessage(speed);
  53. Publish(speedcmd_topic_,msg);
  54. }
  55. void Monitor_emqx::lifter_rise(int mode)
  56. {
  57. MqttMsg msg;
  58. NavMessage::ToAgvCmd speed;
  59. heat_=(heat_+1)%255;
  60. speed.set_h1(heat_);
  61. speed.set_t1(eLifterRise);
  62. speed.set_m1(mode);
  63. speed.set_end(1);
  64. msg.fromProtoMessage(speed);
  65. Publish(speedcmd_topic_,msg);
  66. }
  67. void Monitor_emqx::lifter_down(int mode)
  68. {
  69. MqttMsg msg;
  70. NavMessage::ToAgvCmd speed;
  71. heat_=(heat_+1)%255;
  72. speed.set_h1(heat_);
  73. speed.set_t1(eLifterDown);
  74. speed.set_m1(mode);
  75. speed.set_end(1);
  76. msg.fromProtoMessage(speed);
  77. Publish(speedcmd_topic_,msg);
  78. }
  79. void Monitor_emqx::set_speed(int mode,ActionType type,double v,double a,double L)
  80. {
  81. if(mode == eDouble && type == eVertical && fabs(L) < 1e-3)
  82. {
  83. printf(" Main agv mpc must set wheelBase\n ");
  84. return;
  85. }
  86. double w=fabs(a)>0.001?a:0.0;
  87. double velocity=fabs(v)>0.001?v:0;
  88. MqttMsg msg;
  89. NavMessage::ToAgvCmd speed;
  90. heat_=(heat_+1)%255;
  91. speed.set_h1(heat_);
  92. speed.set_t1(type);
  93. speed.set_v1(velocity);
  94. speed.set_w1(w);
  95. speed.set_l1(L);
  96. speed.set_m1(mode);
  97. speed.set_end(1);
  98. printf("real down(v:%f, w:%f)\n",velocity, w);
  99. msg.fromProtoMessage(speed);
  100. Publish(speedcmd_topic_,msg);
  101. }
  102. void Monitor_emqx::set_speed(int mode,ActionType type,double v,double a)
  103. {
  104. double w=fabs(a)>0.0001?a:0.0;
  105. MqttMsg msg;
  106. NavMessage::ToAgvCmd speed;
  107. heat_=(heat_+1)%255;
  108. speed.set_h1(heat_);
  109. speed.set_t1(type);
  110. speed.set_v1(v);
  111. speed.set_w1(w);
  112. speed.set_v2(v);
  113. speed.set_w2(w);
  114. speed.set_v3(v);
  115. speed.set_w3(w);
  116. speed.set_m1(mode);
  117. speed.set_end(1);
  118. msg.fromProtoMessage(speed);
  119. Publish(speedcmd_topic_,msg);
  120. }
  121. void Monitor_emqx::stop()
  122. {
  123. MqttMsg msg;
  124. NavMessage::ToAgvCmd speed;
  125. heat_=(heat_+1)%255;
  126. speed.set_h1(heat_);
  127. speed.set_t1(eStop);
  128. speed.set_v1(0);
  129. speed.set_w1(0);
  130. speed.set_v2(0);
  131. speed.set_w2(0);
  132. speed.set_v3(0);
  133. speed.set_w3(0);
  134. speed.set_end(1);
  135. msg.fromProtoMessage(speed);
  136. Publish(speedcmd_topic_,msg);
  137. }
  138. void Monitor_emqx::set_ToAgvCmd(int mode, ActionType type, double v[], double w[], double L, int P, double D) {
  139. // if(mode == eDouble && type == eVertical && fabs(L) < 1e-3)
  140. // {
  141. // printf(" Main agv mpc must set wheelBase\n ");
  142. // return;
  143. // }
  144. int count = 3;
  145. double w_correct[count];
  146. double velocity[count];
  147. for (int i = 0; i < count; ++i) {
  148. w_correct[i] =fabs(w[i])>0.0001?w[i]:0.0;
  149. velocity[i] =fabs(v[i])>0.0001?v[i]:0.0;
  150. }
  151. MqttMsg msg;
  152. NavMessage::ToAgvCmd agvCmd;
  153. heat_=(heat_+1)%255;
  154. agvCmd.set_h1(heat_);
  155. agvCmd.set_m1(mode);
  156. agvCmd.set_t1(type);
  157. agvCmd.set_v1(velocity[0]);
  158. agvCmd.set_w1(w_correct[0]);
  159. agvCmd.set_v2(velocity[1]);
  160. agvCmd.set_w2(w_correct[1]);
  161. agvCmd.set_v3(velocity[2]);
  162. agvCmd.set_w3(w_correct[2]);
  163. agvCmd.set_l1(L);
  164. agvCmd.set_p1(P);
  165. agvCmd.set_d1(D);
  166. agvCmd.set_end(1);
  167. msg.fromProtoMessage(agvCmd);
  168. Publish(speedcmd_topic_,msg);
  169. }
  170. //
  171. //void Monitor_emqx::set_ToAgvCmd(int mode, ActionType type, double v[], double w[], double diff_yaw[], double L, int P, double D) {
  172. //// if(mode == eDouble && type == eVertical && fabs(L) < 1e-3)
  173. //// {
  174. //// printf(" Main agv mpc must set wheelBase\n ");
  175. //// return;
  176. //// }
  177. // int count = 3;
  178. // double w_correct[count];
  179. // double velocity[count];
  180. // for (int i = 0; i < count; ++i) {
  181. // w_correct[i] =fabs(w[i])>0.0001?w[i]:0.0;
  182. // velocity[i] =fabs(v[i])>0.0001?v[i]:0.0;
  183. // }
  184. // for (int i = 0; i < 2; ++i) {
  185. // diff_yaw[i] =fabs(diff_yaw[i])>0.0001?diff_yaw[i]:0.0;
  186. // }
  187. // MqttMsg msg;
  188. // NavMessage::ToAgvCmd agvCmd;
  189. // heat_=(heat_+1)%255;
  190. // agvCmd.set_h1(heat_);
  191. // agvCmd.set_m1(mode);
  192. // agvCmd.set_t1(type);
  193. // agvCmd.set_v1(velocity[0]);
  194. // agvCmd.set_w1(w_correct[0]);
  195. // agvCmd.set_v2(velocity[1]);
  196. // agvCmd.set_w2(w_correct[1]);
  197. // agvCmd.set_v3(velocity[2]);
  198. // agvCmd.set_w3(w_correct[2]);
  199. // agvCmd.set_l1(L);
  200. // agvCmd.set_p1(P);
  201. // agvCmd.set_y1(diff_yaw[0]);
  202. // agvCmd.set_y2(diff_yaw[1]);
  203. // agvCmd.set_d1(D);
  204. //
  205. // agvCmd.set_end(1);
  206. // msg.fromProtoMessage(agvCmd);
  207. // Publish(speedcmd_topic_,msg);
  208. //}