Sfoglia il codice sorgente

Merge branch 'master' of http://116.63.46.168:3000/ADPilot/modularization

fujiankuan 1 anno fa
parent
commit
69a9193080

+ 7 - 7
src/detection/detection_lidar_pointpillars_cuda/include/params.h

@@ -22,17 +22,17 @@ class Params
   public:
     static const int num_classes = 3;
     const char *class_name [num_classes] = { "Car","Pedestrian","Cyclist",};
-    const float min_x_range = -80;
-    const float max_x_range = 80;
-    const float min_y_range = -80;
-    const float max_y_range = 80;
+    const float min_x_range = -20.0;
+    const float max_x_range = 49.12;
+    const float min_y_range = -39.68;
+    const float max_y_range = 39.68;
     const float min_z_range = -3.0;
     const float max_z_range = 1.0;
     // the size of a pillar
-    const float pillar_x_size = 0.4;
-    const float pillar_y_size = 0.4;
+    const float pillar_x_size = 0.16;
+    const float pillar_y_size = 0.16;
     const float pillar_z_size = 4.0;
-    const int max_num_points_per_pillar = 16;
+    const int max_num_points_per_pillar = 32;
     const int num_point_values = 4;
     // the number of feature maps for pillar scatter
     const int num_feature_scatter = 64;

+ 1 - 1
src/detection/detection_lidar_pointpillars_cuda/main.cpp

@@ -139,7 +139,7 @@ void ListenPointCloud(const char * strdata,const unsigned int nSize,const unsign
         pdata[4*i + 0]= static_cast<float>(xp.x);
         pdata[4*i + 1]= static_cast<float>(xp.y);
         pdata[4*i + 2]= static_cast<float>(xp.z);
-        pdata[4*i + 3]= static_cast<float>(xp.intensity);
+        pdata[4*i + 3]= static_cast<float>(xp.intensity) *1.0/256.0 ;
 
 //        pdata[4*i + 0]= 0;
 //        pdata[4*i + 1]= 0;

+ 2 - 0
src/detection/detection_radar_conti_sr308/main.cpp

@@ -64,6 +64,8 @@ void ProcRadarMsg(iv::can::canraw xmsg)
         strdata[4] = 0x08;
         x.set_data(strdata,8);
         iv::can::canmsg xsend;
+        xsend.set_channel(0);
+        xsend.set_index(0);
         iv::can::canraw * praw = xsend.add_rawmsg();
         praw->CopyFrom(x);
         int nsize = xsend.ByteSize();

+ 4 - 0
src/driver/driver_service_maintain/Readme.md

@@ -0,0 +1,4 @@
+driver_service_maintain用来售后维护。
+使用方法,要结合tool_service_maintain来进行。
+driver_service_maintain需要机器上安装上nomachine,并在/home/nvidia/frp目录防止穿透工具frp的frpc程序。
+用户连接车辆的wifi,打开tool_service_maintain会获得一个服务码,将这个服务码告诉售后工程师,售后工程师使用nomachine连接到车辆上的计算单元解决ota不能解决的问题。

+ 5 - 0
src/driver/driver_service_maintain/driver_service_maintain.xml

@@ -0,0 +1,5 @@
+<xml>	
+	<node name="driver_service_maintain">
+		<param name="frpfolder" value="/home/nvidia/frp" />
+	</node>
+</xml>

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

@@ -15,6 +15,7 @@ void LoadParam(std::string strxmlpath,iv::service_maintain_param & xparam)
     xparam.mstrnomachineport = xp.GetParam("local_port","4000");
     xparam.mstrfrpcfolder = xp.GetParam("frpfolder","/home/nvidia/frp");
     xparam.mstrlistenport = xp.GetParam("listenport","60009");
+    xparam.mstrbroadport = xp.GetParam("broadport","60019");
 }
 
 

+ 152 - 6
src/driver/driver_service_maintain/service_maintain.cpp

