Browse Source

change simple_planning_simulator, add steer icon and info item.

yuchuli 11 months ago
parent
commit
231f798b18

+ 26 - 9
src/tool/map_lanetoxodr/view/myview.cpp

@@ -29,6 +29,8 @@ void MyView::mouseMoveEvent(QMouseEvent *event)
     if(mbInPinch == true)return;
     QGraphicsView::mouseMoveEvent(event);
 
+    emit moveorscale();
+
 //    QScrollBar * ps = verticalScrollBar();
 //    std::cout<<" size is "<<ps->size().height()<<" v = "<<ps->value()<<std::endl;
 //    QScrollBar * ps2= horizontalScrollBar();
@@ -85,6 +87,8 @@ void MyView::zoomIn()
 
     emit beishuchange(beishu);
 
+    emit moveorscale();
+
 
 
 //    QPoint x = viewport()->rect().center();
@@ -122,6 +126,8 @@ void MyView::zoomOut()
     centerOn(centerx,centery);
 
     emit beishuchange(beishu);
+
+    emit moveorscale();
 }
 
 void MyView::zoomone()
@@ -143,15 +149,6 @@ void MyView::mouseDoubleClickEvent(QMouseEvent *event)
     double centery = (psV->value() + psV->size().height()/2)/beishu;
     double centerx = (psH->value() + psH->size().width()/2)/beishu;
 
-
-
-//    qDebug("x is %d y is %d view center x is %d  centerx is %d",event->pos().x(),
-//           event->pos().y(),
-//           viewport()->rect().center().x(),centerx);
-
- //   std::cout<<" event x: "<<event->pos().x()<<" event y: "<<event->pos().y()<<std::endl;
-//    std::cout<<" centerx: "<<centerx<<" event x: "<<event->pos().x()<<" viewpoint x: "<<viewport()->rect().center().x()
-//            <<" psv size: "<<psH->size().width()<<" beishu: "<<beishu<<std::endl;
     double viewx,viewy;
     if(beishu == 0)return;
     viewx = centerx +(event->pos().x() - viewport()->rect().center().x())/beishu;
@@ -165,6 +162,26 @@ void MyView::mouseDoubleClickEvent(QMouseEvent *event)
     qDebug("view x is %f view y is %f ",viewx,viewy);
 }
 
+void MyView::GetPosXY(double view_x,double view_y,double & pos_x, double & pos_y)
+{
+    QScrollBar * psV = verticalScrollBar();
+    QScrollBar * psH = horizontalScrollBar();
+
+    double centery = (psV->value() + psV->size().height()/2)/beishu;
+    double centerx = (psH->value() + psH->size().width()/2)/beishu;
+
+    std::cout<<" center x: "<<centerx<<" y: "<<centery<<std::endl;
+    std::cout<<" psv value: "<<psV->value()<<" psh value: "<<psH->value()<<std::endl;
+
+    pos_x = psH->value()/beishu;
+    pos_y =  psV->value()/beishu;
+}
+
+double MyView::Getbeishu()
+{
+    return beishu;
+}
+
 bool MyView::event(QEvent *event)
 {
     if (event->type() == QEvent::Gesture)

+ 8 - 1
src/tool/map_lanetoxodr/view/myview.h

@@ -20,9 +20,12 @@ class MyView : public QGraphicsView
 
 public:
     explicit MyView(QWidget *parent =0);
-    qreal x, y, beishu;
 
     void zoomone();
+
+    void GetPosXY(double view_x,double view_y,double & pos_x, double & pos_y);
+    double Getbeishu();
+
 protected:
     void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE;
     void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
@@ -41,6 +44,8 @@ signals:
     void dbclickxy(double x,double y);
     void beishuchange(double beishu);
 
+    void moveorscale();
+
 signals:
     void CtrlManual(bool bManual);
 
@@ -51,6 +56,8 @@ private:
     bool bottonstatus = false;
     QPoint myview_lastMousePos;
 
+    qreal x, y, beishu;
+
 private:
     bool gestureEvent(QGestureEvent *event);
     void pinchTriggered(QPinchGesture*);

+ 2 - 0
src/tool/simple_planning_simulator/dialogcustomobj.cpp

@@ -12,6 +12,8 @@ DialogCustomObj::DialogCustomObj(QWidget *parent) :
     ui->lineEdit_width->setText("1.9");
     ui->lineEdit_height->setText("1.6");
 
+    setWindowTitle("Add Custom Object");
+
 }
 
 DialogCustomObj::~DialogCustomObj()

