Sfoglia il codice sorgente

change src1/decition/decition_brain.

yuchuli 3 anni fa
parent
commit
cfc6500f4c

+ 4 - 0
include/common.pri

@@ -15,4 +15,8 @@ QMAKE_LFLAGS += -no-pie
 
 INCLUDEPATH += $$PWD/../src/include/msgtype
 
+if(contains(DEFINES,USE_PLUS_MODULECOMM)){
+LIBS += -L$$PWD -lfastcdr -lfastrtps
+}
+
 

+ 46 - 0
include/modulecomm.h

@@ -13,6 +13,7 @@
 #endif
 
 
+#ifndef USE_PLUS_MODULECOMM
 
 //#include <iostream>
 //#include <thread>
@@ -35,6 +36,51 @@ void MODULECOMMSHARED_EXPORT ContintuComm(void * pHandle);
 
 }
 
+#else
+
+//#include <iostream>
+//#include <thread>
+
+//using namespace std::placeholders;
+
+#ifndef IV_MODULE_FUN
+
+typedef std::function<void(const char * ,const unsigned int , const unsigned int , QDateTime * ,const char *)> ModuleFun;
+typedef void (* SMCallBack)(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
+#define IV_MODULE_FUN
+#endif
+
+namespace iv {
+namespace modulecomm {
+
+enum ModuleComm_TYPE
+{
+    ModuleComm_SHAREMEM = 0,
+    ModuleComm_INTERIOR = 1,
+    ModuleComm_FASTRTPS = 2,
+    ModuleComm_FASTRTPS_TCP = 3
+};
+
+
+void * MODULECOMMSHARED_EXPORT RegisterSend(const char * strcommname,const unsigned int nBufSize,const unsigned int nMsgBufCount
+                                            ,ModuleComm_TYPE xmctype = ModuleComm_SHAREMEM,const unsigned short nport = 5100);
+void * MODULECOMMSHARED_EXPORT RegisterRecv(const char * strcommname,SMCallBack pCall,
+                                            ModuleComm_TYPE xmctype = ModuleComm_SHAREMEM,const char * strip = 0,const unsigned short = 5100);
+void * MODULECOMMSHARED_EXPORT RegisterRecvPlus(const char * strcommname,ModuleFun xFun,
+                                                ModuleComm_TYPE xmctype = ModuleComm_SHAREMEM,const char * strip = 0,const unsigned short = 5100);
+
+void MODULECOMMSHARED_EXPORT ModuleSendMsg(void * pHandle,const char * strdata,const unsigned int nDataLen);
+void MODULECOMMSHARED_EXPORT Unregister(void * pHandle);
+void MODULECOMMSHARED_EXPORT PauseComm(void * pHandle);
+void MODULECOMMSHARED_EXPORT ContintuComm(void * pHandle);
+
+}
+
+}
+
+
+#endif
+
 
 
 #endif 

+ 1 - 1
src/tool/RemoteCtrl_Stream/main.cpp

@@ -61,7 +61,7 @@ int main(int argc, char *argv[])
 
     iv::xmlparam::Xmlparam xp("RemoteCtrl.xml");
     gstrmem_gpsimu = xp.GetParam("gpsimu","hcp2_gpsimu");
-    gstrmem_pic[0] = xp.GetParam("PicFront","image00");
+    gstrmem_pic[0] = xp.GetParam("PicFront","picfront");
     gstrmem_pic[1] = xp.GetParam("PicRear","picrear");
     gstrmem_pic[2] = xp.GetParam("PicLeft","picleft");
     gstrmem_pic[3] = xp.GetParam("PicRight","picright");

+ 5 - 0
src/tool/adciv_replay/adciv_replay.pro

@@ -18,6 +18,8 @@ TEMPLATE = app
 # deprecated API in order to know how to port your code away from it.
 DEFINES += QT_DEPRECATED_WARNINGS
 
+#DEFINES += USE_PLUS_MODULECOMM
+
 
 # You can also make your code fail to compile if you use deprecated APIs.
 # In order to do so, uncomment the following line.
@@ -40,6 +42,9 @@ FORMS += \
     error( "Couldn't find the common.pri file!" )
 }
 
+
+
+
 RESOURCES += \
     adciv_replay.qrc
 

+ 1 - 1
src1/common/modulecomm/modulecomm.pro

@@ -5,7 +5,7 @@ QT += dbus
 TEMPLATE = lib
 DEFINES += MODULECOMM_LIBRARY
 
-#DEFINES += USE_FASTRTPS
+DEFINES += USE_FASTRTPS
 DEFINES += USEDBUS
 
 CONFIG += c++11

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

@@ -9,6 +9,10 @@ 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
+
+LIBS += -L$$PWD -lfastcdr -lfastrtps
+
 # You can also make your code fail to compile if it uses deprecated APIs.
 # In order to do so, uncomment the following line.
 # You can also select to disable deprecated APIs only up to a certain version of Qt.
@@ -44,6 +48,10 @@ qnx: target.path = /tmp/$${TARGET}/bin
 else: unix:!android: target.path = /opt/$${TARGET}/bin
 !isEmpty(target.path): INSTALLS += target
 