@@ -7,13 +7,17 @@ service_maintain::service_maintain(iv::service_maintain_param & param)
 {
     mparam = param;
 
+    mnBroadPort = std::atoi(mparam.mstrbroadport.data());
+
     mpServer = new QUdpSocket(this);
 
     mpServer->bind(QHostAddress::Any,std::atoi(mparam.mstrlistenport.data()));
 
+    mpBroad = new QUdpSocket(this);
+
     connect(mpServer,SIGNAL(readyRead()),this,SLOT(onRecvData()));
 
-    StartService();
+ //   StartService();
 
 
 }
@@ -43,20 +47,56 @@ int service_maintain::generateRandomNumber()
 
 void service_maintain::ProcessData(QByteArray & ba)
 {
-
+    if(ba.size()<sizeof(int))
+    {
+        std::cout<<"require data is error."<<std::endl;
+        return;
+    }
+    int nreq; //0 stop 1 start 2 query
+    memcpy(&nreq,ba.data(),sizeof(int));
+    if(nreq == 0)
+    {
+        StopService();
+    }
+    else
+    {
+        if(nreq == 1)
+        {
+            StartService();
+        }
+        else
+        {
+            if(nreq == 2)
+            {
+                BroadStatus();
+            }
+            else
+            {
+                std::cout<<" require code is: "<<nreq<<" Error require."<<std::endl;
+            }
+        }
+    }
 }
 
 void service_maintain::StartService()
 {
-    if((mnServiceCode > 0)&&(mnServcieStatus == 1))
+    if(mnServcieStatus == 1)
     {
-        std::cout<<" Service is opened. "<<std::endl;
+        std::cout<<" Service is Opening. "<<std::endl;
+        BroadStatus();
+        return;
+    }
+    if(mnServcieStatus == 2)
+    {
+        std::cout<<" Service is work."<<std::endl;
+        BroadStatus();
         return;
     }
     int nport = generateRandomNumber();
     nport = nport + 14000;
     mnServiceCode =  nport;
 
+
     std::string strfrpc = mparam.mstrfrpcfolder + "/frpc";
     QFileInfo xFileInfo(strfrpc.data());
     if(xFileInfo.exists() == false)
@@ -65,6 +105,7 @@ void service_maintain::StartService()
         mstrError = "No frpc program.";
         mnServcieStatus = 0;
         std::cout<<"No frpc program."<<std::endl;
+        BroadStatus();
         return;
     }
 
@@ -74,6 +115,7 @@ void service_maintain::StartService()
         mstrError = "frpc program is not executable.";
         mnServcieStatus = 0;
         std::cout<<"frpc program is not executable."<<std::endl;
+        BroadStatus();
         return;
     }
 
@@ -81,6 +123,7 @@ void service_maintain::StartService()
 
     if(mnServiceCode  > 0)
     {
+        mnServcieStatus = 1;
         mpfrpProcess = new QProcess(this);
 
 
@@ -122,12 +165,15 @@ std::string service_maintain::CreateIniFile()
     snprintf(strline,1000,"server_port = %s\n",mparam.mstrserverport.data());xFile.write(strline,strnlen(strline,1000));
     snprintf(strline,1000,"token = %s\n",mparam.mstrtoken.data());xFile.write(strline,strnlen(strline,1000));
     snprintf(strline,1000,"\n");xFile.write(strline,strnlen(strline,1000));
-    snprintf(strline,1000,"[nomachine_tcp]\n");xFile.write(strline,strnlen(strline,1000));
+//    snprintf(strline,1000,"[nomachine_tcp]\n",mnServiceCode);xFile.write(strline,strnlen(strline,1000));
+    snprintf(strline,1000,"[nomachine_tcp_%d]\n",mnServiceCode);xFile.write(strline,strnlen(strline,1000));
     snprintf(strline,1000,"type = tcp\n");xFile.write(strline,strnlen(strline,1000));
     snprintf(strline,1000,"local_ip = 127.0.0.1\n");xFile.write(strline,strnlen(strline,1000));
     snprintf(strline,1000,"local_port = %s\n",mparam.mstrnomachineport.data());xFile.write(strline,strnlen(strline,1000));
     snprintf(strline,1000,"remote_port = %d\n",mnServiceCode);xFile.write(strline,strnlen(strline,1000));
+//    snprintf(strline,1000,"remote_port = %d\n",14000);xFile.write(strline,strnlen(strline,1000));
     xFile.close();
+    return mstrIniFile;
 
 }
 
