Bladeren bron

fix(grpc_client_BS):add some parameter to yaml

孙嘉城 3 jaren geleden
bovenliggende
commit
a0d94673c2

+ 0 - 147
src/driver/driver_cloud_grpc_client_BS/driver_cloud_grpc_client_BS(abandoned).proto

@@ -1,147 +0,0 @@
-// Copyright 2015 gRPC authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-syntax = "proto3";
-
-//option java_multiple_files = true;
-//option java_package = "io.grpc.adc.dataexchange";
-//option java_outer_classname = "dataexchangeproto";
-//option objc_class_prefix = "HLW";
-
-package iv.cloud_bs;
-
-service DataExchange {
-  rpc DataExchange (UplinkRequest) returns (DownlinkReply) {}
-  rpc UploadMap(UploadMapRequest) returns(UploadMapReply) {}
-}
-
-enum VechileStatus{
-    STATUS_UNKOWN = 0;
-    STATUS_MANUAL = 1;
-    STATUS_AUTO = 2;
-    STATUS_REMOTE = 3;
-    STATUS_EMERGENCY_STOP = 4;
-    STATUS_ERROR = 5;
-}
-
-enum ShiftStatus{
-    SHIFT_UNKOWN = 0;
-    SHIFT_ERROR = 1;
-    SHIFT_INTERVAL = 2;
-    SHIFT_PARKING = 3;
-    SHIFT_REVERSE = 4;
-    SHIFT_NEUTRAL = 5;
-    SHIFT_DRIVE = 6;
-    SHIFT_SPORT = 7;
-
-    SHIFT_LOW = 10;
-    SHIFT_LEVEL1 = 11;
-    SHIFT_LEVEL2 = 12;
-    SHIFT_LEVEL3 = 13;
-    SHIFT_LEVEL4 = 14;
-    SHIFT_LEVEL5 = 15;
-    SHIFT_LEVEL6 = 16;
-    SHIFT_LEVEL7 = 17;
-    SHIFT_LEVEL8 = 18;
-    SHIFT_LEVEL9 = 19;
-    SHIFT_LEVEL10 = 20;
-}
-
-message GPSPoint{
-    double latitude = 1;
-    double longitude = 2;
-    double height = 3;
-}
-
-message UplinkRequest {
-    string id = 1;
-    int64 timeStamp = 2;
-    double SOC = 3; //0.0-100.0%
-    VechileStatus statusFeedback = 4;
-    double mileage = 5; // kilometer
-    double speed = 6; // m/s
-    ShiftStatus shiftFeedback = 7;
-    double steeringWheelAngleFeedback = 8; //+/-540 degree
-    double throttleFeedback = 9;
-    double brakeFeedback = 10;
-    int32 GPSRTKStatus = 11; //GPS-RTK status 0-6 6 is best
-    GPSPoint positonFeedback = 12;
-    double pitch = 13;
-    double roll = 14;
-    double heading = 15;
-    bytes cameraImageFront = 16;
-    bytes cameraImageRear = 17;
-    bytes cameraImageLeft = 18;
-    bytes cameraImageRight = 19;
-
-    bool isTVR = 20; //Traffic Violation Recognition
-    int32 violationStatus = 21; //0 no violation 1 overspeed 2 illegal parking 3 direction wrong 4 run the red light
-    string vehicleLicenseNumber = 22;
-    bytes violationImage = 23;
-    int64 violationTime = 24; //time when get violationImage
-    GPSPoint violationPosition = 25; //positon when get violationImage
-
-    bool isFSM = 26; //Fire and Smoke Monitor
-    int32 fireStatus = 27; //0 no fire 1 has fire
-    bytes fireImage = 28;
-    int64 fireTime = 29; //time when get fireImage
-    GPSPoint firePosition = 30; //positon when get fireImage
-
-    bool isTSGM = 31; //Turn Stile Gate Monitor
-    int32 gateStatus = 32; //0 no gate 1 gate close 2 gate open
-    bytes gateImage = 33;
-    int64 gateTime = 34; //time when get gateImage
-    GPSPoint gatePosition = 35; //positon when get gateImage
-
-    bool sensorStatusGPSIMU = 36; //0 GPS-IMU ok 1 GPS-IMU error
-    bool sensorStatusLidar = 37;
-    bool sensorStatusRadar = 38;
-    bool sensorStatusCamFront = 39;
-    bool sensorStatusCamRear = 40;
-    bool sensorStatusCamLeft = 41;
-    bool sensorStatusCamRight = 42;
-
-    int32 isArrived = 43; //0 no destination 1 not arrived 2 arrived
-}
-
-enum CtrlMode{
-    CMD_AUTO = 0;
-    CMD_REMOTE = 1;
-    CMD_EMERGENCY_STOP = 2;
-}
-
-
-message DownlinkReply {
-    CtrlMode modeCMD = 1; //mode change command
-    ShiftStatus shiftCMD = 2;
-    double steeringWheelAngleCMD = 3; //in remote mode
-    double throttleCMD = 4;
-    double brakeCMD = 5;
-    GPSPoint destinationPosition = 6; //in auto mode
-}
-
-message MapPoint{
-    int64 index = 1;
-    GPSPoint mapPoint = 2;
-}
-
-message UploadMapRequest{
-    int32 id = 1;
-    repeated MapPoint mapPoints = 2;
-}
-
-message UploadMapReply{
-    int32 id = 1;
-    bool isGetMap = 2;
-}

