]> rtime.felk.cvut.cz Git - eurobot/public.git/commitdiff
robomon shows puck distance
authorMichal Sojka <sojkam1@fel.cvut.cz>
Wed, 22 Apr 2009 08:30:22 +0000 (10:30 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Wed, 22 Apr 2009 08:30:22 +0000 (10:30 +0200)
Not tested on real robot!

src/robomon/RobomonAtlantis.cpp
src/robomon/RobomonAtlantis.h
src/robomon/robomon_orte.cpp
src/robomon/robomon_orte.h

index c43c2676f943e7f6228e9685667313ebb47c77e5..69bdece57c37bf64dc7905f097a8587b2c837fea 100644 (file)
@@ -291,11 +291,15 @@ void RobomonAtlantis::createPowerGroupBox()
 void RobomonAtlantis::createSensorsGroupBox()
 {
        sensorsGroupBox = new QGroupBox(tr("Sensors"));
-       QVBoxLayout *layout = new QVBoxLayout();
+       QHBoxLayout *layout = new QHBoxLayout();
 
-       createSharpSensorsLayout();
+       layout->addWidget(MiscGui::createLabel("Puck Sharp"));
+       sharpPuck = new QProgressBar();
+       sharpPuck->setFormat("%v mm");
+       sharpPuck->setTextVisible(true);
+       sharpPuck->setMaximum(300);
+       layout->addWidget(sharpPuck);
 
-       layout->addLayout(sharpSensorsLayout);
        sensorsGroupBox->setLayout(layout);
 }
 
@@ -381,14 +385,6 @@ void RobomonAtlantis::createPickerGroupBox()
        pickerGroupBox->setLayout(layout);
 }
 
-void RobomonAtlantis::createSharpSensorsLayout()
-{
-       sharpSensorsLayout = new QVBoxLayout();
-       QGridLayout *layout3 = new QGridLayout();
-
-       sharpSensorsLayout->addLayout(layout3);
-}
-
 void RobomonAtlantis::createRobots()
 {
        robotActPos = new Robot(QPen(), QBrush(Qt::darkGray));
@@ -720,6 +716,9 @@ bool RobomonAtlantis::event(QEvent *event)
                case QEVENT(QEV_FSM_MOTION):
                        fsm_motion_state->setText(orte.fsm_motion.state_name);
                        break;
+               case QEVENT(QEV_PUCK_DISTANCE):
+                       sharpPuck->setValue(orte.puck_distance.distance*1000);
+                       break;
                default:
                        if (event->type() == QEvent::Close)
                                closeEvent((QCloseEvent *)event);
@@ -889,7 +888,7 @@ void RobomonAtlantis::createOrte()
                                             rcv_fsm_motion_cb, this);
        robottype_subscriber_fsm_act_create(&orte, 
                                             rcv_fsm_act_cb, this);
-
+       robottype_subscriber_puck_distance_create(&orte, rcv_puck_distance_cb, this);
        //robottype_subscriber_actuator_status_create(orte, receiveActuatorStatusCallBack, this);
 
 
index fdc5b2238cb2b1f772cd9422993510caace5f0b9..9eaf9b0765e88f7b70a03eb5f26de27593a8bbd6 100644 (file)
@@ -119,7 +119,6 @@ private:
 
        QVBoxLayout *leftLayout;
        QVBoxLayout *rightLayout;
-       QVBoxLayout *sharpSensorsLayout;
 
        QGroupBox *playgroundGroupBox;
        QGroupBox *positionGroupBox;
@@ -197,6 +196,9 @@ private:
        void openSharedMemory();
        bool sharedMemoryOpened;
        QTimer *mapTimer;
+       
+       /* sensors */
+       QProgressBar *sharpPuck;
 
        /* obstacle simulation */
        double distanceToWallHokuyo(int beamnum);
index de85c548e3bc2f5af15363a1807152a92868266f..cd372f9b45792f0da23f73720cd79a1ec41d579c 100644 (file)
@@ -348,3 +348,17 @@ void rcv_fsm_motion_cb(const ORTERecvInfo *info, void *vinstance,
        }
 }
 
+void rcv_puck_distance_cb(const ORTERecvInfo *info, void *vinstance,
+                         void *arg)
+{
+       Q_UNUSED(vinstance);
+       switch (info->status) {
+               case NEW_DATA:
+                       POST_QEVENT(arg, QEV_PUCK_DISTANCE);
+                       break;
+               case DEADLINE:
+                       printf("fsm_motion deadline occurred\n");
+                       break;
+       }
+}
+
index b6b6725696ecdcd490b5d94d10dfcfcfbca89489..d5c2a2b8cce0d3ca44b43c72e3efc5e9a3589b83 100644 (file)
@@ -40,6 +40,7 @@ enum {
        QEV_FSM_MAIN,
        QEV_FSM_ACT,
        QEV_FSM_MOTION,
+       QEV_PUCK_DISTANCE,
 };
 
 #define FRONT_DOOR             1
@@ -118,5 +119,7 @@ void rcv_fsm_act_cb(const ORTERecvInfo *info,
                     void *vinstance, void *arg);
 void rcv_fsm_motion_cb(const ORTERecvInfo *info, 
                     void *vinstance, void *arg);
+void rcv_puck_distance_cb(const ORTERecvInfo *info, void *vinstance,
+                         void *arg);
 
 #endif /* ROBOMON_ORTE_H */