+ 115 - 2
src/tool/simple_planning_simulator/mainwindow.cpp

@@ -84,9 +84,17 @@ MainWindow::MainWindow(QWidget *parent)
 
     mTabMain = p;
 
+    mpTabVehState = new QTabWidget(ui->centralwidget);
+    mpTabCmd = new QTabWidget(ui->centralwidget);
+
     CreateCar();
     CreateSP();
     CreateEP();
+    CreateSteer();
+    CreateStateItem();
+    CreateCMDItem();
+
+    connect(myview,SIGNAL(moveorscale()),this,SLOT(onMyViewMoveOrScale()));
 
     mpTimerShowSelObj = new QTimer(this);
     connect(mpTimerShowSelObj,SIGNAL(timeout()),this,SLOT(onTimerShowSelObj()));
@@ -122,8 +130,15 @@ void MainWindow::resizeEvent(QResizeEvent *event)
     (void)event;
     QSize sizemain = ui->centralwidget->size();
     myview->setGeometry(0,30,sizemain.width()-mnFontHeight * 22 - 30,sizemain.height());
-    mTabMain->setGeometry(sizemain.width()-mnFontHeight * 22,30,mnFontHeight * 22,sizemain.height()-50);
-
+    int nkeep = 110;
+    int nbase = sizemain.height() - nkeep;
+    if(nbase < 0) nbase = 30;
+    double fratio1 = 0.65;
+    double fratio2 = 0.25;
+    double fratio3 = 0.10;
+    mTabMain->setGeometry(sizemain.width()-mnFontHeight * 22,30,mnFontHeight * 22,nbase * fratio1);
+    mpTabVehState->setGeometry(sizemain.width()-mnFontHeight * 22,60 + nbase * fratio1,mnFontHeight * 22,nbase * fratio2);
+    mpTabCmd->setGeometry(sizemain.width()-mnFontHeight * 22,90 + nbase * (fratio1 + fratio2),mnFontHeight * 22, nbase * fratio3);
 
 }
 
@@ -290,10 +305,49 @@ void MainWindow::CreateTab1View(QTabWidget * p)
 
 
 
+}
+
+void MainWindow::CreateTabStateView(QTabWidget * p)
+{
+
+}
+
+void MainWindow::CreateTabCmdView(QTabWidget *p)
+{
+
+}
+
+
+void MainWindow::onMyViewMoveOrScale()
+{
+    double fViewSize = mfsteerviewsize;
+    double fscale =  fViewSize/mppixsteer->boundingRect().height();
+    double beishu = myview->Getbeishu();
+    if(beishu>0)
+    {
+        fscale = fscale/beishu;
+    }
+    //   mppixsteer->setRotation(0);
+    mppixsteer->setScale(fscale);
+    double pos_x,pos_y;
+    pos_x = 10;
+    pos_y = 10;
+    double view_x,view_y;
+    myview->GetPosXY(pos_x,pos_y,view_x,view_y);
+    std::cout<<"view x: "<<view_x<<" view y: "<<view_y<<std::endl;
+    mppixsteer->setPos(view_x  ,view_y );
+
+    if(beishu == 0.0)return;
+    mpitemstate->setScale(1.0/beishu);
+    mpitemstate->setPos(view_x + fViewSize /beishu,view_y);
+    mpitemcmd->setScale(1.0/beishu);
+    mpitemcmd->setPos(view_x + fViewSize /beishu,view_y + (mnFontSize*1.5)/beishu);
+
 }
 
 void MainWindow::paintEvent(QPaintEvent *)
 {
+
     myview->setScene(mpscene);
     myview->show();
 }
@@ -574,6 +628,65 @@ void MainWindow::CreateEP()
     mppixep->setVisible(false);
 }
 
