فهرست منبع

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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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;
     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的情况,不考虑车道宽度变化
 //暂不考虑多个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;
     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)
     if(xps.mnStartLaneSel > 0)
@@ -1993,7 +2084,7 @@ static std::vector<PlanPoint> GetPlanPoint(std::vector<pathsection> xpathsection
                                           Road * pRoad_obj,GeometryBlock * pgeob_obj,
                                           Road * pRoad_obj,GeometryBlock * pgeob_obj,
                                            const double x_now,const double y_now,const double head,
                                            const double x_now,const double y_now,const double head,
                                            double nearx,double neary, double nearhead,
                                            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;
   std::vector<PlanPoint> xvectorPPs;
@@ -2002,7 +2093,7 @@ static std::vector<PlanPoint> GetPlanPoint(std::vector<pathsection> xpathsection
 
 
   int indexstart = indexinroadpoint(xvectorPP,nearx,neary);
   int indexstart = indexinroadpoint(xvectorPP,nearx,neary);
   int i;
   int i;
-  std::vector<PlanPoint> xvPP = GetLanePoint(xpathsection[0],xvectorPP);
+  std::vector<PlanPoint> xvPP = GetLanePoint(xpathsection[0],xvectorPP,fvehiclewidth);
 
 
   if(xpathsection[0].mainsel < 0)
   if(xpathsection[0].mainsel < 0)
   {
   {
@@ -2046,7 +2137,7 @@ static std::vector<PlanPoint> GetPlanPoint(std::vector<pathsection> xpathsection
           }
           }
       }
       }
       xvectorPP = GetPoint( xpathsection[i].mpRoad);
       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;
 //      std::cout<<" road id is "<<xpathsection[i].mpRoad->GetRoadId().data()<<" size is "<<xvPP.size()<<std::endl;
       int j;
       int j;
       for(j=0;j<xvPP.size();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);
   xvectorPP = GetPoint(xpathsection[npathlast].mpRoad);
   int indexend = indexinroadpoint(xvectorPP,nearx_obj,neary_obj);
   int indexend = indexinroadpoint(xvectorPP,nearx_obj,neary_obj);
-  xvPP = GetLanePoint(xpathsection[npathlast],xvectorPP);
+  xvPP = GetLanePoint(xpathsection[npathlast],xvectorPP,fvehiclewidth);
   int nlastsize;
   int nlastsize;
   if(xpathsection[npathlast].mainsel<0)
   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,
 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 x_obj,const double y_obj,const double & obj_dis,
              const double srcnearthresh,const double dstnearthresh,
              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  s;double nearx;
     double  neary;double  nearhead;
     double  neary;double  nearhead;
@@ -2371,6 +2462,11 @@ int MakePlan(xodrdijkstra * pxd,OpenDrive * pxodr,const double x_now,const doubl
                     i--;
                     i--;
                 }
                 }
             }
             }
+
+            pathsection xps;
+            xps.mbStartToMainChange = false;
+            xps.mbMainToEndChange = false;
+            CalcInLaneAvoid(xps,xvectorPP,fvehiclewidth,0,0,0);
             xPlan = xvectorPP;
             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<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,
     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;
     xPlan = xvectorPP;
 
 

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

