Browse Source

fix(grpc_bs,toolFSM,perception_sf_GPS):change gps speed getting methord, fsm skip condition.

sunjiacheng 3 years ago
parent
commit
110277ad0b

+ 2 - 1
src/decition/common/perception_sf/impl_gps.cpp

@@ -322,7 +322,7 @@ void iv::perception::GPSSensor::UpdateGPSIMU(iv::gps::gpsimu xgpsimu)
     data->ins_pitch_angle = xgpsimu.pitch();
     data->ins_roll_angle = xgpsimu.roll();
 
-    data->speed = sqrt(pow(xgpsimu.ve(),2)+pow(xgpsimu.vn(),2)) * 3.6;
+    data->speed = xgpsimu.speed() * 3.6;
 
     GaussProjCal(data->gps_lng, data->gps_lat, &data->gps_x, &data->gps_y);
 
@@ -331,6 +331,7 @@ void iv::perception::GPSSensor::UpdateGPSIMU(iv::gps::gpsimu xgpsimu)
     ServiceCarStatus.mfGPSAcc = xgpsimu.acc_calc();
 
     ServiceCarStatus.speed = data->speed;
+    if(ServiceCarStatus.speed < 0.1)ServiceCarStatus.speed = 0.0;
 //       qDebug("speed x is %g",ServiceCarStatus.speed);
     if(data->ins_status == 4)
         signal_gps_data->operator()(data);	//传输数据

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

@@ -23,6 +23,7 @@ FSMUnit::FSMUnit(void)
     QObject::connect(this,&FSMUnit::refreshFSMStatus,this,&FSMUnit::refreshFSMStatus_Slot);
     QObject::connect(&skipCMDSendTimer,&QTimer::timeout,this,&FSMUnit::skipCMDSend_Timeout);
     QObject::connect(&arriveCheckLoopTimer,&QTimer::timeout,this,&FSMUnit::arriveCheckLoop_Timeout);
+    QObject::connect(this,&FSMUnit::sendPathPlanRequest,this,&FSMUnit::sendPathPlanRequest_Slot);
     if(skipCMDSendTimer.isActive() == false)skipCMDSendTimer.start(skipCMDSendInterval);
     if(arriveCheckLoopTimer.isActive() == false)arriveCheckLoopTimer.start(100);
 }
@@ -196,10 +197,12 @@ void FSMUnit::ListenBrainStateMsg(const char * strdata,const unsigned int nSize,
 
 void FSMUnit::navagationSwitchChanged_Slot(bool status)
 {
-    if(status)
+    if(status == true && FSMState == 0)
         missionCMD = iv::brain::MissionCMD::MISSION_START;
-    else
+    else if(status == false && FSMState == 1)
         missionCMD = iv::brain::MissionCMD::MISSION_CANCEL;
+    else
+        missionCMD = iv::brain::MissionCMD::MISSION_RESERVED;
 }
 
 void FSMUnit::useStatusCMDChanged_Slot(bool status)
@@ -394,6 +397,6 @@ void FSMUnit::sendPathPlanRequest_Slot(double latitude,double longitude)
     xodrDest.flat = latitude;
     xodrDest.lane = 1;
     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
 }

+ 3 - 3
src/tool/tool_FSM_Test/mainwindow.cpp

@@ -20,13 +20,13 @@ MainWindow::MainWindow(QWidget *parent)
     shmFSMSkipCMD.mnBufferSize = 10000;
     shmFSMSkipCMD.mnBufferCount = 1;
 
-    shmFSMSkipCMD.mpa = iv::modulecomm::RegisterSend(shmFSMSkipCMD.mstrmsgname,shmFSMSkipCMD.mnBufferSize,shmFSMSkipCMD.mnBufferCount);
+//    shmFSMSkipCMD.mpa = iv::modulecomm::RegisterSend(shmFSMSkipCMD.mstrmsgname,shmFSMSkipCMD.mnBufferSize,shmFSMSkipCMD.mnBufferCount);
     ModuleFun funupdate = std::bind(&MainWindow::ListenBrainStateMsg,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5);
     shmBrainState.mpa = iv::modulecomm::RegisterRecvPlus(shmBrainState.mstrmsgname,funupdate);
 
     QObject::connect(this,&MainWindow::refreshHMI_Signal,this,&MainWindow::refreshHMI_Slot);
-    QObject::connect(&signalSendTimer,&QTimer::timeout,this,&MainWindow::signalSend_Timeout);
-    if(signalSendTimer.isActive() == false)signalSendTimer.start(50);
+//    QObject::connect(&signalSendTimer,&QTimer::timeout,this,&MainWindow::signalSend_Timeout);
+//    if(signalSendTimer.isActive() == false)signalSendTimer.start(50);
 }
 
 MainWindow::~MainWindow()