Browse Source

change decition_brain_sf.

yuchuli 1 year ago
parent
commit
17ef879bd4

+ 23 - 1
src/decition/decition_brain_sf_changan_shenlan/decition/brain.cpp

@@ -100,6 +100,7 @@ iv::decition::BrainDecition::BrainDecition()
 
     mpaVechicleState = iv::modulecomm::RegisterSend(gstrmembrainstate.data(),10000,10);
     mpaCarstate      = iv::modulecomm::RegisterSend(gstrmembraincarstate.data(),10000,10);
+    mpaBrainRunState = iv::modulecomm::RegisterSend("brainrunstate",10000,1);
 
     mpfusion         = iv::modulecomm::RegisterRecv("li_ra_fusion",ListenFusion);
 
@@ -756,6 +757,10 @@ void iv::decition::BrainDecition::run() {
             ShareBrainstate(xbs);
             ShareDecition(decition_gps);
 
+            iv::brain::brainrunstate xbr;
+            xbr.set_decision_period(decision_period);
+            ShareBrainRunState(xbr);
+
             iv::brain::carstate car_xbs;
             car_xbs.set_mstate(ServiceCarStatus.mvehState);
             car_xbs.set_mavoidx(ServiceCarStatus.mavoidX);
@@ -1042,8 +1047,25 @@ void iv::decition::BrainDecition::ShareDecition(iv::decition::Decition decition)
     }
 }
 