+void MainWindow::CreateSteer()
+{
+    QGraphicsPixmapItem * ppix;
+    ppix = new QGraphicsPixmapItem();
+    ppix->setPixmap(QPixmap(":/steer.png"));
+    QRectF xr = ppix->boundingRect();
+
+    double fViewSize = mfsteerviewsize;
+    double fscale =  fViewSize/xr.height();
+    double beishu = myview->Getbeishu();
+    if(beishu>0)
+    {
+        fscale = fscale/beishu;
+    }
+    ppix->setRotation(0);
+    ppix->setScale(fscale);
+    double pos_x,pos_y;
+    pos_x = 10;
+    pos_y = 10;
+    double view_x,view_y;
+    myview->GetPosXY(view_x,view_y,pos_x,pos_y);
+    ppix->setPos(view_x,view_y);
+    mpscene->addItem(ppix);
+    ppix->setZValue(101.0);
+    mppixsteer = ppix;
+}
+
+void MainWindow::CreateStateItem()
+{
+    QGraphicsSimpleTextItem * pState;
+    pState = new QGraphicsSimpleTextItem();
+    pState->setPos(130,0);
+    pState->setText("Vehicle State acc:   brake:   steer:   ");
+    QFont font = pState->font();
+    font.setPixelSize(mnFontSize);  // 像素大小
+    font.setItalic(true);  // 斜体
+    font.setUnderline(true);  // 下划线
+    pState->setFont(font);
+    pState->setBrush(QBrush(QColor(0, 160, 230)));
+    mpscene->addItem(pState);
+    mpitemstate = pState;
+}
+
+void MainWindow::CreateCMDItem()
+{
+    QGraphicsSimpleTextItem * pState;
+    pState = new QGraphicsSimpleTextItem();
+    pState->setPos(130,30);
+    pState->setText("CMD acc:   brake:   steer:   ");
+    QFont font = pState->font();
+    font.setPixelSize(mnFontSize);  // 像素大小
+    font.setItalic(true);  // 斜体
+    font.setUnderline(true);  // 下划线
+    pState->setFont(font);
+    pState->setBrush(QBrush(QColor(0, 160, 230)));
+    mpscene->addItem(pState);
+    mpitemcmd = pState;
+}
+
 void MainWindow::SetCarPos(double x,double y, double fhdg)
 {
 

+ 19 - 0
src/tool/simple_planning_simulator/mainwindow.h

@@ -154,6 +154,8 @@ private slots:
     void onSetStartPos(double x, double y);
     void onUpdateTraceMap();
 
+    void onMyViewMoveOrScale();
+
 private:
     Ui::MainWindow *ui;
 
@@ -168,6 +170,12 @@ private:
     QGraphicsPixmapItem * mppixcar;
     QGraphicsPixmapItem * mppixsp;
     QGraphicsPixmapItem * mppixep;
+    QGraphicsPixmapItem * mppixsteer;
+
+    QGraphicsSimpleTextItem * mpitemstate;
+    QGraphicsSimpleTextItem * mpitemcmd;
+
+    int mnFontSize = 20;
 
     QLabel * mpLabel_Status;
 
@@ -194,6 +202,12 @@ private:
     QTabWidget * mTabMain;
     void CreateTab1View(QTabWidget * p);
 
+    QTabWidget * mpTabVehState;
+    void CreateTabStateView(QTabWidget * p);
+
+    QTabWidget * mpTabCmd;
+    void CreateTabCmdView(QTabWidget * p);
+
     double mfViewMoveX = 0;
     double mfViewMoveY = 0;
 
@@ -239,6 +253,8 @@ private:
     std::vector<iv::GPS_INS> mvectormap;
     std::mutex mmutexmap;
 
+    double mfsteerviewsize = 100;
+
 
     std::vector<QGraphicsEllipseItem *> mvectormappointitem;
 
@@ -251,6 +267,9 @@ private:
     void CreateCar();
     void CreateSP();
     void CreateEP();
+    void CreateSteer();
+    void CreateStateItem();
+    void CreateCMDItem();
     void SetCarPos(double x,double y, double fhdg);
     void AddPedObj(double x,double y, double fhdg);
     void AddCarObj(double x,double y, double fhdg);

+ 1 - 0
src/tool/simple_planning_simulator/sim.qrc

@@ -4,5 +4,6 @@
         <file>ep.png</file>
         <file>sp.png</file>
         <file>simicon.png</file>
+        <file>steer.png</file>
     </qresource>
 </RCC>

BIN
src/tool/simple_planning_simulator/steer.png