Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
b1e5c012
Unverified
Commit
b1e5c012
authored
Apr 24, 2020
by
Don Gagne
Committed by
GitHub
Apr 24, 2020
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #8689 from DonLakeFlyer/TransectFixes
Plan - Terrain Follow: Fix tolerance adjustment step
parents
d2c7be09
e6e812d6
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
64 additions
and
79 deletions
+64
-79
AltitudeFactTextField.qml
src/FactSystem/FactControls/AltitudeFactTextField.qml
+7
-6
CameraCalc.cc
src/MissionManager/CameraCalc.cc
+1
-1
CameraCalc.h
src/MissionManager/CameraCalc.h
+7
-0
MissionSettingsItem.cc
src/MissionManager/MissionSettingsItem.cc
+3
-1
TransectStyle.SettingsGroup.json
src/MissionManager/TransectStyle.SettingsGroup.json
+1
-1
TransectStyleComplexItem.cc
src/MissionManager/TransectStyleComplexItem.cc
+30
-25
CameraCalcCamera.qml
src/PlanView/CameraCalcCamera.qml
+0
-5
CameraCalcGrid.qml
src/PlanView/CameraCalcGrid.qml
+12
-8
CorridorScanEditor.qml
src/PlanView/CorridorScanEditor.qml
+1
-8
StructureScanEditor.qml
src/PlanView/StructureScanEditor.qml
+1
-6
SurveyItemEditor.qml
src/PlanView/SurveyItemEditor.qml
+1
-18
No files found.
src/FactSystem/FactControls/AltitudeFactTextField.qml
View file @
b1e5c012
...
...
@@ -16,12 +16,13 @@ import QGroundControl.Controls 1.0
import
QGroundControl
.
ScreenTools
1.0
FactTextField
{
unitsLabel
:
fact
?
fact
.
units
:
""
extraUnitsLabel
:
fact
?
_altitudeModeExtraUnits
:
""
showUnits
:
true
showHelp
:
true
unitsLabel
:
fact
?
fact
.
units
:
""
extraUnitsLabel
:
fact
?
_altitudeModeExtraUnits
:
""
showUnits
:
true
showHelp
:
true
property
int
altitudeMode
:
QGroundControl
.
AltitudeModeNone
property
int
altitudeMode
:
QGroundControl
.
AltitudeModeNone
property
bool
showAboveTerrainWarning
:
true
readonly
property
string
_altModeNoneExtraUnits
:
""
readonly
property
string
_altModeRelativeExtraUnits
:
qsTr
(
"
(Rel)
"
)
...
...
@@ -44,7 +45,7 @@ FactTextField {
_altitudeModeExtraUnits
=
_altModeAbsoluteExtraUnits
}
else
if
(
altitudeMode
===
QGroundControl
.
AltitudeModeAboveTerrain
)
{
_altitudeModeExtraUnits
=
_altModeAboveTerrainExtraUnits
if
(
!
_aboveTerrainWarning
.
rawValue
)
{
if
(
!
_aboveTerrainWarning
.
rawValue
&&
showAboveTerrainWarning
)
{
mainWindow
.
showComponentDialog
(
aboveTerrainWarning
,
qsTr
(
"
Warning
"
),
mainWindow
.
showDialogDefaultWidth
,
StandardButton
.
Ok
)
}
}
else
if
(
missionItem
.
altitudeMode
===
QGroundControl
.
AltitudeModeTerrainFrame
)
{
...
...
src/MissionManager/CameraCalc.cc
View file @
b1e5c012
...
...
@@ -29,7 +29,7 @@ const char* CameraCalc::_jsonCameraSpecTypeKey = "CameraSpecType";
CameraCalc
::
CameraCalc
(
PlanMasterController
*
masterController
,
const
QString
&
settingsGroup
,
QObject
*
parent
)
:
CameraSpec
(
settingsGroup
,
parent
)
,
_dirty
(
masterController
)
,
_dirty
(
false
)
,
_disableRecalc
(
false
)
,
_distanceToSurfaceRelative
(
true
)
,
_metaDataMap
(
FactMetaData
::
createMapFromJsonFile
(
QStringLiteral
(
":/json/CameraCalc.FactMetaData.json"
),
this
))
...
...
src/MissionManager/CameraCalc.h
View file @
b1e5c012
...
...
@@ -33,6 +33,13 @@ public:
Q_PROPERTY
(
Fact
*
sideOverlap
READ
sideOverlap
CONSTANT
)
Q_PROPERTY
(
Fact
*
adjustedFootprintSide
READ
adjustedFootprintSide
CONSTANT
)
///< Side footprint adjusted down for overlap
Q_PROPERTY
(
Fact
*
adjustedFootprintFrontal
READ
adjustedFootprintFrontal
CONSTANT
)
///< Frontal footprint adjusted down for overlap
// When we are creating a manual grid we still use CameraCalc to store the manual grid information. It's a bastardization of what
// CameraCalc is meant for but it greatly simplifies code and persistance of manual grids.
// grid altitude - distanceToSurface
// grid altitude mode - distanceToSurfaceRelative
// trigger distance - adjustedFootprintFrontal
// transect spacing - adjustedFootprintSide
Q_PROPERTY
(
bool
distanceToSurfaceRelative
READ
distanceToSurfaceRelative
WRITE
setDistanceToSurfaceRelative
NOTIFY
distanceToSurfaceRelativeChanged
)
// The following values are calculated from the camera properties
...
...
src/MissionManager/MissionSettingsItem.cc
View file @
b1e5c012
...
...
@@ -190,7 +190,9 @@ void MissionSettingsItem::_setCoordinateWorker(const QGeoCoordinate& coordinate)
_plannedHomePositionCoordinate
=
coordinate
;
emit
coordinateChanged
(
coordinate
);
emit
exitCoordinateChanged
(
coordinate
);
_plannedHomePositionAltitudeFact
.
setRawValue
(
coordinate
.
altitude
());
if
(
_plannedHomePositionFromVehicle
)
{
_plannedHomePositionAltitudeFact
.
setRawValue
(
coordinate
.
altitude
());
}
}
}
...
...
src/MissionManager/TransectStyle.SettingsGroup.json
View file @
b1e5c012
...
...
@@ -37,7 +37,7 @@
},
{
"name"
:
"TerrainAdjustTolerance"
,
"shortDescription"
:
"
If adjacent terrain waypoints are within this tolerence they will be removed
."
,
"shortDescription"
:
"
Additional waypoints within the transect will be added if the terrain altitude difference grows larger than this tolerance
."
,
"type"
:
"double"
,
"decimalPlaces"
:
2
,
"min"
:
0
,
...
...
src/MissionManager/TransectStyleComplexItem.cc
View file @
b1e5c012
...
...
@@ -538,6 +538,18 @@ void TransectStyleComplexItem::_adjustTransectsForTerrain(void)
}
emit
lastSequenceNumberChanged
(
lastSequenceNumber
());
// Update entry/exit coordinates
if
(
_transects
.
count
())
{
if
(
_transects
.
first
().
count
())
{
_coordinate
.
setAltitude
(
_transects
.
first
().
first
().
coord
.
altitude
());
emit
coordinateChanged
(
coordinate
());
}
if
(
_transects
.
last
().
count
())
{
_exitCoordinate
.
setAltitude
(
_transects
.
last
().
last
().
coord
.
altitude
());
emit
exitCoordinateChanged
(
exitCoordinate
());
}
}
}
}
...
...
@@ -653,32 +665,25 @@ void TransectStyleComplexItem::_adjustForTolerance(QList<CoordInfo_t>& transect)
{
QList
<
CoordInfo_t
>
adjustedPoints
;
double
tolerance
=
_terrainAdjustToleranceFact
.
rawValue
().
toDouble
();
int
coordIndex
=
0
;
while
(
coordIndex
<
transect
.
count
())
{
const
CoordInfo_t
&
fromCoordInfo
=
transect
[
coordIndex
];
if
(
transect
.
count
())
{
double
tolerance
=
_terrainAdjustToleranceFact
.
rawValue
().
toDouble
();
CoordInfo_t
&
lastCoordInfo
=
transect
.
first
();
adjustedPoints
.
append
(
from
CoordInfo
);
adjustedPoints
.
append
(
last
CoordInfo
);
// Walk forward until we fall out of tolerence or find a fixed point
while
(
++
coordIndex
<
transect
.
count
())
{
const
CoordInfo_t
&
toCoordInfo
=
transect
[
coordIndex
];
if
(
toCoordInfo
.
coordType
!=
CoordTypeInteriorTerrainAdded
||
qAbs
(
fromCoordInfo
.
coord
.
altitude
()
-
toCoordInfo
.
coord
.
altitude
())
>
tolerance
)
{
adjustedPoints
.
append
(
toCoordInfo
);
coordIndex
++
;
break
;
int
coordIndex
=
1
;
while
(
coordIndex
<
transect
.
count
())
{
// Walk forward until we fall out of tolerence. When we fall out of tolerance add that point.
// We always add non-interstitial points no matter what.
const
CoordInfo_t
&
nextCoordInfo
=
transect
[
coordIndex
];
if
(
nextCoordInfo
.
coordType
!=
CoordTypeInteriorTerrainAdded
||
qAbs
(
lastCoordInfo
.
coord
.
altitude
()
-
nextCoordInfo
.
coord
.
altitude
())
>
tolerance
)
{
adjustedPoints
.
append
(
nextCoordInfo
);
lastCoordInfo
=
nextCoordInfo
;
}
coordIndex
++
;
}
}
#if 0
qDebug() << "_adjustForTolerance";
for (const TransectStyleComplexItem::CoordInfo_t& coordInfo: adjustedPoints) {
qDebug() << coordInfo.coordType;
}
#endif
transect
=
adjustedPoints
;
}
...
...
@@ -686,7 +691,7 @@ void TransectStyleComplexItem::_addInterstitialTerrainPoints(QList<CoordInfo_t>&
{
QList
<
CoordInfo_t
>
adjustedTransect
;
double
requestedAltitud
e
=
_cameraCalc
.
distanceToSurface
()
->
rawValue
().
toDouble
();
double
distanceToSurfac
e
=
_cameraCalc
.
distanceToSurface
()
->
rawValue
().
toDouble
();
for
(
int
i
=
0
;
i
<
transect
.
count
()
-
1
;
i
++
)
{
CoordInfo_t
fromCoordInfo
=
transect
[
i
];
...
...
@@ -697,8 +702,8 @@ void TransectStyleComplexItem::_addInterstitialTerrainPoints(QList<CoordInfo_t>&
const
TerrainPathQuery
::
PathHeightInfo_t
&
pathHeightInfo
=
transectPathHeightInfo
[
i
];
fromCoordInfo
.
coord
.
setAltitude
(
pathHeightInfo
.
heights
.
first
()
+
requestedAltitud
e
);
toCoordInfo
.
coord
.
setAltitude
(
pathHeightInfo
.
heights
.
last
()
+
requestedAltitud
e
);
fromCoordInfo
.
coord
.
setAltitude
(
pathHeightInfo
.
heights
.
first
()
+
distanceToSurfac
e
);
toCoordInfo
.
coord
.
setAltitude
(
pathHeightInfo
.
heights
.
last
()
+
distanceToSurfac
e
);
if
(
i
==
0
)
{
adjustedTransect
.
append
(
fromCoordInfo
);
...
...
@@ -712,7 +717,7 @@ void TransectStyleComplexItem::_addInterstitialTerrainPoints(QList<CoordInfo_t>&
CoordInfo_t
interstitialCoordInfo
;
interstitialCoordInfo
.
coordType
=
CoordTypeInteriorTerrainAdded
;
interstitialCoordInfo
.
coord
=
fromCoordInfo
.
coord
.
atDistanceAndAzimuth
(
distance
*
percentTowardsTo
,
azimuth
);
interstitialCoordInfo
.
coord
.
setAltitude
(
interstitialTerrainHeight
+
requestedAltitud
e
);
interstitialCoordInfo
.
coord
.
setAltitude
(
interstitialTerrainHeight
+
distanceToSurfac
e
);
adjustedTransect
.
append
(
interstitialCoordInfo
);
}
...
...
@@ -722,7 +727,7 @@ void TransectStyleComplexItem::_addInterstitialTerrainPoints(QList<CoordInfo_t>&
CoordInfo_t
lastCoordInfo
=
transect
.
last
();
const
TerrainPathQuery
::
PathHeightInfo_t
&
pathHeightInfo
=
transectPathHeightInfo
.
last
();
lastCoordInfo
.
coord
.
setAltitude
(
pathHeightInfo
.
heights
.
last
()
+
requestedAltitud
e
);
lastCoordInfo
.
coord
.
setAltitude
(
pathHeightInfo
.
heights
.
last
()
+
distanceToSurfac
e
);
adjustedTransect
.
append
(
lastCoordInfo
);
#if 0
...
...
src/PlanView/CameraCalcCamera.qml
View file @
b1e5c012
...
...
@@ -15,11 +15,6 @@ Column {
spacing
:
_margin
property
var
cameraCalc
property
bool
vehicleFlightIsFrontal
:
true
property
string
distanceToSurfaceLabel
property
int
distanceToSurfaceAltitudeMode
:
QGroundControl
.
AltitudeModeNone
property
string
frontalDistanceLabel
property
string
sideDistanceLabel
property
real
_margin
:
ScreenTools
.
defaultFontPixelWidth
/
2
property
string
_cameraName
:
cameraCalc
.
cameraName
.
value
...
...
src/PlanView/CameraCalcGrid.qml
View file @
b1e5c012
...
...
@@ -87,21 +87,24 @@ Column {
QGCRadioButton
{
id
:
fixedDistanceRadio
leftPadding
:
0
text
:
distanceToSurfaceLabel
checked
:
!!
cameraCalc
.
valueSetIsDistance
.
value
onClicked
:
cameraCalc
.
valueSetIsDistance
.
value
=
1
}
AltitudeFactTextField
{
fact
:
cameraCalc
.
distanceToSurface
altitudeMode
:
distanceToSurfaceAltitudeMode
enabled
:
fixedDistanceRadio
.
checked
Layout.fillWidth
:
true
fact
:
cameraCalc
.
distanceToSurface
altitudeMode
:
distanceToSurfaceAltitudeMode
showAboveTerrainWarning
:
false
enabled
:
fixedDistanceRadio
.
checked
Layout.fillWidth
:
true
}
QGCRadioButton
{
id
:
fixedImageDensityRadio
text
:
qsTr
(
"
Ground Res
"
)
leftPadding
:
0
text
:
qsTr
(
"
Grnd Res
"
)
checked
:
!
cameraCalc
.
valueSetIsDistance
.
value
onClicked
:
cameraCalc
.
valueSetIsDistance
.
value
=
0
}
...
...
@@ -125,9 +128,10 @@ Column {
QGCLabel
{
text
:
distanceToSurfaceLabel
}
AltitudeFactTextField
{
fact
:
cameraCalc
.
distanceToSurface
altitudeMode
:
distanceToSurfaceAltitudeMode
Layout.fillWidth
:
true
fact
:
cameraCalc
.
distanceToSurface
altitudeMode
:
distanceToSurfaceAltitudeMode
showAboveTerrainWarning
:
false
Layout.fillWidth
:
true
}
QGCLabel
{
text
:
frontalDistanceLabel
}
...
...
src/PlanView/CorridorScanEditor.qml
View file @
b1e5c012
...
...
@@ -252,14 +252,7 @@ Rectangle {
visible
:
tabBar
.
currentIndex
==
1
CameraCalcCamera
{
cameraCalc
:
missionItem
.
cameraCalc
vehicleFlightIsFrontal
:
true
distanceToSurfaceLabel
:
qsTr
(
"
Altitude
"
)
distanceToSurfaceAltitudeMode
:
missionItem
.
followTerrain
?
QGroundControl
.
AltitudeModeAboveTerrain
:
missionItem
.
cameraCalc
.
distanceToSurfaceRelative
frontalDistanceLabel
:
qsTr
(
"
Trigger Dist
"
)
sideDistanceLabel
:
qsTr
(
"
Spacing
"
)
cameraCalc
:
missionItem
.
cameraCalc
}
}
}
...
...
src/PlanView/StructureScanEditor.qml
View file @
b1e5c012
...
...
@@ -247,12 +247,7 @@ Rectangle {
visible
:
tabBar
.
currentIndex
==
1
CameraCalcCamera
{
cameraCalc
:
missionItem
.
cameraCalc
vehicleFlightIsFrontal
:
false
distanceToSurfaceLabel
:
qsTr
(
"
Scan Distance
"
)
distanceToSurfaceAltitudeMode
:
QGroundControl
.
AltitudeModeNone
frontalDistanceLabel
:
qsTr
(
"
Layer Height
"
)
sideDistanceLabel
:
qsTr
(
"
Trigger Distance
"
)
cameraCalc
:
missionItem
.
cameraCalc
}
}
}
...
...
src/PlanView/SurveyItemEditor.qml
View file @
b1e5c012
...
...
@@ -280,16 +280,6 @@ Rectangle {
spacing
:
_margin
visible
:
transectsHeader
.
checked
/*
Temporarily removed due to bug https://github.com/mavlink/qgroundcontrol/issues/7005
FactCheckBox {
text: qsTr("Split concave polygons")
fact: _splitConcave
visible: _splitConcave.visible
property Fact _splitConcave: missionItem.splitConcavePolygons
}
*/
QGCOptionsComboBox
{
Layout.fillWidth
:
true
...
...
@@ -405,14 +395,7 @@ Rectangle {
visible
:
tabBar
.
currentIndex
==
1
CameraCalcCamera
{
cameraCalc
:
missionItem
.
cameraCalc
vehicleFlightIsFrontal
:
true
distanceToSurfaceLabel
:
qsTr
(
"
Altitude
"
)
distanceToSurfaceAltitudeMode
:
missionItem
.
followTerrain
?
QGroundControl
.
AltitudeModeAboveTerrain
:
missionItem
.
cameraCalc
.
distanceToSurfaceRelative
frontalDistanceLabel
:
qsTr
(
"
Trigger Dist
"
)
sideDistanceLabel
:
qsTr
(
"
Spacing
"
)
cameraCalc
:
missionItem
.
cameraCalc
}
}
// Camera Column
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment