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
c4aad10e
Commit
c4aad10e
authored
Jul 02, 2020
by
Valentin Platzgummer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Tiles, tiles center points and progress visualization implemented, no templating ros_bridge.
parent
99b27028
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
137 additions
and
35 deletions
+137
-35
FlightDisplayViewMap.qml
src/FlightDisplay/FlightDisplayViewMap.qml
+46
-0
FlightDisplayWimaMenu.qml
src/FlightDisplay/FlightDisplayWimaMenu.qml
+43
-18
WimaController.cc
src/Wima/WimaController.cc
+12
-5
WimaController.h
src/Wima/WimaController.h
+17
-10
WimaControllerDetail.cc
src/Wima/WimaControllerDetail.cc
+1
-1
WimaControllerDetail.h
src/Wima/WimaControllerDetail.h
+1
-1
jsonprocessor.cpp
src/comm/ros_bridge/src/JsonProcessor/jsonprocessor.cpp
+6
-0
jsonprocessor.h
src/comm/ros_bridge/src/JsonProcessor/jsonprocessor.h
+11
-0
No files found.
src/FlightDisplay/FlightDisplayViewMap.qml
View file @
c4aad10e
...
...
@@ -241,6 +241,52 @@ FlightMap {
color
:
"
green
"
}
// Add Snake tiles center points to the map
MapItemView
{
property
bool
_enable
:
wimaController
.
enableWimaController
.
value
&&
wimaController
.
enableSnake
.
value
model
:
_enable
?
wimaController
.
snakeTileCenterPoints
:
0
delegate
:
MapCircle
{
center
:
modelData
border.color
:
"
transparent
"
color
:
getColor
(
wimaController
.
snakeProgress
[
index
])
radius
:
0.6
opacity
:
1
z
:
1
function
getColor
(
progress
)
{
if
(
progress
<
50
)
return
"
red
"
if
(
progress
<
100
)
return
"
orange
"
return
"
green
"
}
}
}
// Add Snake tiles to the map
MapItemView
{
property
bool
_enable
:
wimaController
.
enableWimaController
.
value
&&
wimaController
.
enableSnake
.
value
model
:
_enable
?
wimaController
.
snakeTiles
:
0
delegate
:
MapPolygon
{
path
:
object
.
path
;
border.color
:
"
black
"
border.width
:
1
color
:
"
transparent
"
opacity
:
1
z
:
2
}
}
// Add trajectory points to the map
MapItemView
{
model
:
_mainIsMap
?
_activeVehicle
?
_activeVehicle
.
trajectoryPoints
:
0
:
0
...
...
src/FlightDisplay/FlightDisplayWimaMenu.qml
View file @
c4aad10e
...
...
@@ -140,8 +140,12 @@ Item {
visible
:
enableWima
.
enableWimaBoolean
anchors.left
:
parent
.
left
anchors.bottom
:
parent
.
bottom
width
:
enableWima
.
enableWimaBoolean
?
Math
.
min
(
contentWidth
,
maxWidth
)
:
enableWima
.
width
height
:
enableWima
.
enableWimaBoolean
?
Math
.
min
(
contentHeight
,
maxHeight
)
:
0
width
:
enableWima
.
enableWimaBoolean
?
Math
.
min
(
contentWidth
,
maxWidth
)
:
enableWima
.
width
height
:
enableWima
.
enableWimaBoolean
?
Math
.
min
(
contentHeight
,
maxHeight
)
:
0
contentHeight
:
columnWrapper
.
height
contentWidth
:
columnWrapper
.
width
...
...
@@ -153,39 +157,60 @@ Item {
}
Column
{
id
:
mainColumn
spacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.3
id
:
mainColumn
spacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.3
SectionHeader
{
id
:
snakeHeader
text
:
qsTr
(
"
Snake Settings
"
)
}
GridLayout
{
columns
:
2
rowSpacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
columnSpacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
visible
:
snakeHeader
.
checked
Column
{
visible
:
snakeHeader
.
checked
spacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
FactCheckBox
{
text
:
wimaController
.
enableSnake
.
value
?
qsTr
(
"
Disable Snake
"
)
:
qsTr
(
"
Enable Snake
"
)
text
:
wimaController
.
enableSnake
.
value
?
qsTr
(
"
Disable Snake
"
)
:
qsTr
(
"
Enable Snake
"
)
fact
:
wimaController
.
enableSnake
Layout.fillWidth
:
true
}
QGCLabel
{
text
:
wimaController
.
snakeConnectionStatus
.
value
===
1
?
qsTr
(
"
Connected
"
)
:
qsTr
(
"
Not Connected
"
)
Layout.fillWidth
:
true
// Spacer
Item
{
height
:
1
}
QGCLabel
{
text
:
wimaController
.
snakeCalcInProgress
.
value
===
true
?
qsTr
(
"
Calculation: In Progress
"
)
:
qsTr
(
"
Calculation: Idle
"
)
Layout.fillWidth
:
true
Layout.columnSpan
:
2
// Snake status and settings column.
GridLayout
{
columns
:
2
rowSpacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
columnSpacing
:
ScreenTools
.
defaultFontPixelHeight
*
0.5
visible
:
wimaController
.
enableSnake
.
value
// Snake connection status.
QGCLabel
{
property
int
_connectionStatus
:
wimaController
.
snakeConnectionStatus
text
:
_connectionStatus
===
1
?
qsTr
(
"
Status: Connected
"
)
:
qsTr
(
"
Status: Not Connected
"
)
Layout.fillWidth
:
true
}
// Snake calculation status.
QGCLabel
{
property
bool
_calcInProgress
:
wimaController
.
snakeCalcInProgress
text
:
_calcInProgress
===
true
?
qsTr
(
"
Calculation: In Progress
"
)
:
qsTr
(
"
Calculation: Idle
"
)
Layout.fillWidth
:
true
}
}
}
SectionHeader
{
id
:
missionHeader
text
:
qsTr
(
"
Phase Settings
"
)
...
...
src/Wima/WimaController.cc
View file @
c4aad10e
...
...
@@ -439,12 +439,14 @@ bool WimaController::_fetchContainerData()
_waypointPath
.
clear
();
_currentWaypointPath
.
clear
();
_snakeTiles
.
clearAndDeleteContents
();
_snakeTileCenterPoints
.
clear
();
emit
visualItemsChanged
();
emit
missionItemsChanged
();
emit
currentMissionItemsChanged
();
emit
currentWaypointPathChanged
();
emit
snakeTilesChanged
();
emit
snakeTileCenterPointsChanged
();
_localPlanDataValid
=
false
;
...
...
@@ -583,11 +585,14 @@ bool WimaController::_fetchContainerData()
QGeoCoordinate
QCenterPoint
(
centerPoint
[
0
],
centerPoint
[
1
],
centerPoint
[
2
]);
QTile
->
setCenter
(
QCenterPoint
);
_snakeTiles
.
append
(
QTile
);
_snakeTileCenterPoints
.
append
(
QVariant
::
fromValue
(
QCenterPoint
));
}
emit
visualItemsChanged
();
emit
missionItemsChanged
();
emit
snakeTilesChanged
();
emit
snakeTileCenterPointsChanged
();
_localPlanDataValid
=
true
;
return
true
;
...
...
@@ -961,23 +966,25 @@ void WimaController::_eventTimerHandler()
if
(
snakeEventLoopTicker
.
ready
()
)
{
if
(
_enableSnake
.
rawValue
().
toBool
()
&&
_localPlanDataValid
&&
!
_snakeCalcInProgress
&&
_scenarioDefinedBool
)
{
_snakeProgress
.
clear
();
long
n
=
_scenario
.
getTilesENU
().
size
();
QList
<
qint8
>
progress
;
progress
.
reserve
(
n
);
_snakeProgress
.
reserve
(
n
);
std
::
srand
(
time
(
NULL
));
for
(
long
i
=
0
;
i
<
n
;
++
i
){
long
r
{
rand
()
%
200
};
int
r
{
rand
()
%
200
};
if
(
r
>
100
)
r
=
100
;
progress
.
append
(
qint8
(
r
)
);
_snakeProgress
.
append
(
r
);
}
_snakeWorker
.
setScenario
(
_scenario
);
_snakeWorker
.
setProgress
(
p
rogress
);
_snakeWorker
.
setProgress
(
_snakeP
rogress
);
_snakeWorker
.
setLineDistance
(
_snakeLineDistance
.
rawValue
().
toDouble
());
_snakeWorker
.
setMinTransectLength
(
_snakeMinTransectLength
.
rawValue
().
toDouble
());
_setSnakeCalcInProgress
(
true
);
_snakeWorker
.
start
();
emit
snakeProgressChanged
();
}
}
}
...
...
src/Wima/WimaController.h
View file @
c4aad10e
...
...
@@ -78,15 +78,17 @@ public:
Q_PROPERTY
(
bool
vehicleHasLowBattery
READ
vehicleHasLowBattery
NOTIFY
vehicleHasLowBatteryChanged
)
// Snake
Q_PROPERTY
(
Fact
*
enableSnake
READ
enableSnake
CONSTANT
)
Q_PROPERTY
(
long
snakeConnectionStatus
READ
snakeConnectionStatus
NOTIFY
snakeConnectionStatusChanged
)
Q_PROPERTY
(
bool
snakeCalcInProgress
READ
snakeCalcInProgress
NOTIFY
snakeCalcInProgressChanged
)
Q_PROPERTY
(
Fact
*
snakeTileWidth
READ
snakeTileWidth
CONSTANT
)
Q_PROPERTY
(
Fact
*
snakeTileHeight
READ
snakeTileHeight
CONSTANT
)
Q_PROPERTY
(
Fact
*
snakeMinTileArea
READ
snakeMinTileArea
CONSTANT
)
Q_PROPERTY
(
Fact
*
snakeLineDistance
READ
snakeLineDistance
CONSTANT
)
Q_PROPERTY
(
Fact
*
snakeMinTransectLength
READ
snakeMinTransectLength
CONSTANT
)
Q_PROPERTY
(
QmlObjectListModel
*
snakeTiles
READ
snakeTiles
NOTIFY
snakeTilesChanged
)
Q_PROPERTY
(
Fact
*
enableSnake
READ
enableSnake
CONSTANT
)
Q_PROPERTY
(
long
snakeConnectionStatus
READ
snakeConnectionStatus
NOTIFY
snakeConnectionStatusChanged
)
Q_PROPERTY
(
bool
snakeCalcInProgress
READ
snakeCalcInProgress
NOTIFY
snakeCalcInProgressChanged
)
Q_PROPERTY
(
Fact
*
snakeTileWidth
READ
snakeTileWidth
CONSTANT
)
Q_PROPERTY
(
Fact
*
snakeTileHeight
READ
snakeTileHeight
CONSTANT
)
Q_PROPERTY
(
Fact
*
snakeMinTileArea
READ
snakeMinTileArea
CONSTANT
)
Q_PROPERTY
(
Fact
*
snakeLineDistance
READ
snakeLineDistance
CONSTANT
)
Q_PROPERTY
(
Fact
*
snakeMinTransectLength
READ
snakeMinTransectLength
CONSTANT
)
Q_PROPERTY
(
QmlObjectListModel
*
snakeTiles
READ
snakeTiles
NOTIFY
snakeTilesChanged
)
Q_PROPERTY
(
QVariantList
snakeTileCenterPoints
READ
snakeTileCenterPoints
NOTIFY
snakeTileCenterPointsChanged
)
Q_PROPERTY
(
QList
<
int
>
snakeProgress
READ
snakeProgress
NOTIFY
snakeProgressChanged
)
...
...
@@ -122,6 +124,8 @@ public:
Fact
*
snakeLineDistance
(
void
)
{
return
&
_snakeLineDistance
;}
Fact
*
snakeMinTransectLength
(
void
)
{
return
&
_snakeMinTransectLength
;}
QmlObjectListModel
*
snakeTiles
(
void
)
{
return
&
_snakeTiles
;}
QVariantList
snakeTileCenterPoints
(
void
)
{
return
_snakeTileCenterPoints
;}
QList
<
int
>
snakeProgress
(
void
)
{
return
_snakeProgress
;}
bool
uploadOverrideRequired
(
void
)
const
;
double
phaseDistance
(
void
)
const
;
...
...
@@ -213,6 +217,8 @@ signals:
void
snakeConnectionStatusChanged
(
void
);
void
snakeCalcInProgressChanged
(
void
);
void
snakeTilesChanged
(
void
);
void
snakeTileCenterPointsChanged
(
void
);
void
snakeProgressChanged
(
void
);
private:
enum
SRTL_Reason
{
BatteryLow
,
UserRequest
};
private
slots
:
...
...
@@ -317,7 +323,8 @@ private:
SettingsFact
_snakeLineDistance
;
SettingsFact
_snakeMinTransectLength
;
QmlObjectListModel
_snakeTiles
;
// tiles
QVariantList
_snakeTileCenterPoints
;
QList
<
int
>
_snakeProgress
;
// measurement progress
};
...
...
src/Wima/WimaControllerDetail.cc
View file @
c4aad10e
...
...
@@ -14,7 +14,7 @@ void SnakeWorker::setScenario(const Scenario &scenario)
_scenario
=
scenario
;
}
void
SnakeWorker
::
setProgress
(
const
QList
<
qint8
>
&
progress
)
void
SnakeWorker
::
setProgress
(
const
QList
<
int
>
&
progress
)
{
_progress
.
clear
();
for
(
auto
p
:
progress
)
{
...
...
src/Wima/WimaControllerDetail.h
View file @
c4aad10e
...
...
@@ -30,7 +30,7 @@ public:
SnakeWorker
(
QObject
*
parent
=
nullptr
);
void
setScenario
(
const
Scenario
&
scenario
);
void
setProgress
(
const
QList
<
qint8
>
&
progress
);
void
setProgress
(
const
QList
<
int
>
&
progress
);
void
setLineDistance
(
double
lineDistance
);
void
setMinTransectLength
(
double
minTransectLength
);
...
...
src/comm/ros_bridge/src/JsonProcessor/jsonprocessor.cpp
0 → 100644
View file @
c4aad10e
#include "jsonprocessor.h"
JsonProcessor
::
JsonProcessor
()
{
}
src/comm/ros_bridge/src/JsonProcessor/jsonprocessor.h
0 → 100644
View file @
c4aad10e
#ifndef JSONPROCESSOR_H
#define JSONPROCESSOR_H
class
JsonProcessor
{
public:
JsonProcessor
();
};
#endif // JSONPROCESSOR_H
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