소스 검색

Merge branch 'master' of http://47.96.250.93:3000/adc_pilot/modularization

zhangjia 4 년 전
부모
커밋
c2b9e51f97

+ 1 - 1
README.md

@@ -1,6 +1,6 @@
 # modularization
 
-技术发展室模块化自动驾驶系统源代码仓库
+技术发展室模块化自动驾驶系统源代码仓库  
 
 
 

+ 1 - 1
sedrp.sh

@@ -2,7 +2,7 @@ if [ "$#" -lt 1 ]; then
 echo "没有输入"
 echo "$1"
 exit
-fi
+fi 
 
 HOSTQTLIB='/opt/qt/5.10.1/gcc_64/lib'  #当前qt环境的lib目录
 RPATH='/home/root/ADS/lib'  #运行依赖库的路径,目标板的qt库配置到该路径

+ 20 - 2
src/decition/decition_brain_sf/decition/adc_adapter/zhongche_adapter.cpp

@@ -59,7 +59,7 @@ iv::decition::Decition iv::decition::ZhongcheAdapter::getAdapterDeciton(GPS_INS
     if(ttc>10 && (obsDistance>10||obsDistance<0)){
 
 
-
+    float controlSpeed=0;
 
 
         if(DecideGps00::minDecelerate<0){
@@ -67,7 +67,25 @@ iv::decition::Decition iv::decition::ZhongcheAdapter::getAdapterDeciton(GPS_INS
             (*decition)->brake = max((0-DecideGps00::minDecelerate)*90, (*decition)->brake);
              dSpeed=10.0;
         }else{
-            (*decition)->torque=90;
+
+            if(dSpeed-realSpeed>2){
+
+                if(lastTorque==0 ){
+                     controlSpeed=40;
+                }else{
+                    controlSpeed = lastTorque+(accAim-accNow)*500*0.1;
+                }
+                if(controlSpeed>lastTorque){
+                    controlSpeed=lastTorque+4;
+                }else if(controlSpeed>lastTorque){
+                     controlSpeed=lastTorque-4;
+                }
+                (*decition)->torque=controlSpeed;
+            }else{
+              (*decition)->torque=realSpeed*8+10;
+            }
+           (*decition)->torque=max( (*decition)->torque,40.0f);
+             (*decition)->torque=min( (*decition)->torque,90.0f);
             (*decition)->brake=0;
         }
 

+ 4 - 0
src/decition/decition_brain_sf/decition/adc_controller/pid_controller.cpp

@@ -56,6 +56,10 @@ float iv::decition::PIDController::getPidAngle(float realSpeed, std::vector<Poin
     double EPos = 0, EAng = 0;
 
     double KEang = 14, KEPos = 10, DEang = 0, DEPos = 0,IEpos=0,IEang=0;
+    if(ServiceCarStatus.msysparam.mvehtype=="zhongche"){
+        IEpos=1,IEang=0.5;
+    }
+
 
     bool turning=false;
     if(roadMode==14||roadMode==15||roadMode==16||roadMode==17){

+ 13 - 0
src/driver/driver_camera_miivii/driver_camera_miivii.xml

@@ -0,0 +1,13 @@
+<xml>	
+	<node name="driver_camera_miivii">
+		<param name="CamNum" value="1" />
+		<param name="bcompress" value="1" />
+		<param name="compquality" value="95" />
+		<param name="devname" value="/dev/video0" />
+		<param name="ShowPic" value="ShowPic" />
+		<param name="msgname0" value="PicFront" />
+		<param name="msgname1" value="PicRear" />
+		<param name="msgname2" value="PicLeft" />
+		<param name="msgname3" value="PicRight" />
+	</node>
+</xml>

+ 46 - 14
src/driver/driver_camera_miivii/main.cpp

@@ -68,6 +68,8 @@ void * gThreadComp[CAM_MAX];
 
 std::string gstrmempic[CAM_MAX];
 
+std::string gstrdevname;
+
 void * gpapic[CAM_MAX];
 
 int gcompress = 1;
@@ -105,9 +107,6 @@ void ThreadCompress(const int n)
             gbUpdate[n] = false;
             gMutex[n].unlock();
 
-
-
-
             iv::vision::rawpic pic;
 
   //          qint64 time = QDateTime::currentMSecsSinceEpoch();
@@ -188,21 +187,48 @@ int main(int argc, char *argv[])
 {
     QCoreApplication a(argc, argv);
 
+    QString strpath = QCoreApplication::applicationDirPath();
+//    QString apppath = strpath;
+    if(argc < 2)
+        strpath = strpath + "/driver_camera_miivii.xml";
+    else
+        strpath = argv[1];
+    std::cout<<strpath.toStdString()<<std::endl;
+    iv::xmlparam::Xmlparam xp(strpath.toStdString());
+
+
+    std::string strcamcount = xp.GetParam("CamNum","2");   //Camera Number
+    std::string strcompress = xp.GetParam("bcompress","1");   //if 1,compress to jpg, suggest compress.
+    std::string strcompquality = xp.GetParam("compquality","95");  //Compress quality
+    gcompquality = atoi(strcompquality.data());
+
+    gstrdevname = xp.GetParam("devname","/dev/video0");   //devicename /dev/video0  /dev/video1
+
+    gcompress = atoi(strcompress.data());
+
+    int  ncamcount = atoi(strcamcount.data());
+
+    std::string strshowpic = xp.GetParam("ShowPic","0");  //if 1, show pic
+
+    int nshowpic = atoi(strshowpic.data());
+
     unsigned int i;
-    for(i=0;i<CAM_MAX;i++)
+    for(i=0;i<ncamcount;i++)
     {
         gbUpdate[i] = false;
-        gstrmempic[i] = "image0"+ QString::number(i).toStdString();
+        QString strmsgparam = "msgname";
+        strmsgparam = strmsgparam + QString::number(i);
+        gstrmempic[i] = xp.GetParam(strmsgparam.toStdString(),"image0"+ QString::number(i).toStdString());   //Message Name
         gpapic[i] = iv::modulecomm::RegisterSend(gstrmempic[i].data(),10000000,1);
         gThreadComp[i] = new std::thread(ThreadCompress,i);
     }
 
     sample_context_t ctx;
     ctx.cam_fmt = " ";
-    ctx.cam_devname = "/dev/video0";
+    ctx.cam_devname = gstrdevname;
     ctx.cam_h = 720;
     ctx.cam_w = 1280;
-    ctx.window_num = 2;
+    ctx.window_num = ncamcount;
     ctx.fps = 25;
 
 //    if (!parse_cmdline(&ctx, argc, argv)) {
@@ -221,14 +247,17 @@ int main(int argc, char *argv[])
     std::cout << "Camera type in group B is " << mvcam.GetCameraType(group_b_key) << std::endl;
 
     std::string windowName("DisplayCamera ");
-    for (uint32_t i = 0; i < ctx.window_num; i++) {
-        cv::namedWindow(windowName + std::to_string(i), cv::WindowFlags::WINDOW_AUTOSIZE);
-        cv::moveWindow(windowName + std::to_string(i), 200 * i, 200 * i);
+    if(nshowpic == 1)
+    {
+        for (uint32_t i = 0; i < ctx.window_num; i++) {
+            cv::namedWindow(windowName + std::to_string(i), cv::WindowFlags::WINDOW_AUTOSIZE);
+            cv::moveWindow(windowName + std::to_string(i), 200 * i, 200 * i);
+        }
     }
     cv::Mat outMat[ctx.window_num];
-    uint8_t *outbuf[ctx.window_num];
-    cv::Mat imgbuf[ctx.window_num];
-    cv::Mat omat;
+//    uint8_t *outbuf[ctx.window_num];
+//    cv::Mat imgbuf[ctx.window_num];
+//    cv::Mat omat;
     signal(SIGINT, &handler);
     bool quit = false;
     uint64_t timestamp{};
@@ -251,7 +280,10 @@ int main(int argc, char *argv[])
                 } else if (imgFmt == "ABGR32") {
                     qint64 nPicTime = QDateTime::currentMSecsSinceEpoch();
                     cv::cvtColor(outMat[i], outMat[i], cv::COLOR_RGBA2BGR);
-                    cv::imshow(windowName + std::to_string(i), outMat[i]);
+                    if(nshowpic == 1)
+                    {
+                        cv::imshow(windowName + std::to_string(i), outMat[i]);
+                    }
 
                     std::cout<<" pic time is : "<<QDateTime::currentMSecsSinceEpoch()<<std::endl;
 

+ 61 - 56
src/driver/driver_can_vci/driver_can_vci.pro

@@ -1,56 +1,61 @@
-QT -= gui
-
-QT += network
-
-CONFIG += c++11 console
-CONFIG -= app_bundle
-
-QMAKE_LFLAGS += -no-pie
-
-DEFINES += NV
-
-# The following define makes your compiler emit warnings if you use
-# any feature of Qt which as been marked deprecated (the exact warnings
-# depend on your compiler). Please consult the documentation of the
-# deprecated API in order to know how to port your code away from it.
-DEFINES += QT_DEPRECATED_WARNINGS
-
-!include(../../../include/common.pri ) {
-    error( "Couldn't find the common.pri file!" )
-}
-
-!include(../../../include/ivprotobuf.pri ) {
-    error( "Couldn't find the ivprotobuf.pri file!" )
-}
-
-INCLUDEPATH += $$PWD/../../include/base/driver/can
-
-# You can also make your code fail to compile if you use 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.
-#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
-
-SOURCES += main.cpp \
-    canctrl.cpp \
-    ../../include/msgtype/canmsg.pb.cc \
-    ../../include/msgtype/canraw.pb.cc \
-    ../../include/msgtype/canstate.pb.cc \
-    ../../include/base/driver/can/basecan.cpp \
-    vcican.cpp
-
-HEADERS += \
-    canctrl.h \
-    ../../include/msgtype/canmsg.pb.h \
-    ../../include/msgtype/canraw.pb.h \
-    ../../include/msgtype/canstate.pb.h \
-    ../../include/base/driver/can/basecan.h \
-    controlcan.h \
-    vcican.h
-
-contains(QMAKE_HOST.arch, aarch64){
-    unix:!macx: LIBS += -L$$PWD/arm -lcontrolcan
-}else{
-    unix:!macx: LIBS += -L$$PWD/x86_64 -lcontrolcan
-}
-
-
+QT -= gui
+
+QT += network
+
+CONFIG += c++11 console
+CONFIG -= app_bundle
+
+QMAKE_LFLAGS += -no-pie
+
+DEFINES += NV
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which as been marked deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+!include(../../../include/common.pri ) {
+    error( "Couldn't find the common.pri file!" )
+}
+
+!include(../../../include/ivprotobuf.pri ) {
+    error( "Couldn't find the ivprotobuf.pri file!" )
+}
+
+INCLUDEPATH += $$PWD/../../include/base/driver/can
+
+# You can also make your code fail to compile if you use 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.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
+
+SOURCES += main.cpp \
+    canctrl.cpp \
+    ../../include/msgtype/canmsg.pb.cc \
+    ../../include/msgtype/canraw.pb.cc \
+    ../../include/msgtype/canstate.pb.cc \
+    ../../include/base/driver/can/basecan.cpp \
+    mingw_controlcan.cpp \
+    vcican.cpp
+
+HEADERS += \
+    canctrl.h \
+    ../../include/msgtype/canmsg.pb.h \
+    ../../include/msgtype/canraw.pb.h \
+    ../../include/msgtype/canstate.pb.h \
+    ../../include/base/driver/can/basecan.h \
+    controlcan.h \
+    mingw_controlcan.h \
+    vcican.h
+
+contains(QMAKE_HOST.arch, aarch64){
+    unix:!macx: LIBS += -L$$PWD/arm -lcontrolcan
+}else{
+    unix:!macx: LIBS += -L$$PWD/x86_64 -lcontrolcan
+}
+
+
+win32: DEFINES += IV_WIN
+
+

+ 8 - 0
src/driver/driver_can_vci/vcican.cpp

@@ -27,6 +27,11 @@ extern iv::Ivlog *mivlog;
 
 vcican::vcican(int devnum,int nbaudindex,int nch2baudindex )
 {
+
+#ifdef IV_WIN
+    LoadVCILibrary();
+
+#endif
     mnDevNum = devnum;
 
     unsigned char timing0,timing1;
@@ -79,6 +84,7 @@ void vcican::run()
     if(status != 1)
     {
         mivlog->error("open can card fail");
+        std::cout<<"open can card fail"<<std::endl;
         mfault->SetFaultState(1, 0, "Open can card fail");
         VCI_CloseDevice(4,mnDevNum);
 
@@ -134,6 +140,8 @@ void vcican::run()
     mbCANOpen = true; //01910000837  01910000829
     emit SIG_CANOPENSTATE(true,0,"open can card successfully");
 
+    std::cout<<"open vci can card successfully."<<std::endl;
+
 
 //    VCI_BOARD_INFO xinfo;
 //    VCI_ReadBoardInfo(4,mnDevNum,&xinfo);

+ 1 - 0
src/driver/driver_can_vci/vcican.h

@@ -5,6 +5,7 @@
 
 #include "controlcan.h"
 
+#include "mingw_controlcan.h"
 
 #include <vector>
 #include <QMutex>

+ 4 - 1
src/driver/driver_cloud_grpc_client/grpcclient.cpp

@@ -123,9 +123,12 @@ void grpcclient::run()
                 request.set_kepptime(nkeeptime);
                 request.set_bimportant(bImportant);
                 nid++;
+
+                nlastsend = xTime.elapsed();
                 // The actual RPC.
                 Status status = stub_->upload(&context, request, &reply);
                 if (status.ok()) {
+                    std::cout<<"  data size is "<<nbytesize<<std::endl;
                     std::cout<<nid<<" upload successfully"<<std::endl;
                     if(reply.nres() == 1)
                     {
@@ -152,7 +155,7 @@ void grpcclient::run()
                 }
 
             }
-            nlastsend = xTime.elapsed();
+
 
     }
 }

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 826 - 571
src/driver/driver_grpc_client/ivgrpc.pb.cc


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 454 - 874
src/driver/driver_grpc_client/ivgrpc.pb.h


+ 1 - 1
src/tool/RemoteCtrl/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","picfront");
+    gstrmem_pic[0] = xp.GetParam("PicFront","image00");
     gstrmem_pic[1] = xp.GetParam("PicRear","picrear");
     gstrmem_pic[2] = xp.GetParam("PicLeft","picleft");
     gstrmem_pic[3] = xp.GetParam("PicRight","picright");

+ 2 - 1
src/tool/ivmapmake_sharemem/gps_collect.cpp

@@ -476,6 +476,7 @@ static int32_t cast_3_byte_to_int32(const uint8_t *b)
 GPS_Collect::GPS_Collect(QWidget *parent):
     QWidget(parent)
 {
+    gw = this;
     //gps_collector_close = new boost::signals2::signal<void()>();
 
     this->setObjectName(QStringLiteral("GPS_Collector"));
@@ -824,7 +825,7 @@ GPS_Collect::~GPS_Collect()
 //刷新
 void GPS_Collect::paintEvent(QPaintEvent *)
 {
-    if(pointf.empty()){
+    if(pointf.isEmpty()){
         return;
    }
 

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.