123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435 |
- #ifndef ADCINTELLIGENTVEHICLE_H
- #define ADCINTELLIGENTVEHICLE_H
- #include <QMainWindow>
- #include <QtWidgets/QMainWindow>
- #include <common/boost.h>
- //#include <control/control_status.h>
- //#include <control/can.h>
- #include "ui_ADCIntelligentVehicle.h"
- //#include <decition/brain.h>
- //#include <control/can.h>
- #include "look.h"
- #include <common/car_status.h>
- #include <qtimer.h>
- #include <qpainter.h>
- #include <QGraphicsView>
- #include <QWheelEvent>
- #include <QKeyEvent>
- #include <QPoint>
- #include <QPointF>
- #include <qfiledialog.h>
- #include <qmessagebox.h>
- #include <QCloseEvent>
- #include <qabstractscrollarea.h>
- #include <QGraphicsItem>
- #include <QKeyEvent>
- #include <qpainter.h>
- #include <QDebug>
- #include <string>
- #include <cassert>
- #include <iostream>
- #include <sstream>
- #include <math.h>
- #include <mobileye_info.h>
- #include <QUdpSocket>
- #include <QHostAddress>
- #include <QTime>
- #include <QSet>
- #include <QtWebEngineWidgets/QtWebEngineWidgets>
- #include "common/can_type.h"
- #include "common/decition_type.h"
- #include "common/vehiclestate_type.h"
- #include "common/hmi_type.h"
- #include "common/lidar.h"
- #include "common/obstacle_type.h"
- #include "common/constants.h"
- #include "../../../src/decition/common/common/tracepointstation.h"
- #include "modulecomm.h"
- #include <QMutex>
- #include <thread>
- //#include <platform/platform.h>
- #include "hmi.pb.h"
- #include "gpsimu.pb.h"
- #include "radarobjectarray.pb.h"
- #include "decition.pb.h"
- #include "brainstate.pb.h"
- #include "canstate.pb.h"
- #include "v2x.pb.h"
- #include "mobileye.pb.h"
- #include "ivlog.h"
- #include "mapreq.pb.h"
- #include "vbox.pb.h"
- #include "fusionobject.pb.h"
- #include "fusionobjectarray.pb.h"
- #include "brainrunstate.pb.h"
- extern iv::Ivlog * gIvlog;
- #define USE_PAD_CTRL
- class MyView : public QGraphicsView
- {
- Q_OBJECT
- public:
- MyView(QWidget *parent);
- qreal x, y, beishu; //倍数
- protected:
- void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE; //Q_DECL_OVERRIDE也就是c++的override 作用是防止写错虚函数:
- void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
- void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- void keyReleaseEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
- signals:
- void CtrlManual(bool bManual);
- public:
- QSet<int> mPressKeys;
- public Q_SLOTS:
- void zoomIn(); // 放大
- void zoomOut(); // 缩小
- private:
- bool bottonstatus = false;
- QPoint myview_lastMousePos;
- };
- namespace Ui {
- class ADCIntelligentVehicle;
- }
- struct packageHead
- {
- unsigned char type;
- int size;
- };
- struct dataInfo //与PAD通信结构体
- {
- unsigned char is_run = 0;
- unsigned char is_mapLoad = 0;
- unsigned char is_initSuccess = 0;
- double speed;
- double accelerate;
- double brake;
- double swerve;
- double gps_lng;
- double gps_lat;
- double gps_head;
- double radarobs;
- double lidarobs;
- double obs;
- unsigned char RTKstatus;
- unsigned char radarStatus;
- unsigned char lidarStatus;
- unsigned char boche_status;
- };
- class DataToUI
- {
- public:
- struct packageHead mHead;
- struct dataInfo mInfo;
- };
- //Split Map to Some Domain for quick find gps point for draw.
- namespace iv {
- struct MapPointDomain
- {
- public:
- int mxpos;
- int mypos;
- std::vector<iv::GPSData> mvectorgpsdata;
- };
- }
- class ADCIntelligentVehicle : public QMainWindow
- {
- Q_OBJECT
- public:
- explicit ADCIntelligentVehicle(QWidget *parent = 0);
- ~ADCIntelligentVehicle();
- signals:
- void otaversion(const char * strversion);
- public slots:
- void savestabuyEditinfo(const QString &txt);
- // void on_pb_load_navigation_data_clicked(); //加载地图 当前没有实现
- void on_pb_start_all_clicked(); //启动无人驾驶
- // void on_pb_open_can_card_clicked(); //打开can
- void on_pb_auto_drive_mode_clicked(); //自动驾驶使能
- void on_pb_auto_braking_mode_clicked(); //自动刹车使能
- void on_pb_auto_accelerate_mode_clicked(); //自动油门使能
- void on_pb_auto_wheel_mode_clicked(); //自动方向盘使能
- void on_pushButton_clicked();
- void on_pb_speed_control_mode_clicked(); //速度控制模式使能
- void on_hs_braking_percent_valueChanged(int value); //响应刹车压力改变
- void on_hs_accelerate_percent_valueChanged(int value); //响应油门改变
- void on_hs_wheel_angle_valueChanged(int value); //响应方向盘改变
- // void on_pushButton_2_clicked(); //打开地图采集器
- void on_pushButton_3_clicked();
- void on_pushButton_4_clicked();
- void on_timer_car_status_time_out(); //获取车辆状态定时器响应
- void on_timer_mobileye_info_time_out();
- virtual void paintEvent(QPaintEvent *);
- void timeoutslot();
- void onRecvUDP();
- void onStateTimer();
- void onStateTimerMap();
- void onStateTimer1();
- void onotaversion(const char * strversion);
- protected:
- void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;// 加/减键进行缩放
- void closeEvent(QCloseEvent *event);
- private slots:
- void on_listWidget_clicked();
- void on_pushButton_5_clicked();
- void on_pushButton_6_clicked();
- void on_pushButton_7_clicked();
- void on_pushButton_8_clicked();
- void on_pushButton_9_clicked();
- void onTimerManual();
- void onCtrlManual(bool bCtrl);
- void on_pb_v2xEn_clicked();
- void on_pBtn_door_open_clicked();
- void on_pBtn_door_close_clicked();
- void on_pBtn_low_beam_open_clicked();
- void on_pBtn_low_beam_close_clicked();
- void on_pBtn_high_beam_open_clicked();
- void on_pBtn_high_beam_close_clicked();
- private:
- Ui::ADCIntelligentVehicle *ui;
- /**************************************/
- QWebEngineView * mMapview;
- /**************************************/
- // boost::shared_ptr<iv::decition::BrainDecition> brain;
- bool is_brain_running_flag_ = false;
- bool is_map_loaded_flag_ = false;
- bool is_can_opened_ = false;
- bool is_auto_drive_mode_enable_ = false;
- bool is_auto_braking_mode_enable_ = false;
- bool is_auto_accelerate_mode_enable_ = false;
- bool is_auto_wheel_mode_enable_ = false;
- bool is_3 = false;
- bool is_speed_control_mode_enable_ = false;
- bool is_show_enable = false;
- Look_decition *look_decition;
- Mobileye_info *mobileye_info;
- Qt::MouseButton m_translateButton; // 平移按钮
- qreal m_translateSpeed; // 平移速度
- qreal m_zoomDelta; // 缩放的增量
- bool m_bMouseTranslate; // 平移标识
- QPoint m_lastMousePos; // 鼠标最后按下的位置
- qreal m_scale; // 缩放值
- QTimer * timer_car_status;
- QTimer * timer_mobileye_info;
- qreal horizontalOffset;
- qreal verticalOffset;
- qreal scaleFactor;
- qreal currentStepScaleFactor;
- QImage *image,*image_small;
- QPainter *painter,*painter_small;
- MyView *myview,*myview_small;
- QTimer *timer;
- QGraphicsScene *scene,*scene_small;
- iv::ObsLiDAR Lidar_read;
- iv::ObsLiDAR Lidar_obsread;
- iv::ObsRadar RadarDate;
- double asd = 0.0;
- int load_counts = 0;
- void AutoStart();
- QUdpSocket msocksend;
- QUdpSocket msockrecv;
- QTimer mTimerState;
- QTimer mTimerStateMap;
- DataToUI mDataToUI;
- QTime mTime;
- int mnTimeLastUpdatePaint;
- void * mpa;
- QMutex mMutexNavi;
- std::vector<iv::GPSData> m_navigation_data;
- qint64 mnNaviUpdateTime = 0;
- bool mbBrainRunning = false;
- double mdecition_period = 0;
- QTime mTimeState;
- int mnTimeUpdateGPS= 0;
- int mnTimeUpdateRadar=0;
- int mnTimeUpdateDecition=0;
- int mnTimeUpdateVS=0;
- int mnTimeUpdateCANState=0;
- double mfSOC = 0.0;
- void * mpManualCtrl;
- bool mbManual= false;
- QTimer * mTimerManual;
- int mnCtrlValue[3]; //Acc Brake Gear Acc 0-1000 Brake 0-1000 Gear -500 --- 500
- QTime mManualTime;
- int mnLastManualTime;
- void * mpafusiongpsimu;
- int64_t mnLastFusionGPSIMUUpdate = 0;
- private:
- void UpdateMap(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
- private:
- void * mpagpsimu;
- public:
- void UpdateGPSIMU(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
- unsigned int mv2xStEn = 0;
- private:
- void * mparadar;
- private:
- iv::radar::radarobjectarray mradararray;
- bool mbradarUpdate = false;
- QMutex mMutexRadar;
- void UpdateRADAR(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
- void UpdateChassis(const char *strdata, const unsigned int nSize, const unsigned int index, const QDateTime *dt, const char *strmemname);
- void * mpachassis;
- private:
- void * mpacanstate;
- public:
- int mimobileyeState;
- public:
- void UpdateCANState(const char * pdata,const int ndatasize);
- private:
- void * mpaDecition;
- public:
- void UpdateDecition(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
- private:
- void * mpaVechicleState;
- public:
- void UpdateVehicleState(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
- void UpdateBrainRunState(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
- private:
- void * mpaHMI;
- /***********20200509****************/
- public:
- void UpdatePlanTrace(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
- void UpdatePlanTrace_left(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
- void UpdatePlanTrace_right(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
- std::vector<iv::TracePoint> m_plan,m_plan_left,m_plan_right;
- QMutex mMutexPlan,mMutexPlan_left,mMutexPlan_right;
- private:
- void * mpaplantrace;
- void * mpaplantrace_left;
- void * mpaplantrace_right;
- /**************************/
- /**********20210429***********************/
- public:
- void UpdateFusion(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
- QMutex mMutexFusion;
- private:
- iv::fusion::fusionobjectarray mfusionarray;
- bool mbfusionUpdate = false;
- void * mpafusion;
- /*****************************************/
- private:
- void * mpaLidar;
- public:
- void UpdateOBS(std::shared_ptr<std::vector<iv::ObstacleBasic> > lidar_obs);
- void UpdateV2xStEn(unsigned int enable);
- private:
- void * mp_v2xStSend;
- void ShareHMIMsg(iv::hmi::HMIBasic xhmi);
- iv::Ivlog * mpivlog;
- // iv::platform::Client mplatform_client;
- public:
- void * mpamapreq; //请求地图
- void shareMapReqMsg();
- private:
- void * mpaVbox;
- public:
- void UpdateVbox(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname);
- private:
- QImage img,img2,img3,img4;
- QTimer mTimerState1;
- private:
- void threadCalcDrawTrace(); //Thread for caluclate draw trace.
- void UpdateMapDomain(std::vector<iv::GPSData> & xvectorMap,std::vector<iv::MapPointDomain> & xvectorMapDomain,const int nDomainSize);
- std::vector<double> mDraw_x0,mDraw_y0,mDraw_x1,mDraw_y1,mDraw_x2,mDraw_y2; //Save Draw Point
- QMutex mMutexDraw;
- int get_path_availspace(const QString & path);
- int mnHDDSpaceMB;
- void threadotacheck();
- bool mbotacheckclose = false;
- std::thread * mpthreadota;
- };
- #endif
|