Переглянути джерело

chang driver/driver_map_xodrload for add in Lane Avoid trace. change all gps_type.h for add in lane avoid var.

yuchuli 4 роки тому
батько
коміт
6945aedb20

+ 10 - 0
src/decition/common/common/gps_type.h

@@ -58,6 +58,16 @@ namespace iv {
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
 
 
     };

+ 10 - 0
src/decition/decition_external/gps_type.h

@@ -58,6 +58,16 @@ namespace iv {
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
 
 
     };

+ 10 - 0
src/detection/detection_ndt_slam_hcp2/common/gps_type.h

@@ -58,6 +58,16 @@ struct GPS_INS
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
 
 
 };

+ 10 - 0
src/driver/driver_map_trace/gps_type.h

@@ -58,6 +58,16 @@ namespace iv {
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
 
 
     };

+ 104 - 8
src/driver/driver_map_xodrload/globalplan.cpp

@@ -1513,8 +1513,99 @@ std::vector<int> GetLWIndex(std::vector<iv::lanewidthabcd> xvectorLWA,int nlane)
     return xvectorindex;
 }
 
+
+void CalcInLaneAvoid(pathsection xps,std::vector<PlanPoint> & xvectorPP,const double fvehiclewidth,
+                     const int nchang1,const int nchang2,const int nchangpoint)
+{
+    if(xvectorPP.size()<2)return;
+    bool bInlaneavoid = false;
+    int i;
+    if((xps.mbStartToMainChange == false) && (xps.mbMainToEndChange == false))
+    {
+        if(xps.mpRoad->GetRoadLength()<30)
+        {
+            double hdgdiff = xvectorPP.at(xvectorPP.size()-1).hdg - xvectorPP.at(0).hdg;
+            if(hdgdiff<0)hdgdiff = hdgdiff + 2.0*M_PI;
+            if(hdgdiff>(M_PI/3.0)&&(hdgdiff<(5.0*M_PI/3.0)))
+                bInlaneavoid = false;
+            else
+                bInlaneavoid = true;
+        }
+        else
+        {
+            bInlaneavoid = true;
+        }
+    }
+    else
+    {
+        if(xps.mpRoad->GetRoadLength()>100)bInlaneavoid = true;
+    }
+
+    if(bInlaneavoid == false)
+    {
+        int nvpsize = xvectorPP.size();
+        for(i=0;i<nvpsize;i++)
+        {
+            xvectorPP.at(i).bInlaneAvoid = false;
+            xvectorPP.at(i).mx_left = xvectorPP.at(i).x;
+            xvectorPP.at(i).my_left = xvectorPP.at(i).y;
+            xvectorPP.at(i).mx_right = xvectorPP.at(i).x;
+            xvectorPP.at(i).my_right = xvectorPP.at(i).y;
+        }
+    }
+    else
+    {
+      int nvpsize = xvectorPP.size();
+      for(i=0;i<nvpsize;i++)xvectorPP.at(i).bInlaneAvoid = true;
+      if((xps.mbStartToMainChange == true)||(xps.mbMainToEndChange == true))
+      {
+          if(xps.mbStartToMainChange == true)
+          {
+              for(i=(nchang1 - nchangpoint/2);i<(nchang1 + nchangpoint/2);i++)
+              {
+                  if((i>=0)&&(i<nvpsize))
+                    xvectorPP.at(i).bInlaneAvoid = false;
+              }
+
+          }
+          if(xps.mbMainToEndChange)
+          {
+              for(i=(nchang2 - nchangpoint/2);i<(nchang2 + nchangpoint/2);i++)
+              {
+                  if((i>=0)&&(i<nvpsize))
+                    xvectorPP.at(i).bInlaneAvoid = false;
+              }
+          }
+      }
+
+      for(i=0;i<nvpsize;i++)
+      {
+          if(xvectorPP.at(i).bInlaneAvoid)
+          {
+              double foff = xvectorPP.at(i).mfDisToLaneLeft -0.3-fvehiclewidth*0.5; //30cm + 0.5vehcilewidth
+              if(foff < 0.3)
+              {
+                  xvectorPP.at(i).bInlaneAvoid = false;
+                  xvectorPP.at(i).mx_left = xvectorPP.at(i).x;
+                  xvectorPP.at(i).my_left = xvectorPP.at(i).y;
+                  xvectorPP.at(i).mx_right = xvectorPP.at(i).x;
+                  xvectorPP.at(i).my_right = xvectorPP.at(i).y;
+              }
+              else
+              {
+                  xvectorPP.at(i).mx_left = xvectorPP.at(i).x + foff * cos(xvectorPP.at(i).hdg + M_PI/2.0);
+                  xvectorPP.at(i).my_left = xvectorPP.at(i).y + foff * sin(xvectorPP.at(i).hdg + M_PI/2.0);
+                  xvectorPP.at(i).mx_right = xvectorPP.at(i).x + foff * cos(xvectorPP.at(i).hdg - M_PI/2.0);
+                  xvectorPP.at(i).my_right = xvectorPP.at(i).y + foff * sin(xvectorPP.at(i).hdg - M_PI/2.0);
+              }
+          }
+      }
+    }
+
+}
+
 //暂不考虑多个LaneSection的情况,不考虑车道宽度变化
