#define ROBOMON_ATLANTIS_H
#include <QDialog>
+#include <QDateTime>
+#include <QTimer>
#include <trgen.h>
#include "PlaygroundScene.h"
class QProgressBar;
class QFont;
+class MotorSimulation : QObject {
+ Q_OBJECT
+
+ QTimer timer;
+ qint64 last_time;
+ struct robottype_orte_data &orte;
+public:
+ MotorSimulation(struct robottype_orte_data &orte) : QObject(), timer(this), orte(orte) {}
+ void start()
+ {
+ robottype_publisher_motion_irc_create(&orte, 0, 0);
+ connect(&timer, SIGNAL(timeout()), this, SLOT(updateIRC()));
+ timer.start(50);
+ }
+
+ void stop()
+ {
+ robottype_publisher_motion_irc_destroy(&orte);
+ timer.stop();
+ disconnect(&timer, SIGNAL(timeout()), this, SLOT(updateIRC()));
+ }
+private slots:
+ void updateIRC()
+ {
+ qint64 now = QDateTime::currentMSecsSinceEpoch();
+ orte.motion_irc.left += orte.motion_speed.left * (now - last_time); // TODO: Find constant for speed to irc conversion
+ orte.motion_irc.right+= orte.motion_speed.right * (now - last_time);
+ ORTEPublicationSend(orte.publication_motion_irc);
+ last_time = now;
+ }
+};
+
+
class RobomonAtlantis : public QWidget
{
Q_OBJECT
void showMap(bool show);
void useOpenGL(bool use);
void showTrails(bool show);
+ void showShapeDetect(bool show);
void resetTrails();
private slots:
/************************************************************
void simulateObstaclesHokuyo();
void changeObstacle(QPointF position);
void sendStart(int plug);
+ void setTeamColor(int plug);
+ void setMotorSimulation(int state);
/************************************************************
* ORTE
QGroupBox *powerGroupBox;
QGroupBox *fsmGroupBox;
+public:
PlaygroundScene *playgroundScene;
+private:
PlaygroundView *playgroundSceneView;
/* position state */
/* QSlider *rightMotorSlider; */
/* QCheckBox *bothMotorsCheckBox; */
/* QPushButton *stopMotorsPushButton; */
+ //QDial *vidle;
/* power management */
QCheckBox *voltage33CheckBox;
/* misc */
QCheckBox *obstacleSimulationCheckBox;
+ QCheckBox *motorSimulationCheckBox;
QLabel *fsm_main_state;
QLabel *fsm_act_state;
QLabel *fsm_motion_state;
QCheckBox *startPlug;
- QCheckBox *puckInside;
+ QCheckBox *colorChoser;
public:
/* robot */
Robot *robotRefPos;
QTimer *obstacleSimulationTimer;
Point simulatedObstacle;
+ class MotorSimulation motorSimulation;
+
/************************************************************
* ORTE
************************************************************/