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>
25 #include "hokuyoscan.h"
42 class RobomonAtlantis : public QWidget
47 RobomonAtlantis(QWidget *parent = 0);
50 bool event(QEvent *event);
51 void keyPressEvent(QKeyEvent *event);
52 void keyReleaseEvent(QKeyEvent *event);
53 void closeEvent(QCloseEvent *event);
56 void motionStatusReceivedSignal();
57 void actualPositionReceivedSignal();
58 void powerVoltageReceivedSignal();
61 void showMap(bool show);
62 void showTrails(bool show);
65 /************************************************************
67 ************************************************************/
68 void setVoltage33(int state);
69 void setVoltage50(int state);
70 void setVoltage80(int state);
71 void setLeftMotor(int value);
72 void setRightMotor(int value);
75 void setSimulation(int state);
76 void setObstacleSimulation(int state);
77 void simulateObstaclesHokuyo();
78 void changeObstacle(QPointF position);
79 void sendStart(int plug);
81 /************************************************************
83 ************************************************************/
84 void motionStatusReceived();
85 void actualPositionReceived();
86 void powerVoltageReceived();
89 /************************************************************
91 ************************************************************/
92 void createLeftLayout();
93 void createRightLayout();
95 void createPlaygroundGroupBox();
96 void createPositionGroupBox();
97 void createMiscGroupBox();
98 void createDebugGroupBox();
99 void createActuatorsGroupBox();
100 void createMotorsGroupBox();
101 void createDIOGroupBox();
102 void createSensorsGroupBox();
103 void createPowerGroupBox();
104 void createPickerGroupBox();
105 void createFSMGroupBox();
108 void createActions();
110 QVBoxLayout *leftLayout;
111 QVBoxLayout *rightLayout;
113 QGroupBox *playgroundGroupBox;
114 QGroupBox *positionGroupBox;
115 QGroupBox *miscGroupBox;
116 QGroupBox *debugGroupBox;
117 QGroupBox *actuatorsGroupBox;
118 QGroupBox *enginesGroupBox;
119 QGroupBox *powerGroupBox;
120 QGroupBox *fsmGroupBox;
122 PlaygroundScene *playgroundScene;
123 QGraphicsView *playgroundSceneView;
128 QLineEdit *actPosPhi;
132 QLineEdit *estPosPhi;
135 QTextEdit *debugWindow;
136 bool debugWindowEnabled;
139 QSlider *leftMotorSlider;
140 QSlider *rightMotorSlider;
141 QCheckBox *bothMotorsCheckBox;
142 QPushButton *stopMotorsPushButton;
144 /* power management */
145 QCheckBox *voltage33CheckBox;
146 QCheckBox *voltage50CheckBox;
147 QCheckBox *voltage80CheckBox;
148 QLineEdit *voltage33LineEdit;
149 QLineEdit *voltage50LineEdit;
150 QLineEdit *voltage80LineEdit;
151 QLineEdit *voltageBATLineEdit;
154 QCheckBox *obstacleSimulationCheckBox;
155 QLabel *fsm_main_state;
156 QLabel *fsm_act_state;
157 QLabel *fsm_motion_state;
158 QCheckBox *startPlug;
159 QCheckBox *puckInside;
163 Robot *robotEstPosIndepOdo;
164 Robot *robotEstPosOdo;
167 Trail *trailPosIndepOdo;
170 HokuyoScan *hokuyoScan;
173 double leftMotorValue;
174 double rightMotorValue;
177 void openSharedMemory();
178 bool sharedMemoryOpened;
181 /* obstacle simulation */
182 double distanceToWallHokuyo(int beamnum);
183 double distanceToObstacleHokuyo(int beamnum, Point obstacle, double obstacleSize);
184 int simulationEnabled;
186 QTimer *obstacleSimulationTimer;
187 Point simulatedObstacle;
189 /************************************************************
191 ************************************************************/
194 struct robottype_orte_data orte;
197 #endif /* ROBOMON_ATLANTIS_H */