Acceleration sensor control and basic vision framework
[mardrone] / mardrone / dronecontrol.h
index 9b6a3a2..057833f 100644 (file)
@@ -9,21 +9,25 @@
 #include <QThread>
 #include <QTimer>
 #include <QSettings>
+#include <QRotationSensor>
 #undef _GNU_SOURCE // just get rid of error message double definition
 #include <navdata.h>
 
 class DroneThread;
 
+QTM_USE_NAMESPACE
+
 class DroneControl : public QObject
 {
     Q_OBJECT
-    Q_PROPERTY(float pitch READ pitch WRITE setPitch)
-    Q_PROPERTY(float roll  READ roll  WRITE setRoll)
-    Q_PROPERTY(float yaw   READ yaw   WRITE setYaw)
+    Q_PROPERTY(float pitch READ pitch WRITE setPitch NOTIFY pitchRollChanged)
+    Q_PROPERTY(float roll  READ roll  WRITE setRoll NOTIFY pitchRollChanged)
+    Q_PROPERTY(float yaw   READ yaw   WRITE setYaw NOTIFY pitchRollChanged)
     Q_PROPERTY(float altitude  READ altitude WRITE setAltitude)
-    Q_PROPERTY(float vVelocity READ vVelocity WRITE setVVelocity)
+    Q_PROPERTY(float vVelocity READ vVelocity WRITE setVVelocity NOTIFY pitchRollChanged)
     Q_PROPERTY(int   enabled   READ enabled WRITE setEnabled)
     Q_PROPERTY(bool  fly READ fly WRITE setFly)
+    Q_PROPERTY(bool  ctrlActive READ ctrlActive WRITE setCtrlActive)
     Q_PROPERTY(float dronePitch READ dronePitch NOTIFY navDataChanged)
     Q_PROPERTY(float droneRoll READ droneRoll NOTIFY navDataChanged)
     Q_PROPERTY(float droneYaw READ droneYaw NOTIFY navDataChanged)
@@ -49,6 +53,7 @@ class DroneControl : public QObject
     Q_PROPERTY(float confBackwardGain READ confBackwardGain WRITE setConfBackwardGain NOTIFY configChanged)
     Q_PROPERTY(float confLeftGain     READ confLeftGain     WRITE setConfLeftGain     NOTIFY configChanged)
     Q_PROPERTY(float confRightGain    READ confRightGain    WRITE setConfRightGain    NOTIFY configChanged)
+    Q_PROPERTY(float confCtrlTrsh     READ confCtrlTrsh     WRITE setConfCtrlTrsh     NOTIFY configChanged)
 
 public:
     explicit DroneControl();
@@ -62,6 +67,7 @@ public:
     int   enabled() ; void setEnabled(int val_) ;
     bool  emergency();void setEmergency(bool val_) ;
     bool  fly() ;     void setFly(bool val_) ;
+    bool  ctrlActive();void setCtrlActive(bool val_) ;
 
 // Read only telemetry and drone status
     QString decodedStatus();
@@ -76,25 +82,27 @@ public:
     float droneVBat();
 
 //Config variables
- QString confDroneIp();   void setConfDroneIp(QString ip);
+ QString confDroneIp();      void setConfDroneIp(QString ip);
  bool    confShowDebug();    void setConfShowDebug(bool val);
  bool    confShowHorizon();  void setConfShowHorizon(bool val);
  bool    confShowGauges();   void setConfShowGauges(bool val);
  bool    confUseAccel();     void setConfUseAccel(bool val);
- bool    confFullScreen();void setConfFullScreen(bool val);
+ bool    confFullScreen();   void setConfFullScreen(bool val);
  bool    confUseJoyStick();  void setConfUseJoyStick(bool val);
  float   confForwardGain();  void setConfForwardGain(float val);
  float   confBackwardGain(); void setConfBackwardGain(float val);
  float   confLeftGain();     void setConfLeftGain(float val);
  float   confRightGain();    void setConfRightGain(float val);
-
+ float   confCtrlTrsh();     void setConfCtrlTrsh(float val);
 signals:
     void navDataChanged();
     void statusChanged();
     void configChanged();
+    void pitchRollChanged();
 public slots:
     void navDataUpdated();
     void statusUpdated();
+    void rotationReadingsChanged();
 private:
 
     float m_pitch;     // pitch in horizon
@@ -102,10 +110,16 @@ private:
     float m_yaw;       // low value to display
     float m_vv;        // Verticl velocity
     float m_altitude;  // altitude
+    float m_rotRefX;   // Rotation zero reference
+    float m_rotRefY;
+    float m_rotRefZ;
     int   m_enabled;   // Enable flag
     bool  m_emergency; // Emergency flag
     QString _emgReason; // Reason of emergency
     bool  m_fly;       // Fly flag
+    bool  m_ctrlActive;
+    bool  m_useAccel;
+    float m_ctrlTrsh;  // accel controll treshold
 
     QTcpSocket *ctlSock;  // TCP port for control/config data
     QUdpSocket *navSock;  // Navigation data receive socket port 5554
@@ -113,6 +127,7 @@ private:
 
     DroneThread *droneThread;
     QSettings *droneSettings;
+    QRotationSensor *rSensor; // used for controllind drone with device rotation
 };