+ 5 - 2
src/driver/driver_cloud_grpc_client_BS/driver_cloud_grpc_client_BS.pro

@@ -32,7 +32,9 @@ SOURCES += \
         main.cpp \
         vehicle_control.cpp \
         vehicle_patrol.cpp \
-        vehicle_upload.cpp
+        vehicle_upload.cpp \
+        ../../include/msgtype/remotectrl.pb.cc
+
 
 # Default rules for deployment.
 qnx: target.path = /tmp/$${TARGET}/bin
@@ -76,6 +78,7 @@ HEADERS += \
         VehicleUpload_service.pb.h \
         vehicle_control.h \
         vehicle_patrol.h \
-        vehicle_upload.h
+        vehicle_upload.h \
+        ../../include/msgtype/remotectrl.pb.h
 
 #before compile in ubuntu20.04 : sudo apt install libyaml-cpp-dev libgrpc++-dev

+ 22 - 1
src/driver/driver_cloud_grpc_client_BS/driver_cloud_grpc_client_BS.yaml

@@ -1,4 +1,4 @@
-server : 139.9.235.66
+server : 111.33.136.150
 upload_port : 10591
 patrol_port : 10592
 control_port : 20591
@@ -10,3 +10,24 @@ uploadmapinterval : 1000
 
 id : 1234567890123456789H
 plateNumber : 津A123456
+
+pic_front:
+  msgname: pic_front
+  buffersize: 10000000
+  buffercount: 1
+pic_rear:
+  msgname: pic_rear
+  buffersize: 10000000
+  buffercount: 1
+pic_left:
+  msgname: pic_left
+  buffersize: 10000000
+  buffercount: 1
+pic_right:
+  msgname: pic_right
+  buffersize: 10000000
+  buffercount: 1
+remote_ctrl:
+  msgname: remotectrl
+  buffersize: 10000
+  buffercount: 1

+ 93 - 2
src/driver/driver_cloud_grpc_client_BS/main.cpp

@@ -6,10 +6,27 @@
 #include "vehicle_upload.h"
 #include "vehicle_control.h"
 #include "vehicle_patrol.h"
+#include "modulecomm.h"
 
 #include <QFile>
 #include <QString>
 #include <QStringList>
+#include <QMetaType>
+
+namespace iv {
+struct msgunit
+{
+    char mstrmsgname[256];
+    int mnBufferSize = 10000;
+    int mnBufferCount = 1;
+    void * mpa;
+    std::shared_ptr<char> mpstrmsgdata;
+    int mndatasize = 0;
+    bool mbRefresh = false;
+    bool mbImportant = false;
+    int mnkeeptime = 100;
+};
+}
 
 std::string gstrserverip =  "139.9.235.66";//"123.57.212.138";
 std::string gstruploadPort = "10591";//"9000";
@@ -22,6 +39,12 @@ std::string gstruploadMapInterval = "500";
 std::string gstrid = "1234567890123456789H";
 std::string gstrplateNumber = "津A123456";
 
+iv::msgunit shmPicFront;
+iv::msgunit shmPicRear;
+iv::msgunit shmPicLeft;
+iv::msgunit shmPicRight;
+iv::msgunit shmRemoteCtrl;
+
 void dec_yaml(const char * stryamlpath)
 {
 
@@ -85,6 +108,68 @@ void dec_yaml(const char * stryamlpath)
         gstrplateNumber = config["plateNumber"].as<std::string>();
     }
 
+    std::string strmsgname;
+
+    if(config["pic_front"])
+    {
+        if(config["pic_front"]["msgname"]&&config["pic_front"]["buffersize"]&&config["pic_front"]["buffercount"])
+        {
+            strmsgname = config["pic_front"]["msgname"].as<std::string>();
+            strncpy(shmPicFront.mstrmsgname,strmsgname.data(),255);
+            shmPicFront.mnBufferSize = config["pic_front"]["buffersize"].as<int>();
+            shmPicFront.mnBufferCount = config["pic_front"]["buffercount"].as<int>();
+//            std::cout << shmPicFront.mstrmsgname << shmPicFront.mnBufferSize << shmPicFront.mnBufferCount << std::endl;
+        }
+    }
+
+    if(config["pic_rear"])
+    {
+        if(config["pic_rear"]["msgname"]&&config["pic_rear"]["buffersize"]&&config["pic_rear"]["buffercount"])
+        {
+            strmsgname = config["pic_rear"]["msgname"].as<std::string>();
+            strncpy(shmPicRear.mstrmsgname,strmsgname.data(),255);
+            shmPicRear.mnBufferSize = config["pic_rear"]["buffersize"].as<int>();
+            shmPicRear.mnBufferCount = config["pic_rear"]["buffercount"].as<int>();
+//            std::cout << shmPicRear.mstrmsgname << shmPicRear.mnBufferSize << shmPicRear.mnBufferCount << std::endl;
+        }
+    }
+
+    if(config["pic_left"])
+    {
+        if(config["pic_left"]["msgname"]&&config["pic_left"]["buffersize"]&&config["pic_left"]["buffercount"])
+        {
+            strmsgname = config["pic_left"]["msgname"].as<std::string>();
+            strncpy(shmPicLeft.mstrmsgname,strmsgname.data(),255);
+            shmPicLeft.mnBufferSize = config["pic_left"]["buffersize"].as<int>();
+            shmPicLeft.mnBufferCount = config["pic_left"]["buffercount"].as<int>();
+//            std::cout << shmPicLeft.mstrmsgname << shmPicLeft.mnBufferSize << shmPicLeft.mnBufferCount << std::endl;
+        }
+    }
+
+    if(config["pic_right"])
+    {
+        if(config["pic_right"]["msgname"]&&config["pic_right"]["buffersize"]&&config["pic_right"]["buffercount"])
+        {
+            strmsgname = config["pic_right"]["msgname"].as<std::string>();
+            strncpy(shmPicRight.mstrmsgname,strmsgname.data(),255);
+            shmPicRight.mnBufferSize = config["pic_right"]["buffersize"].as<int>();
+            shmPicRight.mnBufferCount = config["pic_right"]["buffercount"].as<int>();
+//            std::cout << shmPicRight.mstrmsgname << shmPicRight.mnBufferSize << shmPicRight.mnBufferCount << std::endl;
+        }
+    }
+
+    if(config["remote_ctrl"])
+    {
+        if(config["remote_ctrl"]["msgname"]&&config["remote_ctrl"]["buffersize"]&&config["remote_ctrl"]["buffercount"])
+        {
+            strmsgname = config["remote_ctrl"]["msgname"].as<std::string>();
+            strncpy(shmRemoteCtrl.mstrmsgname,strmsgname.data(),255);
+            shmRemoteCtrl.mnBufferSize = config["remote_ctrl"]["buffersize"].as<int>();
+            shmRemoteCtrl.mnBufferCount = config["remote_ctrl"]["buffercount"].as<int>();
+//            std::cout << shmRemoteCtrl.mstrmsgname << shmRemoteCtrl.mnBufferSize << shmRemoteCtrl.mnBufferCount << std::endl;
+        }
+    }
+
     return;
 }
 
@@ -102,6 +187,7 @@ int main(int argc, char *argv[])
     {
         strncpy(stryamlpath,argv[1],255);
     }
+
     dec_yaml(stryamlpath);
 
     std::string control_str = gstrserverip+":";
@@ -113,12 +199,16 @@ int main(int argc, char *argv[])
     std::string upload_str = gstrserverip+":";
     upload_str = upload_str + gstruploadPort ;
 
+//    std::cout<<upload_str<<std::endl;
     DataExchangeClient *vehicleuploaddata = new DataExchangeClient(grpc::CreateChannel(upload_str, grpc::InsecureChannelCredentials()));
     vehicleuploaddata->start();
 
+//    std::cout<<control_str<<std::endl;
     VehicleChangeCtrlModeClient *vehiclechangectrlmode = new VehicleChangeCtrlModeClient(grpc::CreateChannel(control_str, grpc::InsecureChannelCredentials()));
     VehicleControlClient *vehiclecontrol = new VehicleControlClient(grpc::CreateChannel(control_str, grpc::InsecureChannelCredentials()));
+    qRegisterMetaType<org::jeecg::defsControl::grpc::CtrlMode>("org::jeecg::defsControl::grpc::CtrlMode"); ///< to solve the problem of signal and slot being in different threads
     QObject::connect(vehiclechangectrlmode,&VehicleChangeCtrlModeClient::ctrlMode_Changed,vehiclecontrol,&VehicleControlClient::ctrlMode_Changed_Slot);
+//    QObject::connect(vehiclechangectrlmode,&VehicleChangeCtrlModeClient::ctrlMode_Changed,vehicleuploaddata,&DataExchangeClient::ctrlMode_Changed_Slot);
     vehiclechangectrlmode->start();
     vehiclecontrol->start();
 