@@ -138,7 +184,7 @@ void service_maintain::onProcessStarted()
 
 void service_maintain::onProcessEnd()
 {
-    QProcess * proc = (QProcess *)sender();
+//    QProcess * proc = (QProcess *)sender();
 }
 
 void service_maintain::onChRead()
@@ -152,6 +198,58 @@ void service_maintain::onReadStandardOutput()
     QByteArray ba = proc->readAllStandardOutput();
     std::cout<<"Std Out:"<<std::endl;
     std::cout<<ba.data()<<std::endl;
+
+    QString str(ba);
+    if(str.contains("i/o timeout"))
+    {
+        mnServiceCode = -2;
+        mstrError = "Can't Connect Server.Please Check Network";
+        mnServcieStatus = 0;
+        std::cout<<"Can't Connect Server.Please Check Network."<<std::endl;
+        BroadStatus();//Send Status Code.
+    }
+    if(str.contains("connect: connection refused"))
+    {
+        mnServiceCode = -3;
+        mstrError = "Connect Server Fail.Please Check xml, Maybe server port not correct. ";
+        mnServcieStatus = 0;
+        std::cout<<"Connect Server Fail.Please Check xml, Maybe server port not correct. "<<std::endl;
+        BroadStatus();//Send Status Code.
+    }
+    if(str.contains("token in login doesn't match token from configuration"))
+    {
+        mnServiceCode = -4;
+        mstrError = "token error.Please Check xml, Maybe token not correct. ";
+        mnServcieStatus = 0;
+        std::cout<<"token error.Please Check xml, Maybe token not correct. "<<std::endl;
+        BroadStatus();//Send Status Code.
+    }
+    if(str.contains("start error: port already used"))
+    {
+        mnServiceCode = -5;
+        mstrError = "port already used.Please re start. ";
+        mnServcieStatus = 0;
+        std::cout<<"port already used.Please re start.  "<<std::endl;
+        BroadStatus();//Send Status Code.
+    }
+    if(str.contains("] is already in use"))
+    {
+        mnServiceCode = -6;
+        mstrError = "Service Name already used.Please re start. ";
+        mnServcieStatus = 0;
+        std::cout<<"Service Name already used.Please re start.  "<<std::endl;
+        BroadStatus();//Send Status Code.
+    }
+    if(str.contains("start proxy success"))
+    {
+        mstrError = "Success.";
+        mnServcieStatus = 2;
+        std::cout<<" Success."<<std::endl;
+        BroadStatus();
+    }
+
+
+
 }
 
 void service_maintain::onReadStandardError()
@@ -162,3 +260,51 @@ void service_maintain::onReadStandardError()
     std::cout<<ba.data()<<std::endl;
 }
 
+void service_maintain::StopService()
+{
+    if(mnServcieStatus == 0)
+    {
+        std::cout<<" Service is closed."<<std::endl;
+        mnServiceCode = 0;
+        BroadStatus();//Broad
+        //Not Need Stop
+
+        return;
+    }
+    if(mnServcieStatus == 1 )
+    {
+        mnServiceCode = 0;
+        mnServcieStatus = 0;
+        BroadStatus();
+        return;
+    }
+
+    std::cout<<" End frp program."<<std::endl;
+    mpfrpProcess->kill();
+    mnServcieStatus = 0;
+    mnServiceCode = 0;
+    BroadStatus();
+    //Broad Status
+
+}
+
+void service_maintain::BroadStatus()
+{
+    char strout[1000];
+    int nsize = 2*sizeof(int);
+    memcpy(strout,&mnServiceCode,sizeof(int));
+    memcpy(strout+sizeof(int),&mnServcieStatus,sizeof(int));
+    if(mnServcieStatus == 0)
+    {
+        if(mnServiceCode<0)
+        {
+            memcpy(strout+2*sizeof(int),mstrError.data(),mstrError.length());
+            nsize = nsize + mstrError.length();
+        }
+    }
+
+    mpBroad->writeDatagram(strout,nsize,QHostAddress::Broadcast,mnBroadPort);
+//    mpBroad->writeDatagram(strout,nsize,QHostAddress("10.16.1.239"),mnBroadPort);
+    //Broad Data;
+}
+

