Commit f4eb1bde authored by Valentin Platzgummer's avatar Valentin Platzgummer

temp

parent dd135422
......@@ -421,8 +421,8 @@ INCLUDEPATH += \
src/Vehicle \
src/Audio \
src/comm \
src/RouteMissionItem \
src/RouteMissionItem/geometry \
src/MeasurementComplexItem \
src/MeasurementComplexItem/geometry \
src/comm/ros_bridge \
src/input \
src/lib/qmapcontrol \
......@@ -447,52 +447,52 @@ contains (DEFINES, QGC_ENABLE_PAIRING) {
HEADERS += \
src/QmlControls/QmlUnitsConversion.h \
src/RouteMissionItem/geometry/GeoArea.h \
src/RouteMissionItem/geometry/MeasurementArea.h \
src/RouteMissionItem/geometry/SafeArea.h \
src/MeasurementComplexItem/geometry/GeoArea.h \
src/MeasurementComplexItem/geometry/MeasurementArea.h \
src/MeasurementComplexItem/geometry/SafeArea.h \
src/Vehicle/VehicleEscStatusFactGroup.h \
src/RouteMissionItem/AreaData.h \
src/RouteMissionItem/RouteComplexItem.h \
src/RouteMissionItem/GenericSingelton.h \
src/RouteMissionItem/geometry/GenericCircle.h \
src/RouteMissionItem/RoutingThread.h \
src/RouteMissionItem/CircularGenerator.h \
src/RouteMissionItem/GeneratorBase.h \
src/RouteMissionItem/LinearGenerator.h \
src/RouteMissionItem/geometry/clipper/clipper.hpp \
src/RouteMissionItem/geometry/mapbox/feature.hpp \
src/RouteMissionItem/geometry/mapbox/geometry.hpp \
src/RouteMissionItem/geometry/mapbox/geometry/box.hpp \
src/RouteMissionItem/geometry/mapbox/geometry/empty.hpp \
src/RouteMissionItem/geometry/mapbox/geometry/envelope.hpp \
src/RouteMissionItem/geometry/mapbox/geometry/for_each_point.hpp \
src/RouteMissionItem/geometry/mapbox/geometry/geometry.hpp \
src/RouteMissionItem/geometry/mapbox/geometry/line_string.hpp \
src/RouteMissionItem/geometry/mapbox/geometry/multi_line_string.hpp \
src/RouteMissionItem/geometry/mapbox/geometry/multi_point.hpp \
src/RouteMissionItem/geometry/mapbox/geometry/multi_polygon.hpp \
src/RouteMissionItem/geometry/mapbox/geometry/point.hpp \
src/RouteMissionItem/geometry/mapbox/geometry/point_arithmetic.hpp \
src/RouteMissionItem/geometry/mapbox/geometry/polygon.hpp \
src/RouteMissionItem/geometry/mapbox/geometry_io.hpp \
src/RouteMissionItem/geometry/mapbox/optional.hpp \
src/RouteMissionItem/geometry/mapbox/polylabel.hpp \
src/RouteMissionItem/geometry/mapbox/recursive_wrapper.hpp \
src/RouteMissionItem/geometry/mapbox/variant.hpp \
src/RouteMissionItem/geometry/mapbox/variant_io.hpp \
src/RouteMissionItem/geometry/snake.h \
src/RouteMissionItem/geometry/GenericPolygon.h \
src/RouteMissionItem/geometry/GenericPolygonArray.h \
src/RouteMissionItem/geometry/GeoPoint3D.h \
src/RouteMissionItem/NemoInterface.h \
src/RouteMissionItem/nemo_interface/QNemoHeartbeat.h \
src/RouteMissionItem/nemo_interface/QNemoProgress.h \
src/RouteMissionItem/nemo_interface/QNemoProgress.h \
src/RouteMissionItem/nemo_interface/SnakeTile.h \
src/RouteMissionItem/nemo_interface/SnakeTileLocal.h \
src/RouteMissionItem/nemo_interface/SnakeTiles.h \
src/RouteMissionItem/nemo_interface/SnakeTilesLocal.h \
src/RouteMissionItem/call_once.h \
src/MeasurementComplexItem/AreaData.h \
src/MeasurementComplexItem/MeasurementComplexItem.h \
src/MeasurementComplexItem/GenericSingelton.h \
src/MeasurementComplexItem/geometry/GenericCircle.h \
src/MeasurementComplexItem/RoutingThread.h \
src/MeasurementComplexItem/CircularGenerator.h \
src/MeasurementComplexItem/GeneratorBase.h \
src/MeasurementComplexItem/LinearGenerator.h \
src/MeasurementComplexItem/geometry/clipper/clipper.hpp \
src/MeasurementComplexItem/geometry/mapbox/feature.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry/box.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry/empty.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry/envelope.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry/for_each_point.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry/geometry.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry/line_string.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry/multi_line_string.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry/multi_point.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry/multi_polygon.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry/point.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry/point_arithmetic.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry/polygon.hpp \
src/MeasurementComplexItem/geometry/mapbox/geometry_io.hpp \
src/MeasurementComplexItem/geometry/mapbox/optional.hpp \
src/MeasurementComplexItem/geometry/mapbox/polylabel.hpp \
src/MeasurementComplexItem/geometry/mapbox/recursive_wrapper.hpp \
src/MeasurementComplexItem/geometry/mapbox/variant.hpp \
src/MeasurementComplexItem/geometry/mapbox/variant_io.hpp \
src/MeasurementComplexItem/geometry/snake.h \
src/MeasurementComplexItem/geometry/GenericPolygon.h \
src/MeasurementComplexItem/geometry/GenericPolygonArray.h \
src/MeasurementComplexItem/geometry/GeoPoint3D.h \
src/MeasurementComplexItem/NemoInterface.h \
src/MeasurementComplexItem/nemo_interface/QNemoHeartbeat.h \
src/MeasurementComplexItem/nemo_interface/QNemoProgress.h \
src/MeasurementComplexItem/nemo_interface/QNemoProgress.h \
src/MeasurementComplexItem/nemo_interface/SnakeTile.h \
src/MeasurementComplexItem/nemo_interface/SnakeTileLocal.h \
src/MeasurementComplexItem/nemo_interface/SnakeTiles.h \
src/MeasurementComplexItem/nemo_interface/SnakeTilesLocal.h \
src/MeasurementComplexItem/call_once.h \
src/api/QGCCorePlugin.h \
src/api/QGCOptions.h \
src/api/QGCSettings.h \
......@@ -522,27 +522,27 @@ contains (DEFINES, QGC_ENABLE_PAIRING) {
}
SOURCES += \
src/RouteMissionItem/geometry/GeoArea.cc \
src/RouteMissionItem/geometry/MeasurementArea.cc \
src/RouteMissionItem/geometry/SafeArea.cc \
src/MeasurementComplexItem/geometry/GeoArea.cc \
src/MeasurementComplexItem/geometry/MeasurementArea.cc \
src/MeasurementComplexItem/geometry/SafeArea.cc \
src/Vehicle/VehicleEscStatusFactGroup.cc \
src/RouteMissionItem/AreaData.cc \
src/MeasurementComplexItem/AreaData.cc \
src/api/QGCCorePlugin.cc \
src/api/QGCOptions.cc \
src/api/QGCSettings.cc \
src/api/QmlComponentInfo.cc \
src/RouteMissionItem/RouteComplexItem.cc \
src/RouteMissionItem/GenericSingelton.cpp \
src/RouteMissionItem/RoutingThread.cpp \
src/RouteMissionItem/CircularGenerator.cpp \
src/RouteMissionItem/GeneratorBase.cc \
src/RouteMissionItem/LinearGenerator.cpp \
src/RouteMissionItem/geometry/clipper/clipper.cpp \
src/RouteMissionItem/geometry/snake.cpp \
src/RouteMissionItem/geometry/GeoPoint3D.cpp \
src/RouteMissionItem/NemoInterface.cpp \
src/RouteMissionItem/nemo_interface/QNemoProgress.cc \
src/RouteMissionItem/nemo_interface/SnakeTile.cpp \
src/MeasurementComplexItem/MeasurementComplexItem.cc \
src/MeasurementComplexItem/GenericSingelton.cpp \
src/MeasurementComplexItem/RoutingThread.cpp \
src/MeasurementComplexItem/CircularGenerator.cpp \
src/MeasurementComplexItem/GeneratorBase.cc \
src/MeasurementComplexItem/LinearGenerator.cpp \
src/MeasurementComplexItem/geometry/clipper/clipper.cpp \
src/MeasurementComplexItem/geometry/snake.cpp \
src/MeasurementComplexItem/geometry/GeoPoint3D.cpp \
src/MeasurementComplexItem/NemoInterface.cpp \
src/MeasurementComplexItem/nemo_interface/QNemoProgress.cc \
src/MeasurementComplexItem/nemo_interface/SnakeTile.cpp \
src/comm/ros_bridge/include/RosBridgeClient.cpp \
src/comm/ros_bridge/include/com_private.cpp \
src/comm/ros_bridge/include/messages/geographic_msgs/geopoint.cpp \
......
......@@ -263,8 +263,8 @@
<file alias="SerialSettings.qml">src/ui/preferences/SerialSettings.qml</file>
<file alias="CircularGeneratorEditor.qml">src/WimaView/CircularGeneratorEditor.qml</file>
<file alias="QGroundControl/Controls/CircularGeneratorMapVisual.qml">src/WimaView/CircularGeneratorMapVisual.qml</file>
<file alias="CircularSurveyItemEditor.qml">src/WimaView/CircularSurveyItemEditor.qml</file>
<file alias="QGroundControl/Controls/CircularSurveyMapVisual.qml">src/WimaView/CircularSurveyMapVisual.qml</file>
<file alias="CircularSurveyItemEditor.qml">src/WimaView/MeasurementItemEditor.qml</file>
<file alias="QGroundControl/Controls/CircularSurveyMapVisual.qml">src/WimaView/MeasurementItemMapVisual.qml</file>
<file alias="Wima/CoordinateIndicator.qml">src/WimaView/CoordinateIndicator.qml</file>
<file alias="Wima/CoordinateIndicatorDrag.qml">src/WimaView/CoordinateIndicatorDrag.qml</file>
<file alias="Wima/DragCoordinate.qml">src/WimaView/DragCoordinate.qml</file>
......@@ -352,9 +352,9 @@
<file alias="Video.SettingsGroup.json">src/Settings/Video.SettingsGroup.json</file>
<file alias="VTOLLandingPattern.FactMetaData.json">src/MissionManager/VTOLLandingPattern.FactMetaData.json</file>
<file alias="Wima.SettingsGroup.json">src/Settings/Wima.SettingsGroup.json</file>
<file alias="RouteComplexItem.SettingsGroup.json">src/RouteMissionItem/json/RouteComplexItem.SettingsGroup.json</file>
<file alias="LinearGenerator.SettingsGroup.json">src/RouteMissionItem/json/LinearGenerator.SettingsGroup.json</file>
<file alias="CircularGenerator.SettingsGroup.json">src/RouteMissionItem/json/CircularGenerator.SettingsGroup.json</file>
<file>src/MeasurementComplexItem/json/CircularGenerator.SettingsGroup.json</file>
<file>src/MeasurementComplexItem/json/LinearGenerator.SettingsGroup.json</file>
<file>src/MeasurementComplexItem/json/MeasurementComplexItem.SettingsGroup.json</file>
</qresource>
<qresource prefix="/MockLink">
<file alias="APMArduSubMockLink.params">src/comm/APMArduSubMockLink.params</file>
......
......@@ -4,8 +4,9 @@
#include <QVector>
#include <memory>
#include "ComplexMissionItem.h"
#include "QGCQGeoCoordinate.h"
#include "SettingsFact.h"
#include "TransectStyleComplexItem.h"
#include "AreaData.h"
......@@ -16,24 +17,24 @@ namespace routing {
class GeneratorBase;
}
class RouteComplexItem : public TransectStyleComplexItem {
class MeasurementComplexItem : public ComplexMissionItem {
Q_OBJECT
using PtrGenerator = routing::GeneratorBase *;
using PtrAreaData = AreaData *;
using PtrRoutingData = std::shared_ptr<RoutingData>;
using PtrWorker = RoutingThread *;
using Transects = QList<QList<CoordInfo_t>>;
using Variant = Transects;
using Variant = QList<QGeoCoordinate>;
enum class STATE { IDLE, ROUTING, SKIPP, REVERT_PATH, CHANGE_VARIANT };
enum class STATE { IDLE, ROUTING, REVERT_PATH, CHANGE_VARIANT, EDITING };
public:
RouteComplexItem(PlanMasterController *masterController, bool flyView,
const QString &kmlOrShpFile, QObject *parent);
~RouteComplexItem();
MeasurementComplexItem(PlanMasterController *masterController, bool flyView,
const QString &kmlOrShpFile, QObject *parent);
~MeasurementComplexItem();
Q_PROPERTY(Fact *variant READ variant CONSTANT)
Q_PROPERTY(Fact *altitude READ variant CONSTANT)
Q_PROPERTY(
QStringList variantNames READ variantNames NOTIFY variantNamesChanged)
Q_PROPERTY(QStringList generatorNameList READ generatorNameList NOTIFY
......@@ -44,30 +45,50 @@ public:
Q_PROPERTY(int generatorIndex READ generatorIndex NOTIFY generatorChanged)
Q_PROPERTY(bool editing READ editing NOTIFY editingChanged)
Q_PROPERTY(AreaData *areaData READ areaData NOTIFY areaDataChanged)
Q_PROPERTY(QVariantList visualTransectPoints READ visualTransectPoints NOTIFY
visualTransectPointsChanged)
Q_INVOKABLE void revertPath(void);
// Property getters
const AreaData *areaData() const;
AreaData *areaData();
Fact *variant();
QStringList variantNames() const;
bool calculating() const;
bool editing() const;
// Overrides
// Overrides from ComplexMissionItem
virtual QString patternName(void) const override final;
virtual double complexDistance(void) const override final;
virtual int lastSequenceNumber(void) const final;
virtual bool load(const QJsonObject &complexObject, int sequenceNumber,
QString &errorString) override final;
virtual void save(QJsonArray &planItems) override final;
virtual double
greatestDistanceTo(const QGeoCoordinate &other) const override final;
virtual QString mapVisualQML(void) const override final;
// Overrides from VisualMissionItem
virtual bool dirty(void) const override final;
virtual bool isSimpleItem(void) const override final;
virtual bool isStandaloneCoordinate(void) const override final;
virtual bool specifiesCoordinate(void) const override final;
virtual double timeBetweenShots(void) override final;
virtual QString commandDescription(void) const override final;
virtual QString commandName(void) const override final;
virtual QString abbreviation(void) const override final;
virtual ReadyForSaveState readyForSaveState(void) const override final;
virtual bool specifiesAltitudeOnly(void) const override final;
virtual QGeoCoordinate coordinate(void) const override final;
virtual QGeoCoordinate exitCoordinate(void) const override final;
virtual int sequenceNumber(void) const override final;
virtual double specifiedFlightSpeed(void) final override;
virtual double specifiedGimbalYaw(void) final override;
virtual double specifiedGimbalPitch(void) final override;
virtual void appendMissionItems(QList<MissionItem *> &items,
QObject *missionItemParent) final override;
virtual void setMissionFlightStatus(
const MissionController::MissionFlightStatus_t &missionFlightStatus)
final override;
virtual void applyNewAltitude(double newAltitude) override final;
virtual double additionalTimeDelay(void) const override final;
virtual QString patternName(void) const override;
virtual ReadyForSaveState readyForSaveState(void) const override final;
virtual bool exitCoordinateSameAsEntry(void) const override final;
virtual void setDirty(bool dirty) override final;
virtual void setCoordinate(const QGeoCoordinate &coordinate) override final;
virtual void setSequenceNumber(int sequenceNumber) override final;
virtual void save(QJsonArray &missionItems) override final;
virtual double amslEntryAlt(void) const override final;
virtual double amslExitAlt(void) const override final;
virtual double minAMSLAltitude(void) const override final;
virtual double maxAMSLAltitude(void) const override final;
// Generator
bool registerGenerator(const QString &name, routing::GeneratorBase *g);
......@@ -95,8 +116,19 @@ public:
//!
void editingStop();
// Property getters
const AreaData *areaData() const;
AreaData *areaData();
Fact *variant();
Fact *altitude();
QStringList variantNames() const;
bool calculating() const;
bool editing() const;
bool followTerrain() const;
static const char *settingsGroup;
static const char *variantName;
static const char *altitudeName;
static const char *jsonComplexItemTypeValue;
static const QString name;
......@@ -110,22 +142,27 @@ signals:
private slots:
// Overrides from TransectStyleComplexItem
virtual void _rebuildTransectsPhase1(void) override final;
virtual void _recalcCameraShots(void) override final;
void _update(void);
// Worker functions.
void _setTransects(PtrRoutingData pRoute);
void _changeVariant();
bool _updateWorker();
bool _updateRouteWorker();
void _changeVariantWorker();
void _reverseWorker();
private:
bool _setGenerator(PtrGenerator newG);
void _setState(STATE state);
bool _calculating(STATE state) const;
void _setEditing(bool editing);
void _setAreaData(PtrAreaData data);
static bool _calculating(STATE state);
static bool _editing(STATE state);
// Hirarcical stuff.
PlanMasterController *_masterController;
int _sequenceNumber;
bool _followTerrain;
SettingsFact *_altitude;
// State.
STATE _state;
......@@ -139,7 +176,6 @@ private:
PtrAreaData _areaData;
PtrAreaData _editorData;
PtrAreaData _currentData;
bool _editing;
// Generators
QList<PtrGenerator> _generatorList;
......@@ -148,5 +184,6 @@ private:
// Routing.
QVector<Variant> _variantVector;
Variant _route;
PtrWorker _pWorker;
};
{
"version": 1,
"fileType": "FactMetaData",
"QGC.MetaData.Facts":
[
{
"name": "Variant",
"shortDescription": "Route variant.",
"type": "uint64",
"defaultValue": 0
},
{
"name": "Altitude",
"shortDescription": "Altitude",
"type": "double",
"units": "m",
"min": 1,
"decimalPlaces": 1,
"defaultValue": 10.0
}
]
}
......@@ -15,6 +15,7 @@
#include "FlightPathSegment.h"
#include "JsonHelper.h"
#include "KMLPlanDomDocument.h"
#include "MeasurementComplexItem.h"
#include "MissionCommandUIInfo.h"
#include "MissionManager.h"
#include "MissionSettingsItem.h"
......@@ -26,7 +27,6 @@
#include "QGCCorePlugin.h"
#include "QGCQGeoCoordinate.h"
#include "QGroundControlQmlGlobal.h"
#include "RouteComplexItem.h"
#include "SettingsManager.h"
#include "SimpleMissionItem.h"
#include "StructureScanComplexItem.h"
......@@ -528,10 +528,10 @@ VisualMissionItem *MissionController::insertComplexMissionItem(
newItem = new CorridorScanComplexItem(_masterController, _flyView,
QString() /* kmlFile */,
_visualItems /* parent */);
} else if (itemName == RouteComplexItem::name) {
newItem = new RouteComplexItem(_masterController, _flyView,
QString() /* kmlFile */,
_visualItems /* parent */);
} else if (itemName == MeasurementComplexItem::name) {
newItem = new MeasurementComplexItem(_masterController, _flyView,
QString() /* kmlFile */,
_visualItems /* parent */);
} else {
qWarning() << "Internal error: Unknown complex item:" << itemName;
return nullptr;
......@@ -575,7 +575,7 @@ void MissionController::_insertComplexMissionItemWorker(
qobject_cast<SurveyComplexItem *>(complexItem) ||
qobject_cast<CorridorScanComplexItem *>(complexItem) ||
qobject_cast<StructureScanComplexItem *>(complexItem) ||
qobject_cast<RouteComplexItem *>(complexItem);
qobject_cast<MeasurementComplexItem *>(complexItem);
if (surveyStyleItem) {
bool rollSupported = false;
......@@ -642,7 +642,7 @@ void MissionController::removeVisualItem(int viIndex) {
bool removeSurveyStyle =
_visualItems->value<SurveyComplexItem *>(viIndex) ||
_visualItems->value<CorridorScanComplexItem *>(viIndex) ||
_visualItems->value<RouteComplexItem *>(viIndex);
_visualItems->value<MeasurementComplexItem *>(viIndex);
VisualMissionItem *item =
qobject_cast<VisualMissionItem *>(_visualItems->removeAt(viIndex));
......@@ -659,7 +659,7 @@ void MissionController::removeVisualItem(int viIndex) {
for (int i = 1; i < _visualItems->count(); i++) {
if (_visualItems->value<SurveyComplexItem *>(i) ||
_visualItems->value<CorridorScanComplexItem *>(i) ||
_visualItems->value<RouteComplexItem *>(i)) {
_visualItems->value<MeasurementComplexItem *>(i)) {
foundSurvey = true;
break;
}
......@@ -1062,11 +1062,11 @@ bool MissionController::_loadJsonMissionFileV2(const QJsonObject &json,
<< nextSequenceNumber;
visualItems->append(corridorItem);
} else if (complexItemType ==
RouteComplexItem::jsonComplexItemTypeValue) {
MeasurementComplexItem::jsonComplexItemTypeValue) {
qCDebug(MissionControllerLog)
<< "Loading Circular Survey: nextSequenceNumber"
<< "Loading Measurement Complex Item: nextSequenceNumber"
<< nextSequenceNumber;
RouteComplexItem *survey = new RouteComplexItem(
MeasurementComplexItem *survey = new MeasurementComplexItem(
_masterController, _flyView, QString() /* kmlFile */, visualItems);
if (!survey->load(itemObject, nextSequenceNumber++, errorString)) {
return false;
......@@ -2611,7 +2611,7 @@ QStringList MissionController::complexMissionItemNames(void) const {
complexItems.append(SurveyComplexItem::name);
complexItems.append(CorridorScanComplexItem::name);
complexItems.append(RouteComplexItem::name);
complexItems.append(MeasurementComplexItem::name);
if (_controllerVehicle->multiRotor() || _controllerVehicle->vtol()) {
complexItems.append(StructureScanComplexItem::name);
}
......
{
"version": 1,
"fileType": "FactMetaData",
"QGC.MetaData.Facts":
[
{
"name": "TransectDistance",
"shortDescription": "The distance between transects.",
"type": "double",
"units": "m",
"min": 0.3,
"decimalPlaces": 1,
"defaultValue": 20.0
},
{
"name": "Alpha",
"shortDescription": "Angle discretisation or transect angle (depending on type).",
"type": "double",
"units": "Deg",
"min": 0,
"max": 180,
"decimalPlaces": 1,
"defaultValue": 5.0
},
{
"name": "MinLength",
"shortDescription": "The minimal transect length.",
"type": "double",
"units": "m",
"min": 0.3,
"decimalPlaces": 1,
"defaultValue": 5.0
},
{
"name": "Type",
"shortDescription": "Survey Type.",
"type": "uint64",
"defaultValue": 0
},
{
"name": "Variant",
"shortDescription": "Route variant.",
"type": "uint64",
"defaultValue": 0
},
{
"name": "NumRuns",
"shortDescription": "The number of runs.",
"type": "uint64",
"min": 1,
"defaultValue": 1
},
{
"name": "Run",
"shortDescription": "The current run.",
"type": "uint64",
"defaultValue": 0
}
]
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment