|
@@ -1986,23 +1986,25 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------1+X采集车车路协同,add---------------------------------------------
|
|
//-----------------------------------------1+X采集车车路协同,add---------------------------------------------
|
|
- unsigned char traffic_type=ServiceCarStatus.rsu_traffic_type;//路况信息
|
|
|
|
- unsigned char warning_type=ServiceCarStatus.rsu_warning_type;//预警信息,RSU获得
|
|
|
|
- float distance_to_center=0;
|
|
|
|
|
|
+ int traffic_type=ServiceCarStatus.rsu_traffic_type;//路况信息
|
|
|
|
+ int warning_type=ServiceCarStatus.rsu_warning_type;//预警信息,RSU获得
|
|
|
|
+ double distance_to_center=0;
|
|
GPS_INS traffic_center_gps;
|
|
GPS_INS traffic_center_gps;
|
|
traffic_center_gps.gps_lat=ServiceCarStatus.rsu_gps_lat;
|
|
traffic_center_gps.gps_lat=ServiceCarStatus.rsu_gps_lat;
|
|
traffic_center_gps.gps_lng=ServiceCarStatus.rsu_gps_lng;
|
|
traffic_center_gps.gps_lng=ServiceCarStatus.rsu_gps_lng;
|
|
- float radiation_distance=ServiceCarStatus.rsu_radiation_distance;//事件辐射范围,从RSU获得
|
|
|
|
- float trafficlimit_spd=ServiceCarStatus.rsu_trafficelimit_spd; //从RSU获得的限速值
|
|
|
|
- float warnlimit_spd=ServiceCarStatus.rsu_warnlimit_spd; //从RSU获得的限速值
|
|
|
|
|
|
+ int radiation_distance=ServiceCarStatus.rsu_radiation_distance;//事件辐射范围,从RSU获得
|
|
|
|
+ int trafficlimit_spd=ServiceCarStatus.rsu_trafficelimit_spd; //从RSU获得的限速值
|
|
|
|
+ int warnlimit_spd=ServiceCarStatus.rsu_warnlimit_spd; //从RSU获得的限速值
|
|
//以上变量信息都需要存储到log文件中
|
|
//以上变量信息都需要存储到log文件中
|
|
|
|
+ GaussProjCal(traffic_center_gps.gps_lng,traffic_center_gps.gps_lat, &traffic_center_gps.gps_x, &traffic_center_gps.gps_y);
|
|
|
|
+ //GaussProjCal(traffic_center_gps.gps_x, traffic_center_gps.gps_y, &traffic_center_gps.gps_lng, &traffic_center_gps.gps_lat);
|
|
distance_to_center=GetDistance(now_gps_ins,traffic_center_gps);//因为是长直道路所以直接计算事件中心点和当前位置的距离即可
|
|
distance_to_center=GetDistance(now_gps_ins,traffic_center_gps);//因为是长直道路所以直接计算事件中心点和当前位置的距离即可
|
|
if((traffic_type==0x01)||(traffic_type==0x02)||(traffic_type==0x03)||(traffic_type==0x04)
|
|
if((traffic_type==0x01)||(traffic_type==0x02)||(traffic_type==0x03)||(traffic_type==0x04)
|
|
||(warning_type==0x01)||(warning_type==0x02))
|
|
||(warning_type==0x01)||(warning_type==0x02))
|
|
{
|
|
{
|
|
if((traffic_type==0x01)||(traffic_type==0x02)||(traffic_type==0x03))//塌方,施工,道路结冰,事件范围外10米缓慢减速,事件范围内停车
|
|
if((traffic_type==0x01)||(traffic_type==0x02)||(traffic_type==0x03))//塌方,施工,道路结冰,事件范围外10米缓慢减速,事件范围内停车
|
|
{
|
|
{
|
|
- if((distance_to_center>=radiation_distance)&&(distance_to_center<=radiation_distance+10))
|
|
|
|
|
|
+ if((distance_to_center>=radiation_distance)&&(distance_to_center<=radiation_distance+10.0))
|
|
{
|
|
{
|
|
dSpeed = min(1.0,realspeed-0.2);
|
|
dSpeed = min(1.0,realspeed-0.2);
|
|
ServiceCarStatus.vehicle_state_1x = 1;
|
|
ServiceCarStatus.vehicle_state_1x = 1;
|
|
@@ -2020,7 +2022,7 @@ if((traffic_type==0x01)||(traffic_type==0x02)||(traffic_type==0x03)||(traffic_ty
|
|
}
|
|
}
|
|
else if(traffic_type==0x04)//如果事件类型是限速,则在辐射范围内限速,辐射范围外正常行驶
|
|
else if(traffic_type==0x04)//如果事件类型是限速,则在辐射范围内限速,辐射范围外正常行驶
|
|
{
|
|
{
|
|
- if((distance_to_center>=radiation_distance)&&(distance_to_center<=radiation_distance+2))
|
|
|
|
|
|
+ if((distance_to_center>=radiation_distance)&&(distance_to_center<=radiation_distance+2.0))
|
|
{
|
|
{
|
|
dSpeed=min((double)trafficlimit_spd,realspeed-0.5);//先让速度稍微减少一点
|
|
dSpeed=min((double)trafficlimit_spd,realspeed-0.5);//先让速度稍微减少一点
|
|
ServiceCarStatus.vehicle_state_1x = 1;
|
|
ServiceCarStatus.vehicle_state_1x = 1;
|
|
@@ -2295,6 +2297,8 @@ else
|
|
<<"Vehicle_GPS_heading"<< ","<< setprecision(10)<<now_gps_ins.ins_heading_angle<< ","
|
|
<<"Vehicle_GPS_heading"<< ","<< setprecision(10)<<now_gps_ins.ins_heading_angle<< ","
|
|
<<"Vehicle_GPS_X"<< ","<< setprecision(10)<<now_gps_ins.gps_lat<< ","
|
|
<<"Vehicle_GPS_X"<< ","<< setprecision(10)<<now_gps_ins.gps_lat<< ","
|
|
<<"Vehicle_GPS_Y"<< ","<< setprecision(10)<<now_gps_ins.gps_lng<< ","
|
|
<<"Vehicle_GPS_Y"<< ","<< setprecision(10)<<now_gps_ins.gps_lng<< ","
|
|
|
|
+ <<"center_GPS_X"<< ","<< setprecision(10)<<traffic_center_gps.gps_lat<< ","
|
|
|
|
+ <<"center_GPS_Y"<< ","<< setprecision(10)<<traffic_center_gps.gps_lng<< ","
|
|
<<"Trace_Point"<< ","<<PathPoint<< ","
|
|
<<"Trace_Point"<< ","<<PathPoint<< ","
|
|
<<"OBS_Speed"<< ","<<obsSpeed<< ","
|
|
<<"OBS_Speed"<< ","<<obsSpeed<< ","
|
|
<<"TTC"<< ","<<ttc<< ","
|
|
<<"TTC"<< ","<<ttc<< ","
|
|
@@ -2311,9 +2315,10 @@ else
|
|
"obsSpeed: %f,realspeed: %f,minDecelerate: %f,torque: %f,brake: %f,"
|
|
"obsSpeed: %f,realspeed: %f,minDecelerate: %f,torque: %f,brake: %f,"
|
|
"wheel_angle: %f","Traffic_Type: %d","Warn_Type: %d","TrafficLimit_Speed: %f",
|
|
"wheel_angle: %f","Traffic_Type: %d","Warn_Type: %d","TrafficLimit_Speed: %f",
|
|
"radiation_dis: %f","Dis_to_center: %f","WarnLimit_Speed: %f",
|
|
"radiation_dis: %f","Dis_to_center: %f","WarnLimit_Speed: %f",
|
|
- vehState,PathPoint,dSpeed,obsDistance,obsSpeed,realspeed,minDecelerate,
|
|
|
|
- gps_decition->torque,gps_decition->brake,gps_decition->wheel_angle,traffic_type,
|
|
|
|
- warning_type,trafficlimit_spd,radiation_distance,distance_to_center,warnlimit_spd);
|
|
|
|
|
|
+ vehState,PathPoint,dSpeed,obsDistance,
|
|
|
|
+ obsSpeed,realspeed,minDecelerate, gps_decition->torque,gps_decition->brake,
|
|
|
|
+ gps_decition->wheel_angle,traffic_type,warning_type,trafficlimit_spd,
|
|
|
|
+ radiation_distance,distance_to_center,warnlimit_spd);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|