@@ -8,6 +8,11 @@
 class PlanPoint
 class PlanPoint
 {
 {
 public:
 public:
+    bool bInlaneAvoid = false;
+    double mx_left;
+    double my_left;
+    double mx_right;
+    double my_right;
     double x;
     double x;
     double y;
     double y;
     double speed;
     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,
 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 x_obj,const double y_obj,const double & obj_dis,
              const double srcnearthresh,const double dstnearthresh,
              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
 #endif // GLOBALPLAN_H

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

@@ -51,12 +51,22 @@ namespace iv {
         int roadSum;
         int roadSum;
         int roadOri;
         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 glat0,glon0,ghead0;
 
 
+double gvehiclewidth = 2.0;
+
 void * gpa;
 void * gpa;
 void * gpasrc;
 void * gpasrc;
 void * gpmap;
 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,
 void CalcLatLon(const double lat0,const double lon0,const double hdg0,
                 const double x,const double y,const double xyhdg,
                 const double x,const double y,const double xyhdg,
                 double &lat,double & lon, double & hdg)
                 double &lat,double & lon, double & hdg)
@@ -384,10 +399,12 @@ static void ToGPSTrace(std::vector<PlanPoint> xPlan)
         iv::GPSData data(new iv::GPS_INS);
         iv::GPSData data(new iv::GPS_INS);
         CalcLatLon(glat0,glon0,ghead0,xPlan[i].x,xPlan[i].y,xPlan[i].hdg,data->gps_lat,
         CalcLatLon(glat0,glon0,ghead0,xPlan[i].x,xPlan[i].y,xPlan[i].hdg,data->gps_lat,
                    data->gps_lng,data->ins_heading_angle);
                    data->gps_lng,data->ins_heading_angle);
+
         data->index = i;
         data->index = i;
         data->speed = xPlan[i].speed;
         data->speed = xPlan[i].speed;
         GaussProjCal(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);
 
 
+
         givlog->debug(" %d %11.7f %11.7f %11.3f ",i,data->gps_lat,
         givlog->debug(" %d %11.7f %11.7f %11.3f ",i,data->gps_lat,
                data->gps_lng,data->ins_heading_angle);
                data->gps_lng,data->ins_heading_angle);
 
 
@@ -459,10 +476,16 @@ void SetPlan(xodrobj xo)
         iv::GPSData data(new iv::GPS_INS);
         iv::GPSData data(new iv::GPS_INS);
         CalcLatLon(glat0,glon0,ghead0,xPlan[i].x,xPlan[i].y,xPlan[i].hdg,data->gps_lat,
         CalcLatLon(glat0,glon0,ghead0,xPlan[i].x,xPlan[i].y,xPlan[i].hdg,data->gps_lat,
                    data->gps_lng,data->ins_heading_angle);
                    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->index = i;
         data->speed = xPlan[i].speed;
         data->speed = xPlan[i].speed;
  //       ZBGaussProjCal(data->gps_lng,data->gps_lat,&data->gps_x,&data->gps_y);
  //       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,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,
         givlog->verbose(" %d %11.7f %11.7f %11.3f ",i,data->gps_lat,
                data->gps_lng,data->ins_heading_angle);
                data->gps_lng,data->ins_heading_angle);
@@ -474,6 +497,8 @@ void SetPlan(xodrobj xo)
         data->mfLaneWidth = xPlan[i].mWidth;
         data->mfLaneWidth = xPlan[i].mWidth;
         data->mfRoadWidth = xPlan[i].mfRoadWidth;
         data->mfRoadWidth = xPlan[i].mfRoadWidth;
 
 
+        data->mbInLaneAvoid = xPlan[i].bInlaneAvoid;
+
         data->mode2 = xPlan[i].nSignal;
         data->mode2 = xPlan[i].nSignal;
         if(data->mode2 == 3000)
         if(data->mode2 == 3000)
         {
         {
@@ -752,11 +777,15 @@ int main(int argc, char *argv[])
 
 
     std::string strv2xmsg = xp.GetParam("v2xmsg","v2x");
     std::string strv2xmsg = xp.GetParam("v2xmsg","v2x");
 
 
+    std::string strvehiclewidth = xp.GetParam("vehiclewidth","2.0");
+
 
 
     glat0 = atof(strlat0.data());
     glat0 = atof(strlat0.data());
     glon0 = atof(strlon0.data());
     glon0 = atof(strlon0.data());
     ghead0 = atof(strhdg0.data());
     ghead0 = atof(strhdg0.data());
 
 
+    gvehiclewidth = atof(strvehiclewidth.data());
+
 
 
     LoadXODR(strmapth);
     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
     int mnLaneChangeMark = 0; //1 to Left 0 not change   -1 to right
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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;
 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
     int mnLaneChangeMark = 0; //1 to Left 0 not change   -1 to right
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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;
 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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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
     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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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 mfDisToRoadLeft = 1.8; //Distance to Road Left
     double mfRoadWidth = 3.5; // Road Width
     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;
+
 
 
 
 
     };
     };