Explorar el Código

change for use ndt run. detection_ndt.... has a small bug, when use gps init, restart detetion_ndt... ok.

yuchuli hace 1 año
padre
commit
bfbc1497b9

+ 3 - 0
src/detection/detection_ndt_matching_gpu_multi/main.cpp

@@ -37,6 +37,7 @@ iv::gpspos glastndtgpspos;    //last ndt pos(convert to gps)
 iv::gpspos gcurndtgpspos;     //cur ndt pos(conver to gps)
 iv::gpspos gcurgpsgpspos;    //cur gps pos
 bool gbGPSFix = false;   //GPS is Fix. If 300 times report rtk 6.
+int64_t gnLastGPSTime = 0; //ms
 
 std::thread * gpthread;   //State thread pointer.
 
@@ -430,6 +431,8 @@ void ListenRaw(const char * strdata,const unsigned int nSize,const unsigned int
     if(nFixCount < 300)gbGPSFix = false;
     else gbGPSFix = true;
 
+    gnLastGPSTime = std::chrono::system_clock::now().time_since_epoch().count()/1000000;
+
 }
 
 

+ 7 - 0
src/detection/detection_ndt_matching_gpu_multi/ndt_matching.cpp

@@ -297,6 +297,7 @@ extern iv::gpspos glastndtgpspos;
 extern iv::gpspos gcurndtgpspos;
 extern iv::gpspos gcurgpsgpspos;
 extern bool gbGPSFix;
+extern int64_t gnLastGPSTime;
 
 static bool gbgpsupdatendt = false;
 