@@ -127,8 +217,9 @@ int main(int argc, char *argv[])
     QObject::connect(vehicleuploaddata,&DataExchangeClient::uploadPath_Finished,vehicleuploadmap,&VehicleUploadMapClient::uploadPath_Finished_Slot);
     vehicleuploadmap->start();
 
-    VehiclePatrolExceptionClient vehiclepatrol(grpc::CreateChannel(patrol_str, grpc::InsecureChannelCredentials()));
-    vehiclepatrol.start();
+//    std::cout<<patrol_str<<std::endl;
+//    VehiclePatrolExceptionClient vehiclepatrol(grpc::CreateChannel(patrol_str, grpc::InsecureChannelCredentials()));
+//    vehiclepatrol.start();
 
     return a.exec();
 }

+ 2 - 2
src/driver/driver_cloud_grpc_client_BS/vehicle_control.cpp

@@ -94,7 +94,7 @@ void VehicleControlClient::run()
         if((xTime.elapsed() - lastTime)>=interval)
         {
             std::string reply = vehicleControl();
-        //    std::cout<< reply <<std::endl;
+            std::cout<< reply <<std::endl;
             if(modeCMD == CtrlMode::CMD_REMOTE || modeCMD == CtrlMode::CMD_CLOUD_PLATFORM)
             {
                 updateControlData();
@@ -175,7 +175,7 @@ void VehicleChangeCtrlModeClient::run()
         if((xTime.elapsed() - lastTime)>=interval)
         {
             std::string reply = changeCtrlMode();
-        //    std::cout<< reply <<std::endl;
+            std::cout<< reply <<std::endl;
             updateCtrolMode();
             lastTime = xTime.elapsed();
         }

+ 2 - 2
src/driver/driver_cloud_grpc_client_BS/vehicle_control.h

@@ -48,7 +48,7 @@ private:
     double throttleCMD = 0;
     double brakeCMD = 0;
 
-    org::jeecg::defsControl::grpc::CtrlMode modeCMD; ///< update by slot function
+    org::jeecg::defsControl::grpc::CtrlMode modeCMD = org::jeecg::defsControl::grpc::CtrlMode::CMD_EMERGENCY_STOP; ///< update by slot function
 
 public slots:
     void ctrlMode_Changed_Slot(org::jeecg::defsControl::grpc::CtrlMode ctrlMode);
@@ -71,7 +71,7 @@ protected:
 private:
     std::unique_ptr<VehicleControl::Stub> stub_;
 
-    org::jeecg::defsControl::grpc::CtrlMode modeCMD;
+    org::jeecg::defsControl::grpc::CtrlMode modeCMD = org::jeecg::defsControl::grpc::CtrlMode::CMD_EMERGENCY_STOP;
 
 signals:
     void ctrlMode_Changed(org::jeecg::defsControl::grpc::CtrlMode ctrlMode);

+ 6 - 1
src/driver/driver_cloud_grpc_client_BS/vehicle_upload.cpp

@@ -201,7 +201,7 @@ void DataExchangeClient::updateData(void)
 
     plateNumber = gstrplateNumber;
 
-    modeFeedback = CtrlMode::CMD_REMOTE; //mode Feedback
+//    modeFeedback = CtrlMode::CMD_REMOTE; //mode Feedback
 }
 
 void DataExchangeClient::updatePath(std::string pathID, QVector<MapPoint> points)
@@ -257,3 +257,8 @@ void DataExchangeClient::patrolPOI_Recieved_Slot(std::string pathID)
     updatePath(pathID,somePoints);
     uploadPath();
 }
+
+void DataExchangeClient::ctrlMode_Changed_Slot(org::jeecg::defsDetails::grpc::CtrlMode ctrlMode)
+{
+    modeFeedback = ctrlMode;
+}

+ 2 - 1
src/driver/driver_cloud_grpc_client_BS/vehicle_upload.h

@@ -53,7 +53,7 @@ private:
     VehicleStatus statusFeedback = VehicleStatus::STATUS_EMERGENCY_STOP;
     double mileage; // kilometer
     double speed; // m/s
-    org::jeecg::defsDetails::grpc::ShiftStatus shiftFeedback;
+    org::jeecg::defsDetails::grpc::ShiftStatus shiftFeedback = org::jeecg::defsDetails::grpc::ShiftStatus::SHIFT_PARKING;
     double steeringWheelAngleFeedback; //+/-540 degree
     double throttleFeedback;
     double brakeFeedback;
@@ -92,6 +92,7 @@ signals:
 
 public slots:
     void patrolPOI_Recieved_Slot(std::string pathID);
+    void ctrlMode_Changed_Slot(org::jeecg::defsDetails::grpc::CtrlMode ctrlMode);
 };
 
 #endif // VEHICLE_UPLOAD_H