+!include(../../../include/common.pri ) {
+    error( "Couldn't find the common.pri file!" )
+}
+
 !include(../../../include/ivprotobuf.pri ) {
     error( "Couldn't find the ivprotobuf.pri file!" )
 }
@@ -65,7 +73,7 @@ INCLUDEPATH += $$PWD/../../../include
 
 INCLUDEPATH += $$PWD/../interface
 
-LIBS += -L$$PWD/../../../src/common/build-ivlog-Debug -livlog
+#LIBS += -L$$PWD/../../../src/common/build-ivlog-Debug -livlog
 
 HEADERS += \
     ../common/adc_planner/base_planner.h \

+ 10 - 1
src1/decision/decision_brain/ivdecision_brain.cpp

@@ -29,8 +29,9 @@ ivdecision_brain::ivdecision_brain()
 }
 
 
-int ivdecision_brain::getdecision(brain::decition &xdecition)
+int ivdecision_brain::getdecision(brain::decition &xdecition,iv::brain::brainstate & xbs)
 {
+    static qint64 nlastdecisiontime = 0;
     static qint64 nLastMapUpdate = 0;
     iv::GPSData now_gps_ins;
     if(GetGPS(now_gps_ins) == false)
@@ -94,6 +95,14 @@ int ivdecision_brain::getdecision(brain::decition &xdecition)
     xdecition.set_air_on(decition->air_on);
     xdecition.set_door(decition->door);
 
+    xbs.set_mbbocheenable(ServiceCarStatus.bocheEnable);
+    xbs.set_mbbrainrunning(true);  //apollo_fu debug ui 20200417
+    xbs.set_mflidarobs(ServiceCarStatus.mLidarObs);
+    xbs.set_mfradarobs(ServiceCarStatus.mRadarObs);
+    xbs.set_mfobs(ServiceCarStatus.mObs);
+    xbs.set_decision_period((QDateTime::currentMSecsSinceEpoch() - nlastdecisiontime));
+    nlastdecisiontime = QDateTime::currentMSecsSinceEpoch();
+
     return 0;
 }
 

+ 2 - 2
src1/decision/decision_brain/ivdecision_brain.h

@@ -7,7 +7,7 @@
 #include "gps_type.h"
 #include "constants.h"
 
-#include <vector>\
+#include <vector>
 
 
 #include <gnss_coordinate_convert.h>
@@ -41,7 +41,7 @@ public:
     ivdecision_brain();
 
 public:
-    virtual int getdecision(iv::brain::decition & xdecition);
+    virtual int getdecision(iv::brain::decition & xdecition,iv::brain::brainstate & xbs);
 
 private:
 

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

@@ -1,5 +1,7 @@
 #include <QCoreApplication>
 
+#include "ivmodule.h"
+#include "ivdecision_brain.h"
 #include "ivlog.h"
 
 iv::Ivlog * givlog;
@@ -10,5 +12,8 @@ int main(int argc, char *argv[])
     QCoreApplication a(argc, argv);
 
     givlog = new iv::Ivlog("decision_brain");
+
+    iv::ivdecision_brain * pivmodule = new iv::ivdecision_brain();
+    pivmodule->start();
     return a.exec();
 }

+ 56 - 0
src1/decision/interface/ivdecision.cpp

@@ -2,6 +2,9 @@
 
 #include "gnss_coordinate_convert.h"
 
+#include "decition_type.h"
+#include "decition.pb.h"
+
 namespace iv {
 
 
@@ -26,8 +29,26 @@ void ivdecision::modulerun()
     mpahmimsg = iv::modulecomm::RegisterRecvPlus(mstrhmimsgname.data(),funhmi);
     mpapadmsg = iv::modulecomm::RegisterRecvPlus(mstrpadmsgname.data(),funhmi);
 
+    mpaDecition = iv::modulecomm::RegisterSend(mstrdecisionmsgname.data(),10*sizeof(iv::decition::DecitionBasic),1);
+    mpaVechicleState = iv::modulecomm::RegisterSend(mstrbrainstatemsgname.data(),10000,10);
+
+    iv::brain::brainstate xbs;
+    iv::brain::decition xdecition;
+
+    qint64 nSpace = 10;
+    qint64 nLastDecTime = 0;
+
     while(mbrun)
     {
+        if((QDateTime::currentMSecsSinceEpoch() - nLastDecTime)<nSpace)
+        {
+            std::this_thread::sleep_for(std::chrono::milliseconds(1));
+            continue;
+        }
+        nLastDecTime = QDateTime::currentMSecsSinceEpoch();
+        std::cout<<"running."<<std::endl;
+        getdecision(xdecition,xbs);
+        sharemsg(xdecition,xbs);
         //RunDecision
         //ShareMsg
     }
@@ -41,6 +62,41 @@ void ivdecision::modulerun()
     iv::modulecomm::Unregister(mpagpsmsg);
 }
 
