123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- //
- // Created by zx on 23-3-14.
- //
- #include "monitor_emqx.h"
- #include <math.h>
- #include <unistd.h>
- Monitor_emqx::Monitor_emqx(std::string nodeId)
- : Terminator_emqx(nodeId)
- {
- heat_=0;
- }
- Monitor_emqx::~Monitor_emqx()
- {
- }
- void Monitor_emqx::set_speedcmd_topic(std::string speedcmd)
- {
- speedcmd_topic_=speedcmd;
- }
- void Monitor_emqx::set_clampLifterCmd_topic(std::string topic)
- {
- clampLifterCmd_topic_=topic;
- }
- void Monitor_emqx::clamp_close(int mode)
- {
- MqttMsg msg;
- NavMessage::ToAgvCmd speed;
- heat_=(heat_+1)%255;
- speed.set_h1(heat_);
- speed.set_t1(eClampClose);
- speed.set_m1(mode);
- speed.set_end(1);
- msg.fromProtoMessage(speed);
- Publish(clampLifterCmd_topic_,msg);
- }
- void Monitor_emqx::clamp_half_open(int mode)
- {
- MqttMsg msg;
- NavMessage::ToAgvCmd speed;
- heat_=(heat_+1)%255;
- speed.set_h1(heat_);
- speed.set_t1(eClampHalfOpen);
- speed.set_m1(mode);
- speed.set_end(1);
- msg.fromProtoMessage(speed);
- Publish(clampLifterCmd_topic_,msg);
- }
- void Monitor_emqx::clamp_fully_open(int mode)
- {
- MqttMsg msg;
- NavMessage::ToAgvCmd speed;
- heat_=(heat_+1)%255;
- speed.set_h1(heat_);
- speed.set_t1(eClampFullyOpen);
- speed.set_m1(mode);
- speed.set_end(1);
- msg.fromProtoMessage(speed);
- Publish(clampLifterCmd_topic_,msg);
- }
- void Monitor_emqx::lifter_rise(int mode)
- {
- MqttMsg msg;
- NavMessage::ToAgvCmd speed;
- heat_=(heat_+1)%255;
- speed.set_h1(heat_);
- speed.set_t1(eLifterRise);
- speed.set_m1(mode);
- speed.set_end(1);
- msg.fromProtoMessage(speed);
- Publish(clampLifterCmd_topic_,msg);
- }
- void Monitor_emqx::lifter_down(int mode)
- {
- MqttMsg msg;
- NavMessage::ToAgvCmd speed;
- heat_=(heat_+1)%255;
- speed.set_h1(heat_);
- speed.set_t1(eLifterDown);
- speed.set_m1(mode);
- speed.set_end(1);
- msg.fromProtoMessage(speed);
- Publish(clampLifterCmd_topic_,msg);
- }
- /*
- void Monitor_emqx::set_speed(int mode,ActionType type,double v,double a,double L)
- {
- if(mode == eDouble && type == eVertical && fabs(L) < 1e-3)
- {
- printf(" Main agv mpc must set wheelBase\n ");
- return;
- }
- double w=fabs(a)>0.001?a:0.0;
- double velocity=fabs(v)>0.001?v:0;
- MqttMsg msg;
- NavMessage::ToAgvCmd speed;
- heat_=(heat_+1)%255;
- speed.set_h1(heat_);
- speed.set_t1(type);
- speed.set_v1(velocity);
- speed.set_w1(w);
- speed.set_l1(L);
- speed.set_m1(mode);
- speed.set_end(1);
- printf("real down(v:%f, w:%f)\n",velocity, w);
- msg.fromProtoMessage(speed);
- Publish(speedcmd_topic_,msg);
- }
- */
- void Monitor_emqx::set_speed(int mode,ActionType type,double v,double a)
- {
- double w=fabs(a)>0.0001?a:0.0;
- MqttMsg msg;
- NavMessage::ToAgvCmd speed;
- heat_=(heat_+1)%255;
- speed.set_h1(heat_);
- speed.set_t1(type);
- speed.set_v1(v);
- speed.set_w1(w);
- speed.set_v2(v);
- speed.set_w2(w);
- speed.set_v3(v);
- speed.set_w3(w);
- speed.set_m1(mode);
- speed.set_end(1);
- msg.fromProtoMessage(speed);
- Publish(speedcmd_topic_,msg);
- }
- void Monitor_emqx::stop()
- {
- MqttMsg msg;
- NavMessage::ToAgvCmd speed;
- heat_=(heat_+1)%255;
- speed.set_h1(heat_);
- speed.set_t1(eStop);
- speed.set_v1(0);
- speed.set_w1(0);
- speed.set_v2(0);
- speed.set_w2(0);
- speed.set_v3(0);
- speed.set_w3(0);
- speed.set_end(1);
- msg.fromProtoMessage(speed);
- Publish(speedcmd_topic_,msg);
- }
- void Monitor_emqx::set_ToAgvCmd(int clampLifterAction,int mode,ActionType type,double v[],double w[],
- double L,int P,double D,double Y1,double Y2){
- printf(" Cmd : clampLifter %d,mode:%d type:%d v:%f w:%f wheelBase:%f spaceid:%d distance:%f Y1:%f Y2:%f\n",
- clampLifterAction,mode,type,v[0],w[0],L,P,D,Y1,Y2);
- int count = 3;
- double w_correct[count];
- double velocity[count];
- for (int i = 0; i < count; ++i) {
- w_correct[i] =fabs(w[i])>0.0001?w[i]:0.0;
- velocity[i] =fabs(v[i])>0.0001?v[i]:0.0;
- }
- double yaw1 =fabs(Y1)>0.0001?Y1:0.0;
- double yaw2 =fabs(Y2)>0.0001?Y2:0.0;
- MqttMsg msg;
- NavMessage::ToAgvCmd agvCmd;
- heat_=(heat_+1)%255;
- agvCmd.set_h1(heat_);
- agvCmd.set_m1(mode);
- agvCmd.set_t1(type);
- agvCmd.set_v1(velocity[0]);
- agvCmd.set_w1(w_correct[0]);
- agvCmd.set_v2(velocity[1]);
- agvCmd.set_w2(w_correct[1]);
- agvCmd.set_v3(velocity[2]);
- agvCmd.set_w3(w_correct[2]);
- agvCmd.set_y1(yaw1);
- agvCmd.set_y2(yaw2);
- agvCmd.set_l1(L);
- agvCmd.set_p1(P);
- agvCmd.set_d1(D);
- agvCmd.set_cl(clampLifterAction);
- agvCmd.set_end(1);
- msg.fromProtoMessage(agvCmd);
- Publish(speedcmd_topic_,msg);
- }
- /*
- void Monitor_emqx::set_ToAgvCmd(int mode, ActionType type, double v[], double w[],
- double L, int P, double D,double Y1,double Y2) {
- int count = 3;
- double w_correct[count];
- double velocity[count];
- for (int i = 0; i < count; ++i) {
- w_correct[i] =fabs(w[i])>0.0001?w[i]:0.0;
- velocity[i] =fabs(v[i])>0.0001?v[i]:0.0;
- }
- double yaw1 =fabs(Y1)>0.0001?Y1:0.0;
- double yaw2 =fabs(Y2)>0.0001?Y2:0.0;
- MqttMsg msg;
- NavMessage::ToAgvCmd agvCmd;
- heat_=(heat_+1)%255;
- agvCmd.set_h1(heat_);
- agvCmd.set_m1(mode);
- agvCmd.set_t1(type);
- agvCmd.set_v1(velocity[0]);
- agvCmd.set_w1(w_correct[0]);
- agvCmd.set_v2(velocity[1]);
- agvCmd.set_w2(w_correct[1]);
- agvCmd.set_v3(velocity[2]);
- agvCmd.set_w3(w_correct[2]);
- agvCmd.set_y1(yaw1);
- agvCmd.set_y2(yaw2);
- agvCmd.set_l1(L);
- agvCmd.set_p1(P);
- agvCmd.set_d1(D);
- agvCmd.set_end(1);
- msg.fromProtoMessage(agvCmd);
- Publish(speedcmd_topic_,msg);
- }
- */
- //
- //void Monitor_emqx::set_ToAgvCmd(int mode, ActionType type, double v[], double w[], double diff_yaw[], double L, int P, double D) {
- //// if(mode == eDouble && type == eVertical && fabs(L) < 1e-3)
- //// {
- //// printf(" Main agv mpc must set wheelBase\n ");
- //// return;
- //// }
- // int count = 3;
- // double w_correct[count];
- // double velocity[count];
- // for (int i = 0; i < count; ++i) {
- // w_correct[i] =fabs(w[i])>0.0001?w[i]:0.0;
- // velocity[i] =fabs(v[i])>0.0001?v[i]:0.0;
- // }
- // for (int i = 0; i < 2; ++i) {
- // diff_yaw[i] =fabs(diff_yaw[i])>0.0001?diff_yaw[i]:0.0;
- // }
- // MqttMsg msg;
- // NavMessage::ToAgvCmd agvCmd;
- // heat_=(heat_+1)%255;
- // agvCmd.set_h1(heat_);
- // agvCmd.set_m1(mode);
- // agvCmd.set_t1(type);
- // agvCmd.set_v1(velocity[0]);
- // agvCmd.set_w1(w_correct[0]);
- // agvCmd.set_v2(velocity[1]);
- // agvCmd.set_w2(w_correct[1]);
- // agvCmd.set_v3(velocity[2]);
- // agvCmd.set_w3(w_correct[2]);
- // agvCmd.set_l1(L);
- // agvCmd.set_p1(P);
- // agvCmd.set_y1(diff_yaw[0]);
- // agvCmd.set_y2(diff_yaw[1]);
- // agvCmd.set_d1(D);
- //
- // agvCmd.set_end(1);
- // msg.fromProtoMessage(agvCmd);
- // Publish(speedcmd_topic_,msg);
- //}
|