|
@@ -106,6 +106,7 @@ int obsLostTimeAvoid = 0;
|
|
|
|
|
|
|
|
|
double avoidX =0;
|
|
|
+int turnLampFlag=0; // if <0:left , if >0:right
|
|
|
float roadWidth = 3.5;
|
|
|
int roadSum =10;
|
|
|
int roadNow = 0;
|
|
@@ -1141,6 +1142,21 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if(vehState==normalRun)
|
|
|
+ {
|
|
|
+ if(gpsTraceNow.size()>200){
|
|
|
+ if(gpsTraceNow[200].x<-3){
|
|
|
+ gps_decition->leftlamp = true;
|
|
|
+ gps_decition->rightlamp = false;
|
|
|
+ }else if(gpsTraceNow[200].x>3){
|
|
|
+ gps_decition->leftlamp = false;
|
|
|
+ gps_decition->rightlamp = true;
|
|
|
+ }else{
|
|
|
+ gps_decition->leftlamp = false;
|
|
|
+ gps_decition->rightlamp = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
// dSpeed = getSpeed(gpsTraceNow);
|
|
|
dSpeed =80;
|
|
@@ -1470,13 +1486,14 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
|
|
|
else if (useOldAvoid && avoidDistance>35) { //zj 2021.06.21 gpsTraceNow[60].x)<0.02
|
|
|
// vehState = avoidObs; 0929
|
|
|
vehState = normalRun;
|
|
|
+ turnLampFlag=0;
|
|
|
}
|
|
|
- else if (gpsTraceNow[0].x>0)
|
|
|
+ else if (turnLampFlag>0)
|
|
|
{
|
|
|
gps_decition->leftlamp = false;
|
|
|
gps_decition->rightlamp = true;
|
|
|
}
|
|
|
- else if(gpsTraceNow[0].x<0)
|
|
|
+ else if(turnLampFlag<0)
|
|
|
{
|
|
|
gps_decition->leftlamp = true;
|
|
|
gps_decition->rightlamp = false;
|
|
@@ -1496,6 +1513,7 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
|
|
|
//若车辆到达变道后的路径,改变车辆状态,关闭frenet规划
|
|
|
if (useFrenet && abs(gpsTraceAim[0].x)<1.0) {
|
|
|
vehState = normalRun;
|
|
|
+ turnLampFlag=0;
|
|
|
// useFrenet = false;
|
|
|
// useOldAvoid = true;
|
|
|
}
|
|
@@ -1503,12 +1521,12 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
|
|
|
// vehState = avoidObs; 0929
|
|
|
vehState = normalRun;
|
|
|
}
|
|
|
- else if (gpsTraceNow[0].x>0)
|
|
|
+ else if (turnLampFlag>0)
|
|
|
{
|
|
|
gps_decition->leftlamp = false;
|
|
|
gps_decition->rightlamp = true;
|
|
|
}
|
|
|
- else if (gpsTraceNow[0].x<0)
|
|
|
+ else if (turnLampFlag<0)
|
|
|
{
|
|
|
gps_decition->leftlamp = true;
|
|
|
gps_decition->rightlamp = false;
|
|
@@ -1540,6 +1558,14 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
|
|
|
roadNow = roadPre;
|
|
|
// avoidX = (roadOri - roadNow)*roadWidth;
|
|
|
avoidX=computeAvoidX(roadNow,roadOri,gpsMapLine[PathPoint],ServiceCarStatus.msysparam.vehWidth);
|
|
|
+
|
|
|
+ if(avoidX<0)
|
|
|
+ turnLampFlag<0;
|
|
|
+ else if(avoidX>0)
|
|
|
+ turnLampFlag>0;
|
|
|
+ else
|
|
|
+ turnLampFlag=0;
|
|
|
+
|
|
|
if(useOldAvoid){
|
|
|
//gpsTraceNow = getGpsTraceOffset(gpsTraceOri, avoidX);
|
|
|
gpsTraceAvoidXY.clear();
|
|
@@ -1691,6 +1717,14 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
|
|
|
roadNow = roadPre;
|
|
|
// avoidX = (roadOri - roadNow)*roadWidth;
|
|
|
avoidX=computeAvoidX(roadNow,roadOri,gpsMapLine[PathPoint],ServiceCarStatus.msysparam.vehWidth);
|
|
|
+
|
|
|
+ if(avoidX<0)
|
|
|
+ turnLampFlag<0;
|
|
|
+ else if(avoidX>0)
|
|
|
+ turnLampFlag>0;
|
|
|
+ else
|
|
|
+ turnLampFlag=0;
|
|
|
+
|
|
|
gpsTraceNow.clear();
|
|
|
//gpsTraceNow = getGpsTraceOffset(gpsTraceOri, avoidX);
|
|
|
gpsTraceAvoidXY.clear();
|