|
@@ -1911,7 +1911,7 @@ static int file_num;
|
|
|
}
|
|
|
|
|
|
//shiyanbizhang 0929
|
|
|
- if(obsDistance>0&& (obsDistance<ServiceCarStatus.aocfDis)&&(obs_speed_for_avoid>-8.0)&&(obs_speed_for_avoid<3.0)&&(realspeed>1)//&& (avoid_speed_flag==true) //
|
|
|
+ if(obsDistance>0&& (obsDistance<ServiceCarStatus.aocfDis)&&(obs_speed_for_avoid>-8.0)&&(obs_speed_for_avoid<3.0)&&(realspeed>0.1)//&&(realspeed>1)//&& (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)){
|
|
|
// ObsTimeStart=GetTickCount();
|
|
@@ -2021,7 +2021,7 @@ static int file_num;
|
|
|
//computeAvoidBoundary(0,2,4.5,2.4,avoidLeft_p,avoidRight_p);
|
|
|
//avoidLeft_value=-5;
|
|
|
//avoidRight_value=0;
|
|
|
- computeObsBackward(lidarGridPtr,now_gps_ins, gpsMapLine,lidar_per,avoidLeft_value,avoidRight_value);//2020418
|
|
|
+ // computeObsBackward(lidarGridPtr,now_gps_ins, gpsMapLine,lidar_per,avoidLeft_value,avoidRight_value);//2020418
|
|
|
avoidXNewPre=computeAvoidXDistance(lidarGridPtr,now_gps_ins, gpsMapLine,lidar_per,avoidLeft_value,avoidRight_value);
|
|
|
givlog->debug("decition_brain","vehState: %d,roadOri: %d,roadSum: %d,vehWidth: %f,avoidLeft: %d,avoidRight_value: %d,avoidXNewPre: %d",
|
|
|
vehState,roadOri,roadSum,ServiceCarStatus.msysparam.vehWidth,avoidLeft_value,avoidRight_value,avoidXNewPre);
|
|
@@ -2349,12 +2349,11 @@ static int file_num;
|
|
|
|
|
|
if(ServiceCarStatus.msysparam.mvehtype=="haomo")
|
|
|
{
|
|
|
-// if(obsDistance>ServiceCarStatus.socfDis && obsDistance<15)
|
|
|
-// {
|
|
|
-// dSpeed = min(3.0,dSpeed);
|
|
|
-// }
|
|
|
-// else
|
|
|
- if((obsDistance>ServiceCarStatus.socfDis-4) &&obsDistance<ServiceCarStatus.socfDis) //
|
|
|
+ if(obsDistance>ServiceCarStatus.socfDis && obsDistance<15)
|
|
|
+ {
|
|
|
+ dSpeed = min(5.0,dSpeed);
|
|
|
+ }
|
|
|
+ else if((obsDistance>ServiceCarStatus.socfDis-4) &&obsDistance<ServiceCarStatus.socfDis) //
|
|
|
{
|
|
|
// dSpeed=0;
|
|
|
dSpeed = min(3.0,dSpeed);
|
|
@@ -4631,73 +4630,6 @@ void iv::decition::DecideGps00::computeAvoidBoundary(int roadOriginal,int roadSu
|
|
|
|
|
|
int iv::decition::DecideGps00::computeAvoidXDistance(iv::LidarGridPtr lidarGridPtr, GPS_INS now_gps_ins, const std::vector<GPSData> gpsMapLine,std::vector<iv::Perception::PerceptionOutput> lidar_per,int avoidLeft,int avoidRight) {
|
|
|
|
|
|
-// int signed_record_avoidX=0,record_avoidX=20;
|
|
|
-// double obs_cur_distance=500,record_obstacle_distance;
|
|
|
-
|
|
|
-// obs_property.clear();
|
|
|
-// for (int i = avoidLeft; i <= avoidRight; i++)
|
|
|
-// {
|
|
|
-// obsvalue x_value;
|
|
|
-// obsvalue *x=&x_value;
|
|
|
-// x_value.avoid_distance=i;
|
|
|
-// gpsTraceAvoid.clear();
|
|
|
-// gpsTraceAvoid = getGpsTraceOffset(gpsTraceOri, i);
|
|
|
-// computeObsOnRoadNew(lidarGridPtr, gpsTraceAvoid, i,gpsMapLine,lidar_per,x);
|
|
|
-// obs_property.push_back(x_value);
|
|
|
-// if(i==0)
|
|
|
-// obs_cur_distance=x_value.obs_distance;
|
|
|
-// givlog->debug("decition_brain","i: %d,obs:%f",x_value.avoid_distance,x_value.obs_distance);
|
|
|
-// }
|
|
|
-
|
|
|
-// if (lidarGridPtr!=NULL)
|
|
|
-// {
|
|
|
-// hasCheckedAvoidLidar = true;
|
|
|
-// }
|
|
|
-// int record_vector=0;
|
|
|
-// for(int j=0;j<obs_property.size();j++){
|
|
|
-// if(obs_property[j].obs_distance>100){
|
|
|
-// if((signed_record_avoidX<0)&&(obs_property[j].avoid_distance>0)){
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// if(abs(obs_property[j].avoid_distance)<record_avoidX){
|
|
|
-// record_avoidX=abs(obs_property[j].avoid_distance);
|
|
|
-// signed_record_avoidX=obs_property[j].avoid_distance;
|
|
|
-// record_vector=j;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// if((signed_record_avoidX<0)&&(signed_record_avoidX-1>=avoidLeft))
|
|
|
-// {
|
|
|
-// int obs_test=record_vector-1;
|
|
|
-
|
|
|
-// if(obs_property[obs_test].obs_distance>100){
|
|
|
-// signed_record_avoidX-=1;
|
|
|
-// givlog->debug("decition_brain","singrecord_Y: %d",signed_record_avoidX);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// if(front_car_id>0){
|
|
|
-// if((obs_cur_distance<50)&&(front_car.front_car_dis<30)&&(front_car_decide_avoid==true)){
|
|
|
-// signed_record_avoidX=front_car.avoidX;
|
|
|
-// return signed_record_avoidX;
|
|
|
-// }
|
|
|
-
|
|
|
-// if((obs_cur_distance<50)&&(front_car.front_car_dis<150)&&(front_car.avoidX!=0||front_car.vehState!=0)){
|
|
|
-// signed_record_avoidX=front_car.avoidX;
|
|
|
-// return signed_record_avoidX;
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// if((signed_record_avoidX!=0)&&(obs_cur_distance<50))
|
|
|
-// {
|
|
|
-
|
|
|
-// avoidMinDistance= obs_cur_distance + 2*ServiceCarStatus.msysparam.vehLenth;
|
|
|
-// startAvoidGps=now_gps_ins;
|
|
|
-// return signed_record_avoidX;
|
|
|
-// }
|
|
|
-// return 0;
|
|
|
-
|
|
|
- //20200418,add,begin
|
|
|
int signed_record_avoidX=0,record_avoidX=20;
|
|
|
double obs_cur_distance=500,record_obstacle_distance;
|
|
|
|
|
@@ -4720,57 +4652,29 @@ int iv::decition::DecideGps00::computeAvoidXDistance(iv::LidarGridPtr lidarGridP
|
|
|
{
|
|
|
hasCheckedAvoidLidar = true;
|
|
|
}
|
|
|
- int record_j=0;
|
|
|
+ int record_vector=0;
|
|
|
for(int j=0;j<obs_property.size();j++){
|
|
|
if(obs_property[j].obs_distance>100){
|
|
|
+ if((signed_record_avoidX<0)&&(obs_property[j].avoid_distance>0)){
|
|
|
+ break;
|
|
|
+ }
|
|
|
if(abs(obs_property[j].avoid_distance)<record_avoidX){
|
|
|
record_avoidX=abs(obs_property[j].avoid_distance);
|
|
|
signed_record_avoidX=obs_property[j].avoid_distance;
|
|
|
- record_j=j;
|
|
|
+ record_vector=j;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// if((signed_record_avoidX<0)&&(signed_record_avoidX-1>=avoidLeft))
|
|
|
-// {
|
|
|
-// int obs_test=record_j-1;
|
|
|
-// if(obs_property[obs_test].obs_distance>100){
|
|
|
-// signed_record_avoidX-=1;
|
|
|
-// givlog->debug("decition_brain","singrecord_Y: %d",signed_record_avoidX);
|
|
|
-// }
|
|
|
-// }
|
|
|
- if(signed_record_avoidX<0){
|
|
|
- if(signed_record_avoidX-1>=avoidLeft){
|
|
|
- int obs_test=record_j-1;
|
|
|
- int signed_record_avoidX_minusone=signed_record_avoidX-1;
|
|
|
- if(obs_property[obs_test].obs_distance>100){
|
|
|
- for(int k=signed_record_avoidX_minusone;k<0;k++){
|
|
|
- if(obs_back_property[k].avoid_ok==false){
|
|
|
- signed_record_avoidX=0;
|
|
|
- break;
|
|
|
- }
|
|
|
- if(k==-1){
|
|
|
- signed_record_avoidX-=1;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }else{
|
|
|
- for(int k=signed_record_avoidX;k<0;k++){
|
|
|
- if(obs_back_property[k].avoid_ok==false){
|
|
|
- signed_record_avoidX=0;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }else if(signed_record_avoidX>0){
|
|
|
- for(int k=1;k<signed_record_avoidX;k++){
|
|
|
- if(obs_back_property[k].avoid_ok==false){
|
|
|
- signed_record_avoidX=0;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ if((signed_record_avoidX<0)&&(signed_record_avoidX-1>=avoidLeft))
|
|
|
+ {
|
|
|
+ int obs_test=record_vector-1;
|
|
|
|
|
|
+ if(obs_property[obs_test].obs_distance>100){
|
|
|
+ signed_record_avoidX-=1;
|
|
|
+ givlog->debug("decition_brain","singrecord_Y: %d",signed_record_avoidX);
|
|
|
+ }
|
|
|
+ }
|
|
|
if(front_car_id>0){
|
|
|
if((obs_cur_distance<50)&&(front_car.front_car_dis<30)&&(front_car_decide_avoid==true)){
|
|
|
signed_record_avoidX=front_car.avoidX;
|
|
@@ -4791,6 +4695,101 @@ int iv::decition::DecideGps00::computeAvoidXDistance(iv::LidarGridPtr lidarGridP
|
|
|
return signed_record_avoidX;
|
|
|
}
|
|
|
return 0;
|
|
|
+
|
|
|
+ //20200418,add,begin
|
|
|
+// int signed_record_avoidX=0,record_avoidX=20;
|
|
|
+// double obs_cur_distance=500,record_obstacle_distance;
|
|
|
+
|
|
|
+// obs_property.clear();
|
|
|
+// for (int i = avoidLeft; i <= avoidRight; i++)
|
|
|
+// {
|
|
|
+// obsvalue x_value;
|
|
|
+// obsvalue *x=&x_value;
|
|
|
+// x_value.avoid_distance=i;
|
|
|
+// gpsTraceAvoid.clear();
|
|
|
+// gpsTraceAvoid = getGpsTraceOffset(gpsTraceOri, i);
|
|
|
+// computeObsOnRoadNew(lidarGridPtr, gpsTraceAvoid, i,gpsMapLine,lidar_per,x);
|
|
|
+// obs_property.push_back(x_value);
|
|
|
+// if(i==0)
|
|
|
+// obs_cur_distance=x_value.obs_distance;
|
|
|
+// givlog->debug("decition_brain","i: %d,obs:%f",x_value.avoid_distance,x_value.obs_distance);
|
|
|
+// }
|
|
|
+
|
|
|
+// if (lidarGridPtr!=NULL)
|
|
|
+// {
|
|
|
+// hasCheckedAvoidLidar = true;
|
|
|
+// }
|
|
|
+// int record_j=0;
|
|
|
+// for(int j=0;j<obs_property.size();j++){
|
|
|
+// if(obs_property[j].obs_distance>100){
|
|
|
+// if(abs(obs_property[j].avoid_distance)<record_avoidX){
|
|
|
+// record_avoidX=abs(obs_property[j].avoid_distance);
|
|
|
+// signed_record_avoidX=obs_property[j].avoid_distance;
|
|
|
+// record_j=j;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+//// if((signed_record_avoidX<0)&&(signed_record_avoidX-1>=avoidLeft))
|
|
|
+//// {
|
|
|
+//// int obs_test=record_j-1;
|
|
|
+//// if(obs_property[obs_test].obs_distance>100){
|
|
|
+//// signed_record_avoidX-=1;
|
|
|
+//// givlog->debug("decition_brain","singrecord_Y: %d",signed_record_avoidX);
|
|
|
+//// }
|
|
|
+//// }
|
|
|
+// if(signed_record_avoidX<0){
|
|
|
+// if(signed_record_avoidX-1>=avoidLeft){
|
|
|
+// int obs_test=record_j-1;
|
|
|
+// int signed_record_avoidX_minusone=signed_record_avoidX-1;
|
|
|
+// if(obs_property[obs_test].obs_distance>100){
|
|
|
+// for(int k=signed_record_avoidX_minusone;k<0;k++){
|
|
|
+// if(obs_back_property[k].avoid_ok==false){
|
|
|
+// signed_record_avoidX=0;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// if(k==-1){
|
|
|
+// signed_record_avoidX-=1;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }else{
|
|
|
+// for(int k=signed_record_avoidX;k<0;k++){
|
|
|
+// if(obs_back_property[k].avoid_ok==false){
|
|
|
+// signed_record_avoidX=0;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }else if(signed_record_avoidX>0){
|
|
|
+// for(int k=1;k<signed_record_avoidX;k++){
|
|
|
+// if(obs_back_property[k].avoid_ok==false){
|
|
|
+// signed_record_avoidX=0;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// if(front_car_id>0){
|
|
|
+// if((obs_cur_distance<50)&&(front_car.front_car_dis<30)&&(front_car_decide_avoid==true)){
|
|
|
+// signed_record_avoidX=front_car.avoidX;
|
|
|
+// return signed_record_avoidX;
|
|
|
+// }
|
|
|
+
|
|
|
+// if((obs_cur_distance<50)&&(front_car.front_car_dis<150)&&(front_car.avoidX!=0||front_car.vehState!=0)){
|
|
|
+// signed_record_avoidX=front_car.avoidX;
|
|
|
+// return signed_record_avoidX;
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// if((signed_record_avoidX!=0)&&(obs_cur_distance<50))
|
|
|
+// {
|
|
|
+
|
|
|
+// avoidMinDistance= obs_cur_distance + 2*ServiceCarStatus.msysparam.vehLenth;
|
|
|
+// startAvoidGps=now_gps_ins;
|
|
|
+// return signed_record_avoidX;
|
|
|
+// }
|
|
|
+// return 0;
|
|
|
}
|
|
|
|
|
|
void iv::decition::DecideGps00::computeObsOnRoadNew(iv::LidarGridPtr lidarGridPtr, std::vector<Point2D> gpsTrace, int roadNum,
|