+ 7 - 1
src/driver/driver_service_maintain/service_maintain.h

@@ -22,6 +22,7 @@ struct service_maintain_param
 //    std::string mstrnomachineremoteport;
     std::string mstrfrpcfolder;
     std::string mstrlistenport;
+    std::string mstrbroadport;
 };
 
 }
@@ -45,9 +46,14 @@ private:
     iv::service_maintain_param mparam;
 
     QUdpSocket * mpServer;
+    QUdpSocket * mpBroad;
 
     void ProcessData(QByteArray & ba);
 
+    void BroadStatus();
+
+    int mnBroadPort;
+
 private:
     void StartService();
     void StopService();
@@ -57,7 +63,7 @@ private:
     void DeleteIniFile();
 
 
-    int mnServcieStatus = 0;  //0 not open  1 open
+    int mnServcieStatus = 0;  //0 not open  1 opening   2 work
     int mnServiceCode = 0;    // >0 OK -1 Fail
     std::string mstrError;
     std::string mstrIniFile;

+ 1 - 0
src/tool/tool_service_maintain/Readme.md

@@ -0,0 +1 @@
+和driver_service_maintain配合使用,查看那个项目的Readme.md就可以。

+ 11 - 0
src/tool/tool_service_maintain/main.cpp

@@ -0,0 +1,11 @@
+#include "mainwindow.h"
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+    QApplication a(argc, argv);
+    MainWindow w;
+    w.show();
+
+    return a.exec();
+}

+ 109 - 0
src/tool/tool_service_maintain/mainwindow.cpp

@@ -0,0 +1,109 @@
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+
+#include <memory>
+
+MainWindow::MainWindow(QWidget *parent) :
+    QMainWindow(parent),
+    ui(new Ui::MainWindow)
+{
+    ui->setupUi(this);
+
+    mpSocket = new QUdpSocket(this);
+    mpSocketListen = new QUdpSocket(this);
+
+    mpSocketListen->bind(QHostAddress::Any,60019);//
+
+    connect(mpSocketListen,SIGNAL(readyRead()),this,SLOT(onRecvData()));
+
+#ifdef ANDROID
+    ui->pushButton_Start->setGeometry(100,100,600,100);
+    ui->pushButton_Stop->setGeometry(100,300,600,100);
+    ui->pushButton_Query->setGeometry(100,500,600,100);
+    ui->plainTextEdit->setGeometry(100,800,600,600);
+#endif
+
+}
+
+MainWindow::~MainWindow()
+{
+    delete ui;
+}
+
+void MainWindow::on_pushButton_Start_clicked()
+{
+    ui->plainTextEdit->setPlainText("");
+    int nCode = 1;
+    char strout[100];
+    memcpy(strout,&nCode,sizeof(int));
+    mpSocket->writeDatagram(strout,sizeof(int),QHostAddress::Broadcast,60009);
+}
+
+void MainWindow::on_pushButton_Stop_clicked()
+{
+    ui->plainTextEdit->setPlainText("");
+    int nCode = 0;
+    char strout[100];
+    memcpy(strout,&nCode,sizeof(int));
+    mpSocket->writeDatagram(strout,sizeof(int),QHostAddress::Broadcast,60009);
+}
+
+void MainWindow::on_pushButton_Query_clicked()
+{
+    ui->plainTextEdit->setPlainText("");
+    int nCode = 2;
+    char strout[100];
+    memcpy(strout,&nCode,sizeof(int));
+    mpSocket->writeDatagram(strout,sizeof(int),QHostAddress::Broadcast,60009);
+}
+
+void MainWindow::onRecvData()
+{
+    while(mpSocketListen->hasPendingDatagrams())
+    {
+        QByteArray ba;
+        ba.resize(static_cast<int>(mpSocketListen->bytesAvailable()) );
+        mpSocketListen->readDatagram(ba.data(),ba.size());
+        if(ba.size()>=2*static_cast<int>(sizeof(int)))
+        {
+            char * pdata = ba.data();
+            int nsize = static_cast<int>(ba.size());
+            int nservicecode,nservicestatus;
+            memcpy(&nservicecode,pdata,sizeof(int));
+            memcpy(&nservicestatus,pdata+sizeof(int),sizeof(int));
+            unsigned long nerrorlen = static_cast<unsigned long>(nsize-2*static_cast<int>(sizeof(int)));
+            std::shared_ptr<char> pstrerr_ptr = std::shared_ptr<char>(new char[nerrorlen +1]);
+            if(nsize>2*static_cast<int>(sizeof(int)))
+            {
+                memcpy(pstrerr_ptr.get(),pdata+2*sizeof(int),nerrorlen);
+                pstrerr_ptr.get()[nerrorlen] = 0;
+            }
+            switch (nservicestatus) {
+            case 0:
+                if(nservicecode == 0)
+                {
+                    ui->plainTextEdit->setPlainText("Init Status.");
+
+                }
+                else
+                {
+                    ui->plainTextEdit->setPlainText(pstrerr_ptr.get());
+                }
+                break;
+            case 1:
+                ui->plainTextEdit->setPlainText("Starting Service.");
+                break;
+            case 2:
+                {
+                    char strout[1000];
+                    snprintf(strout,1000,"Service Code: %d",nservicecode);
+                    ui->plainTextEdit->setPlainText(strout);
+                }
+                break;
+            default:
+                break;
+
+            }
+        }
+    }
+}

