2 * RobomonAtlantis.h 07/10/31
4 * Robot's visualization and control GUI for robot of the
5 * Eurobot 2008 competition (Mission to Mars).
7 * Copyright: (c) 2008 CTU Dragons
8 * CTU FEE - Department of Control Engineering
9 * Authors: Martin Zidek, Michal Sojka, Tran Duy Khanh
10 * License: GNU GPL v.2
13 #ifndef ROBOMON_ATLANTIS_H
14 #define ROBOMON_ATLANTIS_H
16 #define SIM_OBST_SIZE_M 0.5
21 #include "PlaygroundScene.h"
23 #include <roboorte_robottype.h>
41 class RobomonAtlantis : public QWidget
46 RobomonAtlantis(QWidget *parent = 0);
49 bool event(QEvent *event);
50 void keyPressEvent(QKeyEvent *event);
51 void keyReleaseEvent(QKeyEvent *event);
52 void closeEvent(QCloseEvent *event);
55 void motionStatusReceivedSignal();
56 void actualPositionReceivedSignal();
57 void estimatedPositionReceivedSignal();
58 void diReceivedSignal();
59 void accelerometerReceivedSignal();
60 void accumulatorReceivedSignal();
61 void powerVoltageReceivedSignal();
64 /************************************************************
66 ************************************************************/
67 void setVoltage33(int state);
68 void setVoltage50(int state);
69 void setVoltage80(int state);
70 void setLeftMotor(int value);
71 void setRightMotor(int value);
73 void setDO(int state);
75 void showPlayground();
77 void setSimulation(int state);
78 void setObstacleSimulation(int state);
79 void simulateObstaclesHokuyo();
80 void changeObstacle(QPointF position);
82 void setBelts(int value);
83 void setChelae(int value);
84 void sendStart(int plug);
85 void sendPuckInside(int value);
87 /************************************************************
89 ************************************************************/
90 void motionStatusReceived();
91 void actualPositionReceived();
92 void estimatedPositionReceived();
94 void accelerometerReceived();
95 void accumulatorReceived();
96 void powerVoltageReceived();
99 /************************************************************
101 ************************************************************/
102 void createLeftLayout();
103 void createRightLayout();
105 void createPlaygroundGroupBox();
106 void createPositionGroupBox();
107 void createMiscGroupBox();
108 void createDebugGroupBox();
109 void createActuatorsGroupBox();
110 void createMotorsGroupBox();
111 void createDIOGroupBox();
112 void createSensorsGroupBox();
113 void createPowerGroupBox();
114 void createPickerGroupBox();
115 void createFSMGroupBox();
118 void createActions();
120 QVBoxLayout *leftLayout;
121 QVBoxLayout *rightLayout;
123 QGroupBox *playgroundGroupBox;
124 QGroupBox *positionGroupBox;
125 QGroupBox *miscGroupBox;
126 QGroupBox *debugGroupBox;
127 QGroupBox *actuatorsGroupBox;
128 QGroupBox *enginesGroupBox;
129 QGroupBox *dioGroupBox;
130 QGroupBox *sensorsGroupBox;
131 QGroupBox *powerGroupBox;
132 QGroupBox *pickerGroupBox;
133 QGroupBox *fsmGroupBox;
135 PlaygroundScene *playgroundScene;
136 QGraphicsView *playgroundSceneView;
141 QLineEdit *actPosPhi;
145 QLineEdit *estPosPhi;
148 QTextEdit *debugWindow;
149 bool debugWindowEnabled;
152 QSlider *leftMotorSlider;
153 QSlider *rightMotorSlider;
154 QCheckBox *bothMotorsCheckBox;
155 QPushButton *stopMotorsPushButton;
157 QCheckBox *leftBeltCheckBox;
158 QCheckBox *rightBeltCheckBox;
159 QCheckBox *leftChelaCheckBox;
160 QCheckBox *rightChelaCheckBox;
163 QDial *rightBeltDial;
164 QDial *leftChelaDial;
165 QDial *rightChelaDial;
166 QPushButton *pickPushButton;
168 /* power management */
169 QCheckBox *voltage33CheckBox;
170 QCheckBox *voltage50CheckBox;
171 QCheckBox *voltage80CheckBox;
172 QLineEdit *voltage33LineEdit;
173 QLineEdit *voltage50LineEdit;
174 QLineEdit *voltage80LineEdit;
175 QLineEdit *voltageBATLineEdit;
177 QCheckBox *diCheckBox[8];
178 QCheckBox *doCheckBox[8];
181 QCheckBox *obstacleSimulationCheckBox;
182 QCheckBox *showMapPushButton;
183 QLabel *fsm_main_state;
184 QLabel *fsm_act_state;
185 QLabel *fsm_motion_state;
186 QCheckBox *startPlug;
187 QCheckBox *puckInside;
194 double leftMotorValue;
195 double rightMotorValue;
198 void openSharedMemory();
199 bool sharedMemoryOpened;
203 QProgressBar *sharpPuck;
204 QProgressBar *liftPos;
205 QProgressBar *pusherPos;
207 /* obstacle simulation */
208 double distanceToWallHokuyo(int beamnum);
209 double distanceToObstacleHokuyo(int beamnum, Point obstacle, double obstacleSize);
210 int simulationEnabled;
212 QTimer *obstacleSimulationTimer;
213 Point simulatedObstacle;
215 /************************************************************
217 ************************************************************/
220 struct robottype_orte_data orte;
223 #endif /* ROBOMON_ATLANTIS_H */