@@ -607,6 +608,12 @@ void GPSPosMonitor(bool * pbRun)
     }
     while(*pbRun)
     {
+        int64_t nmsnow = std::chrono::system_clock::now().time_since_epoch().count()/1000000;
+        if(abs(nmsnow - gnLastGPSTime)>1000)
+        {
+            std::this_thread::sleep_for(std::chrono::milliseconds(10));
+            continue;
+        }
         if(gbGPSFix == true)
         {
             double x0,y0;

+ 1 - 1
src/driver/driver_map_xodrload/driver_map_xodrload.pro

@@ -87,7 +87,7 @@ if(contains(DEFINES,USE_UTM)){
 LIBS += -lGeographic
 }
 
-
+QMAKE_CXXFLAGS +=  -g
 #DEFINES += USE_TMERS
 if(contains(DEFINES,USE_TMERS)){
 INCLUDEPATH += /home/nvidia/Downloads/proj-8.2.1/src

+ 1 - 0
src/driver/driver_map_xodrload/main.cpp

@@ -1605,6 +1605,7 @@ int main(int argc, char *argv[])
     gpasrc =iv::modulecomm::RegisterRecv("xodrsrc",ListenSrc);
     gpagps = iv::modulecomm::RegisterRecv(strgpsmsg.data(),UpdateGPSIMU);
     gpav2x = iv::modulecomm::RegisterRecv(strv2xmsg.data(),ListenV2X);
+    void * pafusion = iv::modulecomm::RegisterRecv("fusion_gpsimu",UpdateGPSIMU);
 
     gpaxodrrawreq = iv::modulecomm::RegisterRecv("xodrrawreq",ListenXODRRawReq);
     gpaxodrrawrep = iv::modulecomm::RegisterSend("xodrrawrep",30000000,1);

+ 2 - 3
src/fusion/fusion_gpsndt/main.cpp

@@ -84,9 +84,9 @@ void UpdateChassis(const char *strdata, const unsigned int nSize, const unsigned
 
     if(xchassis.has_vel())
     {
-        gfChassisVelSpeed = xchassis.vel();
+        gfChassisVelSpeed = xchassis.vel()/3.6;
         glastchassitime = std::chrono::system_clock::now().time_since_epoch().count()/1000000;
-  //      std::cout<<" gf Veh speed : "<<gfVehSpd<<std::endl;
+ //       std::cout<<" gf Veh speed : "<<gfChassisVelSpeed<<std::endl;
     }
 
 }
@@ -216,7 +216,6 @@ static void sharefusiongpsimu(iv::fusion::fusiongpslidar * pfusiongpslidar)
     {
         gpsimu.set_speed(gfChassisVelSpeed);
         std::cout<<"use chassis speed."<<std::endl;
-        return;
     }
 
     char * strser;

+ 26 - 1
src/ui/ui_ads_hmi/ADCIntelligentVehicle.cpp

@@ -356,6 +356,9 @@ ADCIntelligentVehicle::ADCIntelligentVehicle(QWidget *parent)
 
     ModuleFun fungpsimu =std::bind(&ADCIntelligentVehicle::UpdateGPSIMU,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5);
     mpagpsimu = iv::modulecomm::RegisterRecvPlus(gstrmemgps.data(),fungpsimu);
+
+    ModuleFun funfusiongpsimu =std::bind(&ADCIntelligentVehicle::UpdateGPSIMU,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5);
+    mpafusiongpsimu  = iv::modulecomm::RegisterRecvPlus("fusion_gpsimu",funfusiongpsimu);
     //    mpagpsimu = iv::modulecomm::RegisterRecv("gpsimu",Listengpsimu);
 
     ModuleFun funradar =std::bind(&ADCIntelligentVehicle::UpdateRADAR,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5);
@@ -1898,6 +1901,19 @@ void ADCIntelligentVehicle::UpdateGPSIMU(const char * strdata,const unsigned int
         return;
     }
 
+    if(strcmp(gstrmemgps.data(),strmemname) == 0)
+    {
+        int64_t nmsnow = std::chrono::system_clock::now().time_since_epoch().count()/1000000;
+        if(abs(nmsnow - mnLastFusionGPSIMUUpdate)<3000)
+        {
+            return;
+        }
+    }
+    else
+    {
+        mnLastFusionGPSIMUUpdate = std::chrono::system_clock::now().time_since_epoch().count()/1000000;
+    }
+
 
 
     iv::GPSData data(new iv::GPS_INS);
@@ -1917,8 +1933,17 @@ void ADCIntelligentVehicle::UpdateGPSIMU(const char * strdata,const unsigned int
 
     ServiceCarStatus.mRTKStatus = data->rtk_status;
 
+    if(xgpsimu.has_speed())
+        data->speed = xgpsimu.speed() *3.6;
+    else
+    {
+        data->speed= sqrt(pow(data->vel_E,2)+pow(data->vel_N,2)) * 3.6;
+    }
+
     ServiceCarStatus.speed = data->speed;
 
+    std::cout<<" speed : "<<ServiceCarStatus.speed;
+
     ServiceCarStatus.location->gps_lat = data->gps_lat;
     ServiceCarStatus.location->gps_lng = data->gps_lng;
     ServiceCarStatus.location->ins_heading_angle = data->ins_heading_angle;
@@ -1927,7 +1952,7 @@ void ADCIntelligentVehicle::UpdateGPSIMU(const char * strdata,const unsigned int
     ServiceCarStatus.location->rtk_status = data->rtk_status;
     ServiceCarStatus.location->ins_status = data->ins_status;
 
-    ServiceCarStatus.speed = sqrt(pow(data->vel_E,2)+pow(data->vel_N,2)) * 3.6;  //double pow(double x, double y) 返回 x 的 y 次幂,即 xy。
+//    ServiceCarStatus.speed = sqrt(pow(data->vel_E,2)+pow(data->vel_N,2)) * 3.6;  //double pow(double x, double y) 返回 x 的 y 次幂,即 xy。
 
     mnTimeUpdateGPS = mTimeState.elapsed();
 }

+ 3 - 0
src/ui/ui_ads_hmi/ADCIntelligentVehicle.h

@@ -314,6 +314,9 @@ private:
     QTime mManualTime;
     int mnLastManualTime;
 
+    void * mpafusiongpsimu;
+    int64_t mnLastFusionGPSIMUUpdate = 0;
+
 
 private:
     void UpdateMap(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);

+ 3 - 1
src/ui/ui_ads_hmi/ui_ads_hmi.pro

@@ -79,8 +79,10 @@ unix:!macx: DEPENDPATH += $$PWD/.
 }
 
 
+if(contains(DEFINES,SYSTEM_AGX)){
 
-
+LIBS += -lQt5WebEngine -lQt5WebEngineWidgets
+}
 
 #win32: LIBS += D:/boost/stage/lib/libboost_thread-vc140-mt-gd-x64-1_68.lib D:/boost/stage/lib/libboost_system-vc140-mt-gd-x64-1_68.lib \
 #D:/boost/stage/lib/libboost_date_time-vc140-mt-gd-x64-1_68.lib D:/boost/stage/lib/libboost_chrono-vc140-mt-gd-x64-1_68.lib  \