-std::vector<PlanPoint> GetLanePoint(pathsection xps,std::vector<PlanPoint> xvPP)
+std::vector<PlanPoint> GetLanePoint(pathsection xps,std::vector<PlanPoint> xvPP,const double fvehiclewidth)
 {
     std::vector<PlanPoint> xvectorPP;
 
@@ -1920,7 +2011,7 @@ std::vector<PlanPoint> GetLanePoint(pathsection xps,std::vector<PlanPoint> xvPP)
 
 
 
-
+    CalcInLaneAvoid(xps,xvectorPP,fvehiclewidth,nchange1,nchange2,nchangepoint);
 
 
     if(xps.mnStartLaneSel > 0)
@@ -1993,7 +2084,7 @@ static std::vector<PlanPoint> GetPlanPoint(std::vector<pathsection> xpathsection
                                           Road * pRoad_obj,GeometryBlock * pgeob_obj,
                                            const double x_now,const double y_now,const double head,
                                            double nearx,double neary, double nearhead,
-                                           double nearx_obj,double  neary_obj)
+                                           double nearx_obj,double  neary_obj,const double fvehiclewidth)
 {
 
   std::vector<PlanPoint> xvectorPPs;
@@ -2002,7 +2093,7 @@ static std::vector<PlanPoint> GetPlanPoint(std::vector<pathsection> xpathsection
 
   int indexstart = indexinroadpoint(xvectorPP,nearx,neary);
   int i;
-  std::vector<PlanPoint> xvPP = GetLanePoint(xpathsection[0],xvectorPP);
+  std::vector<PlanPoint> xvPP = GetLanePoint(xpathsection[0],xvectorPP,fvehiclewidth);
 
   if(xpathsection[0].mainsel < 0)
   {
@@ -2046,7 +2137,7 @@ static std::vector<PlanPoint> GetPlanPoint(std::vector<pathsection> xpathsection
           }
       }
       xvectorPP = GetPoint( xpathsection[i].mpRoad);
-      xvPP = GetLanePoint(xpathsection[i],xvectorPP);
+      xvPP = GetLanePoint(xpathsection[i],xvectorPP,fvehiclewidth);
 //      std::cout<<" road id is "<<xpathsection[i].mpRoad->GetRoadId().data()<<" size is "<<xvPP.size()<<std::endl;
       int j;
       for(j=0;j<xvPP.size();j++)
@@ -2056,7 +2147,7 @@ static std::vector<PlanPoint> GetPlanPoint(std::vector<pathsection> xpathsection
   }
   xvectorPP = GetPoint(xpathsection[npathlast].mpRoad);
   int indexend = indexinroadpoint(xvectorPP,nearx_obj,neary_obj);
-  xvPP = GetLanePoint(xpathsection[npathlast],xvectorPP);
+  xvPP = GetLanePoint(xpathsection[npathlast],xvectorPP,fvehiclewidth);
   int nlastsize;
   if(xpathsection[npathlast].mainsel<0)
   {
@@ -2254,7 +2345,7 @@ void checktrace(std::vector<PlanPoint> & xPlan)
 int MakePlan(xodrdijkstra * pxd,OpenDrive * pxodr,const double x_now,const double y_now,const double head,
              const double x_obj,const double y_obj,const double & obj_dis,
              const double srcnearthresh,const double dstnearthresh,
-             const int nlanesel,std::vector<PlanPoint> & xPlan)
+             const int nlanesel,std::vector<PlanPoint> & xPlan,const double fvehiclewidth )
 {
     double  s;double nearx;
     double  neary;double  nearhead;
@@ -2371,6 +2462,11 @@ int MakePlan(xodrdijkstra * pxd,OpenDrive * pxodr,const double x_now,const doubl
                     i--;
                 }
             }
+
+            pathsection xps;
+            xps.mbStartToMainChange = false;
+            xps.mbMainToEndChange = false;
+            CalcInLaneAvoid(xps,xvectorPP,fvehiclewidth,0,0,0);
             xPlan = xvectorPP;
 
         }
@@ -2382,7 +2478,7 @@ int MakePlan(xodrdijkstra * pxd,OpenDrive * pxodr,const double x_now,const doubl
     std::vector<pathsection> xpathsection = pxd->getgpspoint(atoi(pRoad->GetRoadId().data()),lr_start,atoi(pRoad_obj->GetRoadId().data()),lr_end,xpath,nlanesel);
 
     std::vector<PlanPoint> xvectorPP = GetPlanPoint(xpathsection,pRoad,pgeob,pRoad_obj,pgeob_obj,x_now,y_now,
-                 head,nearx,neary,nearhead,nearx_obj,neary_obj);
+                 head,nearx,neary,nearhead,nearx_obj,neary_obj,fvehiclewidth);
 
     xPlan = xvectorPP;
 

+ 6 - 1
src/driver/driver_map_xodrload/globalplan.h

@@ -8,6 +8,11 @@
 class PlanPoint
 {
 public:
+    bool bInlaneAvoid = false;
+    double mx_left;
+    double my_left;
+    double mx_right;
+    double my_right;
     double x;
     double y;
     double speed;
@@ -34,5 +39,5 @@ int GetNearPoint(const double x,const double y,OpenDrive * pxodr,Road ** pObjRoa
 int MakePlan(xodrdijkstra * pxd,OpenDrive * pxodr,const double x_now,const double y_now,const double head,
              const double x_obj,const double y_obj,const double & obj_dis,
              const double srcnearthresh,const double dstnearthresh,
-             const int nlanesel,std::vector<PlanPoint> & xPlan);
+             const int nlanesel,std::vector<PlanPoint> & xPlan,const double fvehiclewidth = 2.0);
 #endif // GLOBALPLAN_H

+ 16 - 6
src/driver/driver_map_xodrload/gps_type.h

@@ -51,12 +51,22 @@ namespace iv {
         int roadSum;
         int roadOri;
 
-    double mfLaneWidth = 3.5; // Current Lane Width
-
-    double mfDisToLaneLeft = 1.8; //Distance to Lane Left
-    int mnLaneChangeMark = 0; //1 to Left 0 not change   -1 to right
-    double mfDisToRoadLeft = 1.8; //Distance to Road Left
-    double mfRoadWidth = 3.5; // Road Width
+        double mfLaneWidth = 3.5; // Current Lane Width
+
+        double mfDisToLaneLeft = 1.8; //Distance to Lane Left
+        int mnLaneChangeMark = 0; //1 to Left 0 not change   -1 to right
+        double mfDisToRoadLeft = 1.8; //Distance to Road Left
+        double mfRoadWidth = 3.5; // Road Width
+
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
 
 
 

+ 29 - 0
src/driver/driver_map_xodrload/main.cpp

@@ -33,6 +33,8 @@ bool gmapload = false;
 
 double glat0,glon0,ghead0;
 
+double gvehiclewidth = 2.0;
+
 void * gpa;
 void * gpasrc;
 void * gpmap;
@@ -268,6 +270,19 @@ void CalcXY(const double lat0,const double lon0,const double hdg0,
 //}
 
 
+void CalcLatLon(const double lat0,const double lon0,
+                const double x,const double y,
+                double &lat,double & lon)
+{
+    double x0,y0;
+    GaussProjCal(lon0,lat0,&x0,&y0);
+    double x_gps,y_gps;
+    x_gps = x0+x;
+    y_gps = y0+y;
+    GaussProjInvCal(x_gps,y_gps,&lon,&lat);
+}
+
+
 void CalcLatLon(const double lat0,const double lon0,const double hdg0,
                 const double x,const double y,const double xyhdg,
                 double &lat,double & lon, double & hdg)
@@ -384,10 +399,12 @@ static void ToGPSTrace(std::vector<PlanPoint> xPlan)
         iv::GPSData data(new iv::GPS_INS);
         CalcLatLon(glat0,glon0,ghead0,xPlan[i].x,xPlan[i].y,xPlan[i].hdg,data->gps_lat,
                    data->gps_lng,data->ins_heading_angle);
+
         data->index = i;
         data->speed = xPlan[i].speed;
         GaussProjCal(data->gps_lng,data->gps_lat,&data->gps_x,&data->gps_y);
 
+
         givlog->debug(" %d %11.7f %11.7f %11.3f ",i,data->gps_lat,
                data->gps_lng,data->ins_heading_angle);
 
@@ -459,10 +476,16 @@ void SetPlan(xodrobj xo)
         iv::GPSData data(new iv::GPS_INS);
         CalcLatLon(glat0,glon0,ghead0,xPlan[i].x,xPlan[i].y,xPlan[i].hdg,data->gps_lat,
                    data->gps_lng,data->ins_heading_angle);
+        CalcLatLon(glat0,glon0,xPlan[i].mx_left,xPlan[i].my_left,
+                   data->gps_lat_avoidleft,data->gps_lng_avoidleft);
+        CalcLatLon(glat0,glon0,xPlan[i].mx_right,xPlan[i].my_right,
+                   data->gps_lat_avoidright,data->gps_lng_avoidright);
         data->index = i;
         data->speed = xPlan[i].speed;
  //       ZBGaussProjCal(data->gps_lng,data->gps_lat,&data->gps_x,&data->gps_y);
         GaussProjCal(data->gps_lng,data->gps_lat,&data->gps_x,&data->gps_y);
+        GaussProjCal(data->gps_lng_avoidleft,data->gps_lat_avoidleft,&data->gps_x_avoidleft,&data->gps_y_avoidleft);
+        GaussProjCal(data->gps_lng_avoidright,data->gps_lat_avoidright,&data->gps_x_avoidright,&data->gps_y_avoidright);
 
         givlog->verbose(" %d %11.7f %11.7f %11.3f ",i,data->gps_lat,
                data->gps_lng,data->ins_heading_angle);
@@ -474,6 +497,8 @@ void SetPlan(xodrobj xo)
         data->mfLaneWidth = xPlan[i].mWidth;
         data->mfRoadWidth = xPlan[i].mfRoadWidth;
 
+        data->mbInLaneAvoid = xPlan[i].bInlaneAvoid;
+
         data->mode2 = xPlan[i].nSignal;
         if(data->mode2 == 3000)
         {
@@ -752,11 +777,15 @@ int main(int argc, char *argv[])
 
     std::string strv2xmsg = xp.GetParam("v2xmsg","v2x");
 
+    std::string strvehiclewidth = xp.GetParam("vehiclewidth","2.0");
+
 
     glat0 = atof(strlat0.data());
     glon0 = atof(strlon0.data());
     ghead0 = atof(strhdg0.data());
 
+    gvehiclewidth = atof(strvehiclewidth.data());
+
 
     LoadXODR(strmapth);
 

+ 11 - 0
src/driver/driver_radio_collision/gps_type.h

@@ -57,6 +57,17 @@ struct GPS_INS
     int mnLaneChangeMark = 0; //1 to Left 0 not change   -1 to right
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
+
+
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
 };
 
 typedef boost::shared_ptr<iv::GPS_INS> GPSData;

+ 11 - 0
src/driver/driver_radio_p900/gps_type.h

@@ -57,6 +57,17 @@ struct GPS_INS
     int mnLaneChangeMark = 0; //1 to Left 0 not change   -1 to right
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
+
+
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
 };
 
 typedef boost::shared_ptr<iv::GPS_INS> GPSData;

+ 10 - 0
src/tool/data_serials/gps_type.h

@@ -58,6 +58,16 @@ struct GPS_INS
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
 
 
 };

+ 11 - 0
src/tool/ivmapmake/common/gps_type.h

@@ -59,6 +59,17 @@ namespace iv {
     double mfRoadWidth = 3.5; // Road Width
 
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
+
 
     };
 

+ 10 - 0
src/tool/ivmapmake_sharemem/common/gps_type.h

@@ -58,6 +58,16 @@ namespace iv {
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
 
 
     };

+ 10 - 0
src/tool/map_lanetoxodr/gps_type.h

@@ -58,6 +58,16 @@ namespace iv {
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
 
 
     };

+ 10 - 0
src/tool/map_lanetoxodr_graphscene/gps_type.h

@@ -58,6 +58,16 @@ namespace iv {
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
 
 
     };

+ 10 - 0
src/tool/tool_mapcreate/gps_type.h

@@ -58,6 +58,16 @@ namespace iv {
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
 
 
     };

+ 10 - 0
src/tool/tool_xodrobj/gps_type.h

@@ -58,6 +58,16 @@ namespace iv {
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+    bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+    double gps_lat_avoidleft;
+    double gps_lng_avoidleft;
+    double gps_lat_avoidright;
+    double gps_lng_avoidright;
+    double gps_x_avoidleft = 0;
+    double gps_y_avoidleft = 0;
+    double gps_x_avoidright = 0;
+    double gps_y_avoidright = 0;
+
 
 
     };

+ 10 - 0
src/tool/tracetoxodr/gps_type.h

@@ -58,6 +58,16 @@ namespace iv {
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
 
 
     };

+ 10 - 0
src/ui/ui_ads_hmi/common/gps_type.h

@@ -58,6 +58,16 @@ struct GPS_INS
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
 
 
 };

+ 10 - 0
src/v2x/platform/common/gps_type.h

@@ -58,6 +58,16 @@ namespace iv {
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
 
 
     };

+ 10 - 0
src/v2x/v2xTcpClient/gps_type.h

@@ -58,6 +58,16 @@ namespace iv {
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
 
+        bool mbInLaneAvoid = false; //if true suport In Lane Avoid
+        double gps_lat_avoidleft;
+        double gps_lng_avoidleft;
+        double gps_lat_avoidright;
+        double gps_lng_avoidright;
+        double gps_x_avoidleft = 0;
+        double gps_y_avoidleft = 0;
+        double gps_x_avoidright = 0;
+        double gps_y_avoidright = 0;
+
 
 
     };