Procházet zdrojové kódy

fix(grpc_BS,mapxodrload,decide_gps):change min length of path to 200 point,fix arrived judging error in BS.

sunjiacheng před 3 roky
rodič
revize
1b618844bf

+ 2 - 0
src/decition/decition_brain_sf_jsrunlegs/decition/brain.cpp

@@ -765,6 +765,7 @@ void iv::decition::BrainDecition::run() {
             xbs.set_mbfulfiltask(ServiceCarStatus.mbFullFillTask);
             xbs.set_mbreceivetask(ServiceCarStatus.mbReceiveTask);
             xbs.set_mbnopath(ServiceCarStatus.mbNoPath);
+            xbs.set_mbfsm_state(ServiceCarStatus.mbFSM_State);
             ShareBrainstate(xbs);    //apollo_fu 20200413 qudiaozhushi
             //            iv::decition::VehicleStateBasic vsb;
             //            vsb.mbBocheEnable = ServiceCarStatus.bocheEnable;
@@ -1107,6 +1108,7 @@ void iv::decition::BrainDecition::run() {
             xbs.set_mbfulfiltask(ServiceCarStatus.mbFullFillTask);
             xbs.set_mbreceivetask(ServiceCarStatus.mbReceiveTask);
             xbs.set_mbnopath(ServiceCarStatus.mbNoPath);
+            xbs.set_mbfsm_state(ServiceCarStatus.mbFSM_State);
             ShareBrainstate(xbs);
 
 

+ 3 - 3
src/decition/decition_brain_sf_jsrunlegs/decition/decide_gps_00.cpp

@@ -2787,12 +2787,12 @@ std::vector<iv::Point2D> iv::decition::DecideGps00::getGpsTrace(iv::GPS_INS now_
     traceOriLeft.clear();
     traceOriRight.clear();
 
-    if (gpsMapLine.size() > 800 && PathPoint >= 0) {
+    if (gpsMapLine.size() > 200 && PathPoint >= 0) {
         int aimIndex;
         if(circleMode){
-            aimIndex=PathPoint+800;
+            aimIndex=PathPoint+200;
         }else{
-            aimIndex=min((PathPoint+800),(int)gpsMapLine.size());
+            aimIndex=min((PathPoint+200),(int)gpsMapLine.size());
         }
 
         for (int i = PathPoint; i < aimIndex; i++)

+ 4 - 3
src/driver/driver_cloud_grpc_client_BS/fsm_unit.cpp

@@ -360,7 +360,7 @@ void FSMUnit::arriveCheckLoop_Timeout(void)
         double deltaY = localPositionNextY - localPositionY;
         double distance = sqrt(deltaX*deltaX + deltaY*deltaY);
 
-        if(distance > 1.0)
+        if(distance > 5.0)
         {
             emit sendPathPlanRequest(waitingStation.latitude,waitingStation.longitude);
         }
@@ -387,8 +387,9 @@ void FSMUnit::arriveCheckLoop_Timeout(void)
         double deltaX = localPositionNextX - localPositionX;
         double deltaY = localPositionNextY - localPositionY;
         double distance = sqrt(deltaX*deltaX + deltaY*deltaY);
+//        std::cout<<"distance"<<distance<<std::endl;
 
-        if(distance > 1.0)
+        if(distance > 5.0)
         {
             emit sendPathPlanRequest(maintainStation.latitude,maintainStation.longitude);
         }
@@ -411,7 +412,7 @@ void FSMUnit::sendPathPlanRequest_Slot(double latitude,double longitude)
     xodrDest.flon = longitude;
     xodrDest.flat = latitude;
     xodrDest.lane = 1;
-    std::cout<<"current destination: "<<std::setprecision(12)<<longitude<<","<<latitude<<std::endl;
+//    std::cout<<"current destination: "<<std::setprecision(12)<<longitude<<","<<latitude<<std::endl;
     std::cout<<"send a path request"<<std::endl;
     iv::modulecomm::ModuleSendMsg(shmXodrRequest.mpa,(char *)&xodrDest,sizeof(xodrobj)); ///< send request msg
 }

+ 1 - 0
src/driver/driver_cloud_grpc_client_BS/vehicle_upload.cpp

@@ -507,6 +507,7 @@ void DataExchangeClient::ListenTraceMapMsg(const char * strdata,const unsigned i
         pathPoints.append(onePoint);
 //        std::cout<<pathPoints.at(i).index()<<std::endl;
     }
+    std::cout<<"current destination: "<<std::setprecision(12)<<pathPoints.at(pathPoints.size()-1).mappoint().longitude()<<","<<pathPoints.at(pathPoints.size()-1).mappoint().latitude()<<std::endl;
     emit setFSMDestination(pathPoints.at(pathPoints.size()-1).mappoint().latitude(),pathPoints.at(pathPoints.size()-1).mappoint().longitude());
     std::cout<<"get a tracemap"<<std::endl;
 

+ 2 - 2
src/driver/driver_map_xodrload/main.cpp

@@ -353,7 +353,7 @@ void ShareMap(std::vector<iv::GPSData> navigation_data)
 
 
     int nsize = 100;
-    float nstep = 1;
+    double nstep = 1;
     if(navigation_data.size() < 100)
     {
         nsize = navigation_data.size();
@@ -361,7 +361,7 @@ void ShareMap(std::vector<iv::GPSData> navigation_data)
     }
     else
     {
-        nstep = navigation_data.size()/100;
+        nstep = navigation_data.size()/100.0;
     }
 
     iv::simpletrace psim[100];

+ 3 - 0
src/include/proto/brainstate.proto

@@ -10,9 +10,12 @@ message brainstate
   optional bool mbBocheEnable = 4;
   optional double decision_period= 5; 
   optional bool mbBrainRunning = 6;
+  
   optional bool mbReceiveTask=7;
   optional bool mbFulfilTask=8;
   optional bool mbCloseToPath =9;
   optional bool mbAwayFromPath=10;
   optional bool mbNoPath=11;
+
+  optional uint32 mbFSM_State=12; //0:待命停车   1:任务中	 2:人工接管 3:停工停车 4:返程 5:返库
 };