+ 35 - 0
src/tool/tool_service_maintain/mainwindow.h

@@ -0,0 +1,35 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QUdpSocket>
+
+namespace Ui {
+class MainWindow;
+}
+
+class MainWindow : public QMainWindow
+{
+    Q_OBJECT
+
+public:
+    explicit MainWindow(QWidget *parent = 0);
+    ~MainWindow();
+
+private slots:
+    void on_pushButton_Start_clicked();
+
+    void on_pushButton_Stop_clicked();
+
+    void on_pushButton_Query_clicked();
+
+    void onRecvData();
+
+private:
+    Ui::MainWindow *ui;
+
+    QUdpSocket * mpSocket;
+    QUdpSocket * mpSocketListen;
+};
+
+#endif // MAINWINDOW_H

+ 90 - 0
src/tool/tool_service_maintain/mainwindow.ui

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>572</width>
+    <height>488</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>MainWindow</string>
+  </property>
+  <widget class="QWidget" name="centralWidget">
+   <widget class="QPushButton" name="pushButton_Start">
+    <property name="geometry">
+     <rect>
+      <x>40</x>
+      <y>50</y>
+      <width>100</width>
+      <height>50</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>开启</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="pushButton_Stop">
+    <property name="geometry">
+     <rect>
+      <x>220</x>
+      <y>50</y>
+      <width>100</width>
+      <height>50</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>关闭</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="pushButton_Query">
+    <property name="geometry">
+     <rect>
+      <x>400</x>
+      <y>50</y>
+      <width>100</width>
+      <height>50</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>查询</string>
+    </property>
+   </widget>
+   <widget class="QPlainTextEdit" name="plainTextEdit">
+    <property name="geometry">
+     <rect>
+      <x>40</x>
+      <y>130</y>
+      <width>491</width>
+      <height>181</height>
+     </rect>
+    </property>
+   </widget>
+  </widget>
+  <widget class="QMenuBar" name="menuBar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>572</width>
+     <height>28</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QToolBar" name="mainToolBar">
+   <attribute name="toolBarArea">
+    <enum>TopToolBarArea</enum>
+   </attribute>
+   <attribute name="toolBarBreak">
+    <bool>false</bool>
+   </attribute>
+  </widget>
+  <widget class="QStatusBar" name="statusBar"/>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>

+ 34 - 0
src/tool/tool_service_maintain/tool_service_maintain.pro

@@ -0,0 +1,34 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2023-03-27T09:49:54
+#
+#-------------------------------------------------
+
+QT       += core gui network
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = tool_service_maintain
+TEMPLATE = app
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which has been marked as 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
+
+# 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 \
+        mainwindow.cpp
+
+HEADERS += \
+        mainwindow.h
+
+FORMS += \
+        mainwindow.ui