소스 검색

change src/decition/decition_brain. change fusion gird.

yuchuli 3 년 전
부모
커밋
6b5b953382

+ 24 - 4
src/decition/decition_brain_sf/decition/brain.cpp

@@ -684,12 +684,32 @@ void iv::decition::BrainDecition::run() {
 //            iv::LidarGridPtr templidar= obs_lidar_grid_;
 
             iv::LidarGridPtr  templidar;
-            if (fusion_ptr_ != NULL)
+            static int nUseOldCount = 0;
+            mMutex_.lock();
+            templidar = fusion_ptr_;
+            fusion_ptr_ = NULL;
+            mMutex_.unlock();
+
+            if(templidar != NULL)
+            {
+                if(old_fusion_grid_ != NULL)free(old_fusion_grid_);
+                old_fusion_grid_ = templidar;
+                nUseOldCount = 0;
+            }
+            else
             {
-                if(templidar != NULL) free(templidar);
-                templidar = fusion_ptr_;
+                if((old_fusion_grid_ != NULL)&&(nUseOldCount < 300))
+                {
+                    templidar = old_fusion_grid_;
+                    nUseOldCount++;
+                }
             }
-            fusion_ptr_ =NULL;
+//            if (fusion_ptr_ != NULL)
+//            {
+//                if(templidar != NULL) free(templidar);
+//                templidar = fusion_ptr_;
+//            }
+//            fusion_ptr_ =NULL;
 
 
 //            iv::LidarGridPtr  templidar = fusion_ptr_;

+ 1 - 0
src/decition/decition_brain_sf/decition/brain.h

@@ -111,6 +111,7 @@ namespace iv {
 //			iv::GPSData gps_data_;			//gps 惯导数据
 			iv::LidarGridPtr obs_lidar_grid_;//激光雷达网格化
             iv::LidarGridPtr old_obs_lidar_grid_;//激光雷达网格化
+            iv::LidarGridPtr old_fusion_grid_ = NULL;
             iv::TrafficLight trafficLight;
             iv::Obs_grid* obs_fusion_grid_;     //fusion网格化
 

+ 1 - 1
src1/decision/decision_brain/decision_brain.pro

@@ -9,7 +9,7 @@ CONFIG -= app_bundle
 # deprecated API in order to know how to port your code away from it.
 DEFINES += QT_DEPRECATED_WARNINGS
 
-DEFINES += USE_PLUS_MODULECOMM
+#DEFINES += USE_PLUS_MODULECOMM
 
 LIBS += -L$$PWD -lfastcdr -lfastrtps
 

+ 5 - 0
src1/decision/decision_brain/ivdecision_brain.cpp

@@ -88,6 +88,11 @@ int ivdecision_brain::getdecision(brain::decition &xdecition,iv::brain::brainsta
     updateradar();
     updategroupinfo();
 
+    if(mgpsMapLine.size()<10)
+    {
+        return 0;
+    }
+
     iv::decition::Decition decition= getDecideFromGPS(*now_gps_ins,mgpsMapLine,lidarptr,xvectorper,xtrafficlight);
 
     xdecition.set_accelerator(decition->accelerator);

+ 2 - 0
src1/decision/decision_brain/main.cpp

@@ -3,12 +3,14 @@
 #include "ivmodule.h"
 #include "ivdecision_brain.h"
 #include "ivlog.h"
+#include "ivbacktrace.h"
 
 iv::Ivlog * givlog;
 
 
 int main(int argc, char *argv[])
 {
+    RegisterIVBackTrace();
     QCoreApplication a(argc, argv);
 
     givlog = new iv::Ivlog("decision_brain");

+ 13 - 3
src1/decision/interface/ivdecision.cpp

@@ -53,7 +53,7 @@ void ivdecision::modulerun()
 
         if((QDateTime::currentMSecsSinceEpoch() - nLastDecTime)<nSpace)
         {
-            std::this_thread::sleep_for(std::chrono::milliseconds(1));
+            std::this_thread::sleep_for(std::chrono::milliseconds(2));
             continue;
         }
         nLastDecTime = QDateTime::currentMSecsSinceEpoch();
@@ -325,8 +325,18 @@ void ivdecision::UpdateMAP(const char *strdata, const unsigned int nSize, const
 
         mMutexMAP.lock();
         mnavigation_data.clear();
-        mnavigation_data.resize(nMapSize);
-        memcpy(mnavigation_data.data(),strdata,nMapSize * sizeof(iv::GPS_INS));
+ //       mnavigation_data.resize(nMapSize);
+        int i;
+        for(i=0;i<nMapSize;i++)
+        {
+            iv::GPS_INS x;
+            memcpy(&x,strdata + i*gpsunitsize,gpsunitsize);
+            iv::GPSData data(new iv::GPS_INS);
+            *data = x;
+            mnavigation_data.push_back(data);
+
+        }
+//        memcpy(mnavigation_data.data(),strdata,nMapSize * sizeof(iv::GPS_INS));
         mnMAPUpdateTime = QDateTime::currentMSecsSinceEpoch();
         mMutexMAP.unlock();
 

+ 4 - 8
src1/decision/interface/ivdecision.pri

@@ -45,16 +45,12 @@ SOURCES += \
 INCLUDEPATH += $$PWD/../interface
 INCLUDEPATH += $$PWD/../../interface
 
-INCLUDEPATH += $$PWD/../../common/modulecomm
+#INCLUDEPATH += $$PWD/../../common/modulecomm
 
-INCLUDEPATH += $$PWD/../../common/modulecomm_shm
-INCLUDEPATH += $$PWD/../../common/modulecomm_fastrtps
-INCLUDEPATH += $$PWD/../../common/modulecomm_inter
+#INCLUDEPATH += $$PWD/../../common/modulecomm_shm
+#INCLUDEPATH += $$PWD/../../common/modulecomm_fastrtps
+#INCLUDEPATH += $$PWD/../../common/modulecomm_inter
 
-LIBS += -L$$PWD/../../common/build-modulecomm-Debug -lmodulecomm
-LIBS += -L$$PWD/../../common/build-modulecomm_fastrtps-Debug -lmodulecomm_fastrtps
-LIBS += -L$$PWD/../../common/build-modulecomm_shm-Debug -lmodulecomm_shm
-LIBS += -L$$PWD/../../common/build-modulecomm_inter-Debug -lmodulecomm_inter
 
 
 INCLUDEPATH += $$PWD/../../../src/common/xmlparam

+ 3 - 0
src1/interface/ivmodule.cpp

@@ -32,6 +32,8 @@ void ivmodule::setmodulename(const char *strmodulename)
     strncpy(mstrmodulename,strmodulename,256);
 }
 
+
+#ifdef USE_PLUS_MODULECOMM
 void ivmodule::setdefaultcommtype(iv::modulecomm::ModuleComm_TYPE xtype)
 {
     mdefcommtype = xtype;
@@ -42,6 +44,7 @@ iv::modulecomm::ModuleComm_TYPE ivmodule::getdefefaultcommtype()
     return mdefcommtype;
 }
 
+#endif
 
 
 }

+ 5 - 0
src1/interface/ivmodule.h

@@ -17,8 +17,10 @@ public:
     void start();
     virtual void modulerun();
     void setmodulename(const char * strmodulename);
+#ifdef  USE_PLUS_MODULECOMM
     void setdefaultcommtype(iv::modulecomm::ModuleComm_TYPE xtype);
     iv::modulecomm::ModuleComm_TYPE getdefefaultcommtype();
+#endif
 
 public:
 
@@ -26,6 +28,7 @@ public:
     bool mbrun = true;
 private:
     std::thread * mpthread;
+#ifdef USE_PLUS_MODULECOMM
 #ifdef MODULECOMM_DEFAULT_USE_INTER
     iv::modulecomm::ModuleComm_TYPE mdefcommtype = iv::modulecomm::ModuleComm_INTERIOR;
 #else
@@ -34,6 +37,8 @@ private:
 #else
     iv::modulecomm::ModuleComm_TYPE mdefcommtype = iv::modulecomm::ModuleComm_SHAREMEM;
 #endif
+#endif
+
 #endif
     char mstrmodulename[256];
 };