From 84624f90644a6090a68dd9cf25c8eef0dbb551ca Mon Sep 17 00:00:00 2001 From: Bryan Godbolt Date: Mon, 25 Oct 2010 12:00:58 -0600 Subject: [PATCH] added some comments to radio calibration widgets --- qgroundcontrol.pro | 2 - src/ui/RadioCalibration/AbstractCalibrator.h | 49 ++++++++++++++++++++++++ src/ui/RadioCalibration/AirfoilServoCalibrator.h | 44 ++++++++++++++++----- src/ui/RadioCalibration/CurveCalibrator.h | 40 +++++++++++++++++-- src/ui/RadioCalibration/RadioCalibrationData.h | 36 ++++++++++++++++- src/ui/RadioCalibration/RadioCalibrationWindow.h | 34 +++++++++++++++- src/ui/RadioCalibration/SwitchCalibrator.h | 36 +++++++++++++++-- 7 files changed, 220 insertions(+), 21 deletions(-) diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index 0f9bf88..9060930 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -272,8 +272,6 @@ SOURCES += src/main.cc \ src/ui/map/Waypoint2DIcon.cc \ src/ui/map/MAV2DIcon.cc \ src/ui/QGCRemoteControlView.cc \ - src/WaypointGlobal.cpp \ - src/ui/WaypointGlobalView.cpp \ src/ui/RadioCalibration/RadioCalibrationWindow.cc \ src/ui/RadioCalibration/AirfoilServoCalibrator.cc \ src/ui/RadioCalibration/SwitchCalibrator.cc \ diff --git a/src/ui/RadioCalibration/AbstractCalibrator.h b/src/ui/RadioCalibration/AbstractCalibrator.h index 74897cf..bbed707 100644 --- a/src/ui/RadioCalibration/AbstractCalibrator.h +++ b/src/ui/RadioCalibration/AbstractCalibrator.h @@ -1,3 +1,32 @@ +/*===================================================================== + +QGroundControl Open Source Ground Control Station + +(c) 2009, 2010 QGROUNDCONTROL PROJECT + +This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + +======================================================================*/ + +/** + * @file + * @brief Common aspects of radio calibration widgets + * @author Bryan Godbolt + */ + #ifndef ABSTRACTCALIBRATOR_H #define ABSTRACTCALIBRATOR_H @@ -8,6 +37,11 @@ #include +/** + @brief Holds the code which is common to all the radio calibration widgets. + + @author Bryan Godbolt + */ class AbstractCalibrator : public QWidget { Q_OBJECT @@ -15,18 +49,33 @@ public: explicit AbstractCalibrator(QWidget *parent = 0); ~AbstractCalibrator(); + /** Change the setpoints of the widget. Used when + changing the display from an external source (file/uav). + @param data QVector of setpoints + */ virtual void set(const QVector& data)=0; signals: + /** Announce a setpoint change. + @param index setpoint number - 0 based in the current implementation + @param value new value + */ void setpointChanged(int index, float value); public slots: + /** Slot to call when the relevant channel is updated + @param raw current channel value + */ void channelChanged(float raw); protected: + /** Display the current pulse width */ QLabel *pulseWidth; + /** Log of the past few samples for use in averaging and finding extrema */ QVector *log; + /** Find the maximum or minimum of the data log */ float logExtrema(); + /** Find the average of the log */ float logAverage(); }; diff --git a/src/ui/RadioCalibration/AirfoilServoCalibrator.h b/src/ui/RadioCalibration/AirfoilServoCalibrator.h index 0d4c02d..caf442e 100644 --- a/src/ui/RadioCalibration/AirfoilServoCalibrator.h +++ b/src/ui/RadioCalibration/AirfoilServoCalibrator.h @@ -1,3 +1,32 @@ +/*===================================================================== + +QGroundControl Open Source Ground Control Station + +(c) 2009, 2010 QGROUNDCONTROL PROJECT + +This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + +======================================================================*/ + +/** + * @file + * @brief Calibration widget for 3 point airfoil servo + * @author Bryan Godbolt + */ + #ifndef AIRFOILSERVOCALIBRATOR_H #define AIRFOILSERVOCALIBRATOR_H @@ -10,6 +39,12 @@ #include "AbstractCalibrator.h" +/** + @brief Calibration widget three setpoint control input. + For the helicopter autopilot at UAlberta this is used for Aileron, Elevator, and Rudder channels. + + @author Bryan Godbolt + */ class AirfoilServoCalibrator : public AbstractCalibrator { Q_OBJECT @@ -26,11 +61,6 @@ public: /** @param data must have exaclty 3 elemets. they are assumed to be low center high */ void set(const QVector& data); -//signals: -// void highSetpointChanged(float); -// void centerSetpointChanged(float); -// void lowSetpointChanged(float); - protected slots: void setHigh(); void setCenter(); @@ -40,10 +70,6 @@ protected: QLabel *highPulseWidth; QLabel *centerPulseWidth; QLabel *lowPulseWidth; - -// float high; -// float center; -// float low; }; #endif // AIRFOILSERVOCALIBRATOR_H diff --git a/src/ui/RadioCalibration/CurveCalibrator.h b/src/ui/RadioCalibration/CurveCalibrator.h index 8e0aeb3..b90249a 100644 --- a/src/ui/RadioCalibration/CurveCalibrator.h +++ b/src/ui/RadioCalibration/CurveCalibrator.h @@ -1,3 +1,32 @@ +/*===================================================================== + +QGroundControl Open Source Ground Control Station + +(c) 2009, 2010 QGROUNDCONTROL PROJECT + +This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + +======================================================================*/ + +/** + * @file + * @brief Calibration widget for 5 point inerpolated curve + * @author Bryan Godbolt + */ + #ifndef CURVECALIBRATOR_H #define CURVECALIBRATOR_H @@ -18,6 +47,10 @@ #include "AbstractCalibrator.h" +/** + @brief Calibration widget for 5 point inerpolated curve. + For the helicopter autopilot at UAlberta this is used for the throttle and pitch curves. + */ class CurveCalibrator : public AbstractCalibrator { Q_OBJECT @@ -26,17 +59,16 @@ public: ~CurveCalibrator(); void set(const QVector &data); -//signals: -// void setpointChanged(int setpoint, float raw); protected slots: void setSetpoint(int setpoint); -protected: +protected: QVector *setpoints; QVector *positions; -// QwtArrayData + /** Plot to display calibration curve */ QwtPlot *plot; + /** Curve object of calibration curve */ QwtPlotCurve *curve; QSignalMapper *signalMapper; diff --git a/src/ui/RadioCalibration/RadioCalibrationData.h b/src/ui/RadioCalibration/RadioCalibrationData.h index 0c0733d..4eb5b07 100644 --- a/src/ui/RadioCalibration/RadioCalibrationData.h +++ b/src/ui/RadioCalibration/RadioCalibrationData.h @@ -1,3 +1,32 @@ +/*===================================================================== + +QGroundControl Open Source Ground Control Station + +(c) 2009, 2010 QGROUNDCONTROL PROJECT + +This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + +======================================================================*/ + +/** + * @file + * @brief Class to hold the calibration data + * @author Bryan Godbolt + */ + #ifndef RADIOCALIBRATIONDATA_H #define RADIOCALIBRATIONDATA_H @@ -7,6 +36,10 @@ #include +/** + @brief Class to hold the calibration data. + @author Bryan Godbolt + */ class RadioCalibrationData : public QObject { Q_OBJECT @@ -45,13 +78,12 @@ public slots: void setThrottle(int index, float value) {set(THROTTLE, index, value);} public: - /// Creates a comman seperated list of the values for a particular element + /// Creates a comma seperated list of the values for a particular element QString toString(const RadioElement element) const; protected: QVector > *data; - void init(const QVector& aileron, const QVector& elevator, const QVector& rudder, diff --git a/src/ui/RadioCalibration/RadioCalibrationWindow.h b/src/ui/RadioCalibration/RadioCalibrationWindow.h index 476b4dc..1ec038c 100644 --- a/src/ui/RadioCalibration/RadioCalibrationWindow.h +++ b/src/ui/RadioCalibration/RadioCalibrationWindow.h @@ -1,3 +1,32 @@ +/*===================================================================== + +QGroundControl Open Source Ground Control Station + +(c) 2009, 2010 QGROUNDCONTROL PROJECT + +This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + +======================================================================*/ + +/** + * @file + * @brief Main window for radio calibration + * @author Bryan Godbolt + */ + #ifndef RADIOCALIBRATIONWINDOW_H #define RADIOCALIBRATIONWINDOW_H @@ -25,7 +54,10 @@ #include "UASManager.h" #include "RadioCalibrationData.h" - +/** + @brief Main window for radio calibration + @author Bryan Godbolt + */ class RadioCalibrationWindow : public QWidget { Q_OBJECT diff --git a/src/ui/RadioCalibration/SwitchCalibrator.h b/src/ui/RadioCalibration/SwitchCalibrator.h index cb0cfef..ae94700 100644 --- a/src/ui/RadioCalibration/SwitchCalibrator.h +++ b/src/ui/RadioCalibration/SwitchCalibrator.h @@ -1,3 +1,32 @@ +/*===================================================================== + +QGroundControl Open Source Ground Control Station + +(c) 2009, 2010 QGROUNDCONTROL PROJECT + +This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + +======================================================================*/ + +/** + * @file + * @brief Calibration widget for 2 setpoint switch + * @author Bryan Godbolt + */ + #ifndef SWITCHCALIBRATOR_H #define SWITCHCALIBRATOR_H @@ -10,6 +39,10 @@ #include "AbstractCalibrator.h" +/** + @brief Calibration widget for 2 setpoint switch + @author Bryan Godbolt + */ class SwitchCalibrator : public AbstractCalibrator { Q_OBJECT @@ -17,9 +50,6 @@ public: explicit SwitchCalibrator(QString title=QString(), QWidget *parent = 0); void set(const QVector &data); -//signals: -// void defaultSetpointChanged(float); -// void toggledSetpointChanged(float); protected slots: void setDefault();