| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
- #include <QMainWindow>
- #include <QImage>
- #include <QGraphicsScene>
- #include <QTimer>
- #include <QPainter>
- #include <QMutex>
- #include <memory>
- #include <QDateTime>
- #include <pcl/conversions.h>
- #include <pcl/point_cloud.h>
- #include <pcl/point_types.h>
- #include <pcl/io/pcd_io.h>
- #include <pcl/point_types.h>
- #include <QTimer>
- #include <QTime>
- #include <QGroupBox>
- #include <QGridLayout>
- #include <QLabel>
- #include <QLineEdit>
- #include <QPushButton>
- #include <QFileDialog>
- #include <QCheckBox>
- #include <QComboBox>
- #include "myview.h"
- #include "modulecomm.h"
- #define LIDAR_MAX 6
- namespace Ui {
- class MainWindow;
- }
- namespace iv {
- const int grx = 200, gry = 550, centerx = 100, centery = 50;
- const double gridwide = 0.2;
- struct ObstacleBasic
- {
- bool valid;
- float nomal_x;
- float nomal_y;
- float nomal_z;
- float speed_relative;
- float speed_x;
- float speed_y;
- float speed_z;
- float high;
- float low;
- int esr_ID;
- };
- // typedef boost::shared_ptr<std::vector<iv::ObstacleBasic>> ObsLiDAR;
- // typedef boost::shared_ptr<std::vector<iv::ObstacleBasic>> ObsRadar;
- // typedef boost::shared_ptr<std::vector<iv::ObstacleBasic>> ObsCamera;
- // typedef boost::shared_ptr<std::vector<iv::ObstacleBasic>>ObsRadarPointer;
- struct Obs_grid
- {
- double high;
- double low;
- double obshight;
- int pointcount;
- int ob;//障碍物属性,0地面 ,1路沿,2障碍物
- };
- typedef Obs_grid LidarGrid;
- typedef Obs_grid* LidarGridPtr;
- }
- class BBox
- {
- public:
- double mcenter_x;
- double mcenter_y;
- double mydis;
- double mxdis;
- double xmin;
- double ymin;
- double xmax;
- double ymax;
- std::shared_ptr<std::vector<iv::ObstacleBasic>> mPC;
- BBox(std::shared_ptr<std::vector<iv::ObstacleBasic>> ptrclu)
- {
- int nSize = ptrclu->size();
- if(nSize < 1)return;
- iv::ObstacleBasic x = ptrclu->at(0);
- xmin = x.nomal_x;
- xmax = x.nomal_x;
- ymin = x.nomal_y;
- ymax = ymin;
- int i;
- for(i=1;i<nSize;i++)
- {
- x = ptrclu->at(i);
- if(x.nomal_x<xmin)xmin = x.nomal_x;
- if(x.nomal_x>xmax)xmax = x.nomal_x;
- if(x.nomal_y<ymin)ymin = x.nomal_y;
- if(x.nomal_y>ymax)ymax = x.nomal_y;
- }
- mydis = ymax - ymin+0.2;
- mxdis = xmax - xmin+0.2;
- mcenter_x = xmin + mxdis/2.0;
- mcenter_y = ymin + mydis/2.0;
- mPC.swap(ptrclu);
- // std::cout<<"box x="<<mcenter_x<<" y="<<mcenter_y<<" xdis ="<<mxdis<<" ydis = "<<mydis<<" point count ="<<nSize<<std::endl;
- }
- };
- class LidarData
- {
- public:
- double mxmin = -300;
- double mxmax = 300;
- double mymin = -300;
- double mymax = 300;
- double mzmin = -300;
- double mzmax = 300;
- double mxoff = 0;
- double myoff = 0;
- double mzoff = 0;
- double mxyawoff = 0;
- double myyawoff = 0;
- double mzyawoff = 0;
- pcl::PointCloud<pcl::PointXYZI>::Ptr mpoint_cloud;
- std::string mstrname;
- bool mbView = true;
- double mcomp[6];//xmin ymin zmin xmax ymax zmax
- };
- class MainWindow : public QMainWindow
- {
- Q_OBJECT
- public:
- explicit MainWindow(QWidget *parent = 0);
- ~MainWindow();
- QTime mTime;
- void UpdatePointCloud(pcl::PointCloud<pcl::PointXYZI>::Ptr pc);
- private slots:
- void on_checkBox_clicked();
- void onTimer();
- virtual void paintEvent(QPaintEvent *);
- private:
- Ui::MainWindow *ui;
- bool mbOpen;
- void * mpa;
- unsigned char mbmpLD[400*600*4];
- QImage *image;
- QPainter *painter;
- MyView *myview;
- QTimer *timer;
- QGraphicsScene *scene;
- QTimer mTimer;
- QMutex mMutex;
- QMutex mMutexPer;
- pcl::PointCloud<pcl::PointXYZI>::Ptr mpoint_cloud;
- public:
- void resizeEvent(QResizeEvent *event);
- private:
- void AdjustWPos(QSize sizemain);
- void CreateStatusView(QGridLayout * gl);
- void CreateView();
- QGroupBox * mgplidar;
- QLineEdit * mpLE_lidarcount;
- int mnlidarcount;
- QPushButton * mpPB_saveonepcd;
- QPushButton * mpPB_savepcd;
- QLineEdit * mpLE_onepcd;
- QLineEdit * mpLE_savepcd;
- int mnonepcd;
- bool mbSaveOne;
- bool mbSave;
- int mnsave;
- QLineEdit * mpLE_savefolder;
- public slots:
- void onSaveOnePCD();
- void onSavePCD();
- void onSelectFolder();
- void onLoadPCD();
- void onViewChange(int index);
- void onLidarSetChagne(int index);
- void onCompLidarChagne(int index);
- void onViewSetClick();
- void onLidarCheck();
- void onNDTCalc();
- private:
- QString mstrSavePath;
- QScrollArea * mgSA;
- void CreateSelection(QGroupBox * pGP);
- void CreateViewsetting(QGroupBox * pGP);
- void CreateCompview(QGroupBox * pGP);
- void CreateNDTView(QGroupBox * pGP);
- QCheckBox * mpCheckLidar[LIDAR_MAX];
- QComboBox mpCBView;
- std::vector<LidarData> mLidarData;
- void UpdateView();
- void AddLidarData(LidarData & ld);
- QLineEdit * mpLEViewSet[12];
- QLineEdit * mpLEComp[6];
- QLineEdit * mpLENDT[6];
- double moffValue[12];
- double mfNDT[12];
- QComboBox * mpCBLidar;
- QComboBox * mpCBCompLidar;
- int mnViewType = 2;
- inline bool PointShow(pcl::PointXYZI point,LidarData ld);
- inline void OffPoint(pcl::PointXYZI & point,LidarData & ld);
- };
- #endif // MAINWINDOW_H
|