Browse Source

change decition_brain_sf_Jeely_xingyueL. add front car accelecrate when after car near.

yuchuli 1 year ago
parent
commit
e55c359c8d

+ 1 - 1
src/decition/decition_brain_sf_Jeely_xingyueL/decition/decide_gps_00.cpp

@@ -1052,7 +1052,7 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
     {
         if(bgroupgrpc)
         {
-            double fdec_after = mGroupSpeedCtrl.Getmindec(xgroupgrpcinfo,gpsMapLine,PathPoint);
+            double fdec_after = mGroupSpeedCtrl.Getmindec(xgroupgrpcinfo,gpsMapLine,PathPoint,secSpeed);
             if((fdec_after<-0.001)&(fdec_after < minDecelerate))
             {
                 minDecelerate = fdec_after;

+ 16 - 1
src/decition/decition_brain_sf_Jeely_xingyueL/decition/groupspeedctrl.cpp

@@ -12,7 +12,7 @@ GroupSpeedCtrl::GroupSpeedCtrl()
 
 
 double GroupSpeedCtrl::Getmindec(iv::group::groupinfo & xgroupinfo,
-                                 const std::vector<GPSData> & gpsMapLine,int PathPoint)
+                                 const std::vector<GPSData> & gpsMapLine,int PathPoint ,double fsecspeednow)
 {
 
     iv::group::vehicleinfo * pvehaffter = NULL;  //a vehicle after current vehicle
@@ -91,6 +91,21 @@ double GroupSpeedCtrl::Getmindec(iv::group::groupinfo & xgroupinfo,
     double dis_startdec = mfDis_StartDec_Next;  //if > 50 start wait
     double dis_maxdec = mfDis_MaxDec_Next;  //if > 60  max dec
 
+    double fslowdis = fdistocur - dis_startdec;
+
+    if(fslowdis > 0)
+    {
+        double fafterspeed = pvehaffter->mgpsimu().speed();
+        if(fafterspeed > fsecspeednow)
+        {
+            if((pow((fafterspeed - fsecspeednow),2)/2.0) > fslowdis)
+            {
+                return 0.0; //If after vechicle speed is fast
+            }
+        }
+    }
+
+
     if(fdistocur>=dis_maxdec)return decmax;
     else
     {

+ 1 - 1
src/decition/decition_brain_sf_Jeely_xingyueL/decition/groupspeedctrl.h

@@ -20,7 +20,7 @@ public:
 
 public:
     double Getmindec(iv::group::groupinfo & xgroupinfo,
-                     const std::vector<GPSData> & gpsMapLine,int PathPoint);
+                     const std::vector<GPSData> & gpsMapLine,int PathPoint,double fsecspeednow);
 
     double  Getmindec_front(iv::group::groupinfo & xgroupinfo,
                             const std::vector<GPSData> & gpsMapLine,int PathPoint);