Browse Source

change decition_brain_sf_Jeely_xingyueL. add group ctrl.

yuchuli 1 year ago
parent
commit
f2d2a40f5a

+ 6 - 0
src/decition/common/common/car_status.h

@@ -27,6 +27,7 @@
 #include "common/tracepointstation.h"
 
 #include "groupmsg.pb.h"
+#include "groupctrl.pb.h"
 #include <QMutex>
 
 #define RADAR_OBJ_NUM 64
@@ -212,6 +213,11 @@ namespace iv {
         QMutex mMutexgroupgrpc;
         qint64 mgroupgrpcupdatetime = 0;
         int curID=0;
+
+        iv::group::groupctrl mgroupgctrl;
+        QMutex mMutexgroupctrl;
+        qint64 mgroupctrlupdatetime = 0;
+
         //巡逻车增加停车点位.begin.20211203,cxw
         double mfParkLat0;
         double mfParkLng0;

+ 19 - 0
src/decition/decition_brain_sf_Jeely_xingyueL/decition/brain.cpp

@@ -154,6 +154,9 @@ iv::decition::BrainDecition::BrainDecition()
     ModuleFun fungroupgrpc =std::bind(&iv::decition::BrainDecition::UpdateGRPCGroupMsg,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5);
     mapgrpcgroup = iv::modulecomm::RegisterRecvPlus("groupmsg",fungroupgrpc);
 
+    ModuleFun fungroupctrl =std::bind(&iv::decition::BrainDecition::UpdateGroupCtrl,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5);
+    mpgroupctrl = iv::modulecomm::RegisterRecvPlus("groupctrl",fungroupctrl);
+
     mpaPlanTrace = iv::modulecomm::RegisterSend("plantrace",500000,10);
     mpaObsTraceLeft = iv::modulecomm::RegisterSend("obstraceleft",500000,10);
     mpaObsTraceRight = iv::modulecomm::RegisterSend("obstraceright",500000,10);
@@ -1558,6 +1561,22 @@ void iv::decition::BrainDecition::UpdateGRPCGroupMsg(const char *strdata, const
 
 }
 
+void iv::decition::BrainDecition::UpdateGroupCtrl(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
+{
+    iv::group::groupctrl xgroupctrl;
+    if(!xgroupctrl.ParseFromArray(strdata,nSize))
+    {
+        std::cout<<"iv::decition::BrainDecition::UpdateGroupCtrl parse fail."<<std::endl;
+        return;
+    }
+
+
+    ServiceCarStatus.mMutexgroupctrl.lock();
+    ServiceCarStatus.mgroupctrlupdatetime = QDateTime::currentMSecsSinceEpoch();
+    ServiceCarStatus.mgroupgctrl.CopyFrom(xgroupctrl);
+    ServiceCarStatus.mMutexgroupctrl.unlock();
+}
+
 void iv::decition::BrainDecition::UpdateChassis(const char *strdata, const unsigned int nSize, const unsigned int index, const QDateTime *dt, const char *strmemname)
 {
     iv::chassis xchassis;

+ 3 - 0
src/decition/decition_brain_sf_Jeely_xingyueL/decition/brain.h

@@ -184,6 +184,7 @@ namespace iv {
             void UpdateChassis(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
             void adjuseGpsLidarPosition();
             void UpdateGRPCGroupMsg(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
+            void UpdateGroupCtrl(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
             void SideMove(iv::GPS_INS &x);
 
             iv::group::groupinfo mgroupgrpcInfo;
@@ -191,6 +192,8 @@ namespace iv {
             QMutex mMutexGroupgrpc;
             void * mapgrpcgroup;
 
+            void * mpgroupctrl;
+
             fanyaapi mmpcapi;
 
             bool mbUseExternMPC = false;

+ 17 - 0
src/decition/decition_brain_sf_Jeely_xingyueL/decition/decide_gps_00.cpp

@@ -227,6 +227,18 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
     Decition gps_decition(new DecitionBasic);
     //    vector<iv::Point2D> fpTraceTmp;
 
+
+    bool bgroupctrl = false;
+    qint64 ngroupvalid = 3000;
+    iv::group::groupctrl xgroupctrl;
+    if((QDateTime::currentMSecsSinceEpoch() - ServiceCarStatus.mgroupctrlupdatetime ) < ngroupvalid)
+    {
+        ServiceCarStatus.mMutexgroupctrl.lock();
+        xgroupctrl.CopyFrom(ServiceCarStatus.mgroupgctrl);
+        ServiceCarStatus.mMutexgroupctrl.unlock();
+        bgroupctrl = true;
+    }
+
     bool bgroupgrpc = false;
     qint64 ngrpcvalid = 3000;
     iv::group::groupinfo xgroupgrpcinfo;
@@ -1588,6 +1600,11 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
             }
     }
 
+    if(bgroupctrl)
+    {
+        dSpeed = min(xgroupctrl.fgroupspeed(),dSpeed);
+    }
+
     if (gpsMapLine[PathPoint]->speed_mode == 2)
     {
         dSpeed = min(25.0,dSpeed);

+ 4 - 2
src/decition/decition_brain_sf_Jeely_xingyueL/decition_brain_sf_Jeely_xingyueL.pro

@@ -35,7 +35,8 @@ SOURCES += $$PWD/../common/main.cpp \
     ../../include/msgtype/fusionobjectarray.pb.cc \
     ../../include/msgtype/fusionobject.pb.cc \
     ../../include/msgtype/carstate.pb.cc \
-    ../../include/msgtype/groupmsg.pb.cc
+    ../../include/msgtype/groupmsg.pb.cc \
+    ../../include/msgtype/groupctrl.pb.cc
 
 
 include($$PWD/../common/common/common.pri)
@@ -99,7 +100,8 @@ HEADERS += \
     ../common/perception_sf/sensor_radar.h \
     ../common/common/sysparam_type.h \
     ../../include/msgtype/carstate.pb.h \
-    ../../include/msgtype/groupmsg.pb.h
+    ../../include/msgtype/groupmsg.pb.h \
+    ../../include/msgtype/groupctrl.pb.h
 
 
 #DEFINES += USE_UTM

+ 12 - 0
src/include/proto/groupctrl.proto

@@ -0,0 +1,12 @@
+syntax = "proto2";
+
+package iv.group;
+
+
+message groupctrl
+{
+	required double fGroupSpeed = 1;  //km/h
+	required double fFrontChange = 2;  //m
+	required double fRearChange = 3;  //m
+}
+