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 powerVoltageReceivedSignal();
60 void showMap(bool show);
61 void showTrails(bool show);
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);
74 void setSimulation(int state);
75 void setObstacleSimulation(int state);
76 void simulateObstaclesHokuyo();
77 void changeObstacle(QPointF position);
78 void sendStart(int plug);
80 /************************************************************
82 ************************************************************/
83 void motionStatusReceived();
84 void actualPositionReceived();
85 void powerVoltageReceived();
88 /************************************************************
90 ************************************************************/
91 void createLeftLayout();
92 void createRightLayout();
94 void createPlaygroundGroupBox();
95 void createPositionGroupBox();
96 void createMiscGroupBox();
97 void createDebugGroupBox();
98 void createActuatorsGroupBox();
99 void createMotorsGroupBox();
100 void createDIOGroupBox();
101 void createSensorsGroupBox();
102 void createPowerGroupBox();
103 void createPickerGroupBox();
104 void createFSMGroupBox();
107 void createActions();
109 QVBoxLayout *leftLayout;
110 QVBoxLayout *rightLayout;
112 QGroupBox *playgroundGroupBox;
113 QGroupBox *positionGroupBox;
114 QGroupBox *miscGroupBox;
115 QGroupBox *debugGroupBox;
116 QGroupBox *actuatorsGroupBox;
117 QGroupBox *enginesGroupBox;
118 QGroupBox *powerGroupBox;
119 QGroupBox *fsmGroupBox;
121 PlaygroundScene *playgroundScene;
122 QGraphicsView *playgroundSceneView;
127 QLineEdit *actPosPhi;
131 QLineEdit *estPosPhi;
134 QTextEdit *debugWindow;
135 bool debugWindowEnabled;
138 QSlider *leftMotorSlider;
139 QSlider *rightMotorSlider;
140 QCheckBox *bothMotorsCheckBox;
141 QPushButton *stopMotorsPushButton;
143 /* power management */
144 QCheckBox *voltage33CheckBox;
145 QCheckBox *voltage50CheckBox;
146 QCheckBox *voltage80CheckBox;
147 QLineEdit *voltage33LineEdit;
148 QLineEdit *voltage50LineEdit;
149 QLineEdit *voltage80LineEdit;
150 QLineEdit *voltageBATLineEdit;
153 QCheckBox *obstacleSimulationCheckBox;
154 QLabel *fsm_main_state;
155 QLabel *fsm_act_state;
156 QLabel *fsm_motion_state;
157 QCheckBox *startPlug;
158 QCheckBox *puckInside;
162 Robot *robotEstPosIndepOdo;
163 Robot *robotEstPosOdo;
166 Trail *trailPosIndepOdo;
170 double leftMotorValue;
171 double rightMotorValue;
174 void openSharedMemory();
175 bool sharedMemoryOpened;
178 /* obstacle simulation */
179 double distanceToWallHokuyo(int beamnum);
180 double distanceToObstacleHokuyo(int beamnum, Point obstacle, double obstacleSize);
181 int simulationEnabled;
183 QTimer *obstacleSimulationTimer;
184 Point simulatedObstacle;
186 /************************************************************
188 ************************************************************/
191 struct robottype_orte_data orte;
194 #endif /* ROBOMON_ATLANTIS_H */