#include #include #include #include #include #include #include #include "perception/perceptionoutput.h" #include using namespace std; #define PI (3.1415926535897932384626433832795) double iv::decition::PredictObsDistance( double realSpeed,std::vector gpsTrace,std::vector lidar_per){ double crashDistance=200; for(int i=0;i300 && (lidar_per[i].velocity.x!=0 || lidar_per[i].velocity.y!=0)){ if(lidar_per[i].location.y>20 && lidar_per[i].velocity.y>0){ } else if(lidar_per[i].location.y<0 && lidar_per[i].velocity.y<0){ } else if(lidar_per[i].location.x>20 && lidar_per[i].velocity.x>0){ }else if(lidar_per[i].location.x<-20 && lidar_per[i].velocity.x<0){ }else{ double crashDis = getCrashDis(realSpeed,gpsTrace,lidar_per[i]); crashDistance=min(crashDis,crashDistance); } } } return crashDistance; } double iv::decition::getCrashDis(double realSpeed,std::vector gpsTrace,iv::Perception::PerceptionOutput obs){ double dis=0; int length=min(300,(int)gpsTrace.size()); int step=10; int size =length/step; for(int i=1; i gpsTrace){ double lenth=0; for(int i =0 ; i gpsTrace,int frame){ double d =realSpeed*0.1*frame; int index=0; for(int j=0;jd){ index=j; break; } index=j; } return index; } double iv::decition::getTime(double realSpeed,std::vector gpsTrace,int frame ,double *dis){ int size=gpsTrace.size()-1; int f=min(frame,size); for(int i=0;i<=f;i++){ *dis+=GetDistance(gpsTrace[0],gpsTrace[f]); } double time = *dis/realSpeed; return time; }