+void ivdecision::sharemsg(brain::decition &xdecition, brain::brainstate &xbs)
+{
+    int nsize = xdecition.ByteSize();
+    char * str = new char[nsize];
+    std::shared_ptr<char> pstr;
+    pstr.reset(str);
+    if(xdecition.SerializeToArray(str,nsize))
+    {
+//        if(ServiceCarStatus.mbRunPause == false)
+//        {
+
+            iv::modulecomm::ModuleSendMsg(mpaDecition,str,nsize);
+//        }
+    }
+    else
+    {
+        std::cout<<"iv::decition::BrainDecition::ShareDecition serialize error."<<std::endl;
+    }
+
+    nsize = xbs.ByteSize();
+    str = new char[nsize];
+ //   std::shared_ptr<char> pstr;
+    pstr.reset(str);
+    if(xbs.SerializeToArray(str,nsize))
+    {
+        iv::modulecomm::ModuleSendMsg(mpaVechicleState,str,nsize);
+    }
+    else
+    {
+        std::cout<<"iv::decition::BrainDecition::ShareBrainstate serialize error."<<std::endl;
+    }
+
+
+}
+
 void ivdecision::UpdateGPS(const char *strdata, const unsigned int nSize, const unsigned int index, const QDateTime *dt, const char *strmemname)
 {
     (void )&index;

+ 9 - 2
src1/decision/interface/ivdecision.h

@@ -15,6 +15,7 @@
 #include "vbox.pb.h"
 #include "v2x.pb.h"
 #include "ultrasonic.pb.h"
+#include "brainstate.pb.h"
 
 #include <QMutex>
 
@@ -32,8 +33,8 @@ public:
 
 
 public:
-    virtual int getdecision(iv::brain::decition & xdecition) = 0;
-    virtual void sharemsg() = 0;
+    virtual int getdecision(iv::brain::decition & xdecition,iv::brain::brainstate & xbs) = 0;
+    void sharemsg(iv::brain::decition & xdecition,iv::brain::brainstate & xbs);
 
 private:
     std::string mstrgpsmsgname = "hcp2_gpsimu";
@@ -44,6 +45,9 @@ private:
     std::string mstrhmimsgname = "hmi";
     std::string mstrpadmsgname = "pad";
 
+    std::string mstrdecisionmsgname = "deciton";
+    std::string mstrbrainstatemsgname = "brainstate";
+
 private:
     void * mpagpsmsg;
     void * mpalidarmsg;
@@ -53,6 +57,9 @@ private:
     void * mpahmimsg;
     void * mpapadmsg;
 
+    void * mpaDecition;
+    void * mpaVechicleState;
+
 private:
     void UpdateGPS(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
     void UpdateRADAR(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);

+ 10 - 0
src1/decision/interface/ivdecision.pri

@@ -6,6 +6,10 @@ HEADERS += \
     $$PWD/../../../src/include/msgtype/gpsimu.pb.h \
     $$PWD/../../../src/include/msgtype/hmi.pb.h \
     $$PWD/../../../src/include/msgtype/imu.pb.h \
+    $$PWD/../../../src/include/msgtype/mobileye.pb.h \
+    $$PWD/../../../src/include/msgtype/mobileye_lane.pb.h \
+    $$PWD/../../../src/include/msgtype/mobileye_obs.pb.h \
+    $$PWD/../../../src/include/msgtype/mobileye_tsr.pb.h \
     $$PWD/../../../src/include/msgtype/radarobject.pb.h \
     $$PWD/../../../src/include/msgtype/radarobjectarray.pb.h \
     $$PWD/../../../src/include/msgtype/radio_send.pb.h \
@@ -13,6 +17,7 @@ HEADERS += \
     $$PWD/../../../src/include/msgtype/v2x.pb.h \
     $$PWD/../../../src/include/msgtype/vbox.pb.h \
     $$PWD/../../interface/ivmodule.h \
+    $$PWD/../../math/gnss_coordinate_convert.h \
     $$PWD/ivdecision.h
 
 SOURCES += \
@@ -23,6 +28,10 @@ SOURCES += \
     $$PWD/../../../src/include/msgtype/gpsimu.pb.cc \
     $$PWD/../../../src/include/msgtype/hmi.pb.cc \
     $$PWD/../../../src/include/msgtype/imu.pb.cc \
+    $$PWD/../../../src/include/msgtype/mobileye.pb.cc \
+    $$PWD/../../../src/include/msgtype/mobileye_lane.pb.cc \
+    $$PWD/../../../src/include/msgtype/mobileye_obs.pb.cc \
+    $$PWD/../../../src/include/msgtype/mobileye_tsr.pb.cc \
     $$PWD/../../../src/include/msgtype/radarobject.pb.cc \
     $$PWD/../../../src/include/msgtype/radarobjectarray.pb.cc \
     $$PWD/../../../src/include/msgtype/radio_send.pb.cc \
@@ -30,6 +39,7 @@ SOURCES += \
     $$PWD/../../../src/include/msgtype/v2x.pb.cc \
     $$PWD/../../../src/include/msgtype/vbox.pb.cc \
     $$PWD/../../interface/ivmodule.cpp \
+    $$PWD/../../math/gnss_coordinate_convert.cpp \
     $$PWD/ivdecision.cpp
 
 INCLUDEPATH += $$PWD/../interface