-void iv::decition::BrainDecition::ShareBrainstate(iv::brain::brainstate xbs)
+void iv::decition::BrainDecition::ShareBrainRunState(iv::brain::brainrunstate &xbs)
+{
+    int nsize = xbs.ByteSize();
+    char * str = new char[nsize];
+    std::shared_ptr<char> pstr;
+    pstr.reset(str);
+    if(xbs.SerializeToArray(str,nsize))
+    {
+        iv::modulecomm::ModuleSendMsg(mpaBrainRunState,str,nsize);
+    }
+    else
+    {
+        std::cout<<"iv::decition::BrainDecition::ShareBrainstate serialize error."<<std::endl;
+    }
+}
+
+void iv::decition::BrainDecition::ShareBrainstate(iv::brain::brainstate & xbs)
 {
+
     int nsize = xbs.ByteSize();
     char * str = new char[nsize];
     std::shared_ptr<char> pstr;

+ 4 - 1
src/decition/decition_brain_sf_changan_shenlan/decition/brain.h

@@ -50,6 +50,7 @@
 #include "groupmsg.pb.h"
 #include "cameraobject.pb.h"
 #include "cameraobjectarray.pb.h"
+#include "brainrunstate.pb.h"
 
 #include "fanyaapi.h"
 
@@ -136,11 +137,13 @@ namespace iv {
             void * mpaCarstate;
             void * mpv2r;//20211009,cxw
             void * mpaTrafficSign;//20230814,交通标志牌识别数据更新计时
+            void * mpaBrainRunState;
 
 
             void ShareDecition(iv::decition::Decition decition);
-            void ShareBrainstate(iv::brain::brainstate xbs);
+            void ShareBrainstate(iv::brain::brainstate & xbs);
             void ShareBraincarstate(iv::brain::carstate xbs);
+            void ShareBrainRunState(iv::brain::brainrunstate & xbs);
 
         private:
             void * mpaHMI;

+ 10 - 2
src/decition/decition_brain_sf_changan_shenlan/decition/decide_gps_00.cpp

@@ -1989,9 +1989,17 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
     //shiyanbizhang 0929
     if(obsDistance>0&& (obsDistance<ServiceCarStatus.aocfDis)&&(obs_speed_for_avoid>-8.0)&&(obs_speed_for_avoid<3.0)&&(realspeed>0.01)//&& (avoid_speed_flag==true)        //
             &&(vehState==normalRun||vehState==backOri || vehState==avoiding) //&&(ObsTimeStart==-1)
-            && (gpsMapLine[PathPoint]->runMode==1)&& (road_permit_avoid==true)&&(gpsMapLine[PathPoint]->mode2!=3000)&&(gpsMapLine[PathPoint+300]->mode2!=3000)&&(gpsMapLine[PathPoint+100]->mode2!=3000)&&(gpsMapLine[PathPoint+300]->mode2!=23)){
+            && (gpsMapLine[PathPoint]->runMode==1)&& (road_permit_avoid==true)&&(gpsMapLine[PathPoint]->mode2!=3000)){
         //        ObsTimeStart=GetTickCount();
-        ObsTimeEnd+=1.0;
+        if((PathPoint + 300)<gpsMapLine.size())
+        {
+            if((gpsMapLine[PathPoint+300]->mode2!=3000)&&(gpsMapLine[PathPoint+100]->mode2!=3000)&&(gpsMapLine[PathPoint+300]->mode2!=23))
+            {
+                ObsTimeEnd+=1.0;
+            }
+
+        }
+
         //dSpeed = min(6.0,dSpeed);
         cout<<"\n====================preAvoid time count start==================\n"<<endl;
     }

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

@@ -36,7 +36,8 @@ SOURCES += $$PWD/../common/main.cpp \
     ../../include/msgtype/v2r.pb.cc \
     ../../include/msgtype/cameraobjectarray.pb.cc\
     ../../include/msgtype/cameraobject.pb.cc\
-    ../../include/msgtype/groupmsg.pb.cc
+    ../../include/msgtype/groupmsg.pb.cc \
+    ../../include/msgtype/brainrunstate.pb.cc
 
 include($$PWD/../common/common/common.pri)
 include($$PWD/decition/decition.pri)
@@ -102,6 +103,7 @@ HEADERS += \
     ../../include/msgtype/v2r.pb.h \
     ../../include/msgtype/cameraobjectarray.pb.h\
     ../../include/msgtype/cameraobject.pb.h\
-    ../../include/msgtype/groupmsg.pb.h
+    ../../include/msgtype/groupmsg.pb.h \
+    ../../include/msgtype/brainrunstate.pb.h
 
 

+ 8 - 0
src/include/proto/brainrunstate.proto

@@ -0,0 +1,8 @@
+syntax = "proto2";
+
+package iv.brain;
+
+message brainrunstate
+{
+  required double decision_period= 1; 
+};

+ 22 - 3
src/ui/ui_ads_hmi/ADCIntelligentVehicle.cpp

@@ -368,12 +368,17 @@ ADCIntelligentVehicle::ADCIntelligentVehicle(QWidget *parent)
     mpachassis = iv::modulecomm::RegisterRecvPlus("chassis",funchassis);
 
     mpacanstate = iv::modulecomm::RegisterRecv("canstate",ListenCANState);
-    gIvlog->debug("canState ptr: %x",mpacanstate);
+//    gIvlog->debug("canState ptr: %x",mpacanstate);
+
 
     ModuleFun funbrainstate =std::bind(&ADCIntelligentVehicle::UpdateVehicleState,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5);
    // mpaVechicleState = iv::modulecomm::RegisterRecvPlus("vehiclestate",funbrainstate);
     mpaVechicleState = iv::modulecomm::RegisterRecvPlus("brainstate",funbrainstate);
 
+    ModuleFun funbrainrunstate =std::bind(&ADCIntelligentVehicle::UpdateBrainRunState,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5);
+   // mpaVechicleState = iv::modulecomm::RegisterRecvPlus("vehiclestate",funbrainstate);
+    void * parun = iv::modulecomm::RegisterRecvPlus("brainrunstate",funbrainrunstate);
+
     ModuleFun fundecition =std::bind(&ADCIntelligentVehicle::UpdateDecition,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5);
 
 //    mpaDecition = iv::modulecomm::RegisterRecvPlus("decition",fundecition);
@@ -1942,7 +1947,8 @@ void ADCIntelligentVehicle::UpdateGPSIMU(const char * strdata,const unsigned int
 
     ServiceCarStatus.speed = data->speed;
 
-    std::cout<<" speed : "<<ServiceCarStatus.speed;
+//    std::cout<<"chrono: "<<std::chrono::system_clock::now().time_since_epoch().count()/1000000<<std::endl;
+//    std::cout<<" speed : "<<ServiceCarStatus.speed;
 
     ServiceCarStatus.location->gps_lat = data->gps_lat;
     ServiceCarStatus.location->gps_lng = data->gps_lng;
@@ -2074,6 +2080,18 @@ void ADCIntelligentVehicle::UpdateDecition(const char * strdata,const unsigned i
     mnTimeUpdateDecition = mTimeState.elapsed();
 }
 
+
+void ADCIntelligentVehicle::UpdateBrainRunState(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
+{
+    iv::brain::brainrunstate xbrainstate;
+    if(!xbrainstate.ParseFromArray(strdata,nSize))
+    {
+        gIvlog->warn("ADCIntelligentVehicle::UpdateVehicleState parse error,nSize is %d ",nSize);
+        return;
+    }
+    mdecition_period =  xbrainstate.decision_period();
+    qDebug("period: %f ",mdecition_period);
+}
 /**
  * @brief ADCIntelligentVehicle::UpdateVehicleState
  * @param strdata
@@ -2096,7 +2114,8 @@ void ADCIntelligentVehicle::UpdateVehicleState(const char * strdata,const unsign
     ServiceCarStatus.mRadarObs = xbrainstate.mfradarobs();
     mbBrainRunning = xbrainstate.mbbrainrunning();
     ServiceCarStatus.mbBrainCtring = xbrainstate.mbbrainrunning();
-    mdecition_period =  xbrainstate.decision_period();
+//    mdecition_period =  xbrainstate.decision_period();
+//    qDebug("period: %f ",mdecition_period);
 
     mnTimeUpdateVS = mTimeState.elapsed();
 }

+ 3 - 0
src/ui/ui_ads_hmi/ADCIntelligentVehicle.h

@@ -71,6 +71,7 @@
 #include "vbox.pb.h"
 #include "fusionobject.pb.h"
 #include "fusionobjectarray.pb.h"
+#include "brainrunstate.pb.h"
 
 extern iv::Ivlog * gIvlog;
 
@@ -355,6 +356,8 @@ private:
 public:
     void UpdateVehicleState(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
 
+    void UpdateBrainRunState(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
+
 private:
     void * mpaHMI;
 /***********20200509****************/

+ 4 - 2
src/ui/ui_ads_hmi/ui_ads_hmi.pro

@@ -40,14 +40,16 @@ SOURCES += \
         ADCIntelligentVehicle.cpp \
     look.cpp \
     mobileye_info.cpp \
-    perceptionoutput.cpp
+    perceptionoutput.cpp \
+    ../../include/msgtype/brainrunstate.pb.cc
 
 HEADERS += \
         ADCIntelligentVehicle.h \
     look.h \
     mobileye_info.h \
     ultrasonic_type.h \
-    perceptionoutput.h
+    perceptionoutput.h \
+    ../../include/msgtype/brainrunstate.pb.h
 
 FORMS += \
         ADCIntelligentVehicle.ui