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
1ac83998
Commit
1ac83998
authored
Sep 25, 2020
by
Valentin Platzgummer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wima planer, cs and cs worker edited
parent
46adaf36
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
899 additions
and
821 deletions
+899
-821
KlingenbachTest.wima
Paths/KlingenbachTest.wima
+134
-88
FlightDisplayViewMap.qml
src/FlightDisplay/FlightDisplayViewMap.qml
+3
-3
CSWorker.cpp
src/Wima/CSWorker.cpp
+69
-390
CSWorker.h
src/Wima/CSWorker.h
+16
-25
CircularSurvey.cc
src/Wima/CircularSurvey.cc
+356
-24
CircularSurvey.h
src/Wima/CircularSurvey.h
+7
-6
WimaCorridor.h
src/Wima/Geometry/WimaCorridor.h
+18
-24
WimaServiceArea.cc
src/Wima/Geometry/WimaServiceArea.cc
+34
-8
WimaServiceArea.h
src/Wima/Geometry/WimaServiceArea.h
+3
-0
DefaultManager.cpp
src/Wima/WaypointManager/DefaultManager.cpp
+245
-246
WimaController.cc
src/Wima/WimaController.cc
+7
-4
WimaPlanData.cc
src/Wima/WimaPlanData.cc
+1
-1
WimaPlanData.h
src/Wima/WimaPlanData.h
+2
-2
WimaPlaner.cc
src/Wima/WimaPlaner.cc
+4
-0
No files found.
Paths/KlingenbachTest.wima
View file @
1ac83998
This diff is collapsed.
Click to expand it.
src/FlightDisplay/FlightDisplayViewMap.qml
View file @
1ac83998
...
...
@@ -241,7 +241,7 @@ FlightMap {
color
:
"
green
"
}
// Add Snake tile
s
center points to the map
// Add Snake tile center points to the map
MapItemView
{
property
bool
_enable
:
wimaController
.
enableWimaController
.
value
&&
wimaController
.
enableSnake
.
value
...
...
@@ -249,7 +249,7 @@ FlightMap {
delegate
:
MapCircle
{
center
:
modelData
border.color
:
"
black
"
border.color
:
"
transparent
"
border.width
:
1
color
:
getColor
(
wimaController
.
nemoProgress
[
index
])
radius
:
0.6
...
...
@@ -258,7 +258,7 @@ FlightMap {
function
getColor
(
progress
)
{
if
(
progress
<
50
)
return
"
orange
red
"
return
"
red
"
if
(
progress
<
100
)
return
"
orange
"
...
...
src/Wima/CSWorker.cpp
View file @
1ac83998
This diff is collapsed.
Click to expand it.
src/Wima/CSWorker.h
View file @
1ac83998
#pragma once
#include <QGeoCoordinate>
#include <QList>
#include <QSharedPointer>
#include <QThread>
#include "snake.h"
#include <atomic>
#include <condition_variable>
#include <functional>
#include <mutex>
struct
RoutingData
{
snake
::
BoostLineString
route
;
snake
::
Transects
transects
;
std
::
vector
<
snake
::
TransectInfo
>
transectsInfo
;
};
//!
//! \brief The CSWorker class
//! \note Don't call QThread::start, QThread::quit, etc. onyl use Worker
//! members!
class
CS
Worker
:
public
QThread
{
class
Routing
Worker
:
public
QThread
{
Q_OBJECT
using
Lock
=
std
::
unique_lock
<
std
::
mutex
>
;
public:
using
Route
=
QList
<
QGeoCoordinate
>
;
using
PtrRoute
=
QSharedPointer
<
Route
>
;
using
PtrRoutingData
=
QSharedPointer
<
RoutingData
>
;
using
Generator
=
std
::
function
<
bool
(
snake
::
Transects
&
)
>
;
CS
Worker
(
QObject
*
parent
=
nullptr
);
~
CS
Worker
()
override
;
Routing
Worker
(
QObject
*
parent
=
nullptr
);
~
Routing
Worker
()
override
;
bool
calculating
();
public
slots
:
void
update
(
const
QList
<
QGeoCoordinate
>
&
polygon
,
const
QGeoCoordinate
&
origin
,
snake
::
Length
deltaR
,
snake
::
Length
minLength
,
snake
::
Angle
deltaAlpha
);
void
update
(
const
QGeoCoordinate
&
depot
,
const
QList
<
QGeoCoordinate
>
&
safeArea
,
const
QList
<
QGeoCoordinate
>
&
polygon
,
const
QGeoCoordinate
&
origin
,
snake
::
Length
deltaR
,
snake
::
Length
minLength
,
snake
::
Angle
deltaAlpha
);
void
route
(
const
snake
::
BoostPolygon
&
safeArea
,
const
Generator
&
generator
);
signals:
void
re
ady
(
PtrRoute
pTransects
);
void
re
sult
(
PtrRoutingData
pTransects
);
void
calculatingChanged
();
protected:
...
...
@@ -48,17 +47,9 @@ private:
mutable
std
::
mutex
_mutex
;
mutable
std
::
condition_variable
_cv
;
// Internal data
QGeoCoordinate
_depot
;
QList
<
QGeoCoordinate
>
_safeArea
;
QList
<
QGeoCoordinate
>
_polygon
;
QGeoCoordinate
_origin
;
snake
::
Length
_deltaR
;
snake
::
Angle
_deltaAlpha
;
snake
::
Length
_minLength
;
std
::
size_t
_maxWaypoints
;
snake
::
BoostPolygon
_safeArea
;
Generator
_generator
;
// transect generator
// State
std
::
atomic_bool
_useDepotSafeArea
;
std
::
atomic_bool
_calculating
;
std
::
atomic_bool
_stop
;
std
::
atomic_bool
_restart
;
...
...
src/Wima/CircularSurvey.cc
View file @
1ac83998
This diff is collapsed.
Click to expand it.
src/Wima/CircularSurvey.h
View file @
1ac83998
...
...
@@ -6,13 +6,13 @@
#include "SettingsFact.h"
#include "TransectStyleComplexItem.h"
class
CSWorker
;
class
RoutingWorker
;
class
RoutingData
;
class
CircularSurvey
:
public
TransectStyleComplexItem
{
Q_OBJECT
public:
using
Route
=
QList
<
QGeoCoordinate
>
;
using
PtrRoute
=
QSharedPointer
<
Route
>
;
using
PtrRoutingData
=
QSharedPointer
<
RoutingData
>
;
/// @param vehicle Vehicle which this is being contructed for
/// @param flyView true: Created for use in the Fly View, false: Created for
...
...
@@ -87,7 +87,7 @@ private slots:
void
_rebuildTransectsPhase1
(
void
)
final
;
void
_recalcComplexDistance
(
void
)
final
;
void
_recalcCameraShots
(
void
)
final
;
void
_setTransects
(
PtrRout
e
pRoute
);
void
_setTransects
(
PtrRout
ingData
pRoute
);
private:
void
_appendLoadedMissionItems
(
QList
<
MissionItem
*>
&
items
,
...
...
@@ -107,9 +107,10 @@ private:
// this value
SettingsFact
_minLength
;
using
PtrWorker
=
std
::
shared_ptr
<
CS
Worker
>
;
using
PtrWorker
=
std
::
shared_ptr
<
Routing
Worker
>
;
PtrWorker
_pWorker
;
PtrRoute
_pRoute
;
PtrRoutingData
_workerOutput
;
QList
<
QList
<
QGeoCoordinate
>>
_rawTransects
;
bool
_needsStoring
;
bool
_needsReversal
;
bool
_hidePolygon
;
...
...
src/Wima/Geometry/WimaCorridor.h
View file @
1ac83998
#pragma once
#include <QObject>
#include "WimaArea.h"
#include "WimaServiceArea.h"
#include "WimaMeasurementArea.h"
#include <QObject>
class
WimaCorridor
:
public
WimaArea
{
Q_OBJECT
class
WimaCorridor
:
public
WimaArea
{
Q_OBJECT
public:
WimaCorridor
(
QObject
*
parent
=
nullptr
);
WimaCorridor
(
const
WimaCorridor
&
other
,
QObject
*
parent
=
nullptr
);
WimaCorridor
(
QObject
*
parent
=
nullptr
);
WimaCorridor
(
const
WimaCorridor
&
other
,
QObject
*
parent
=
nullptr
);
WimaCorridor
&
operator
=
(
const
WimaCorridor
&
other
);
WimaCorridor
&
operator
=
(
const
WimaCorridor
&
other
);
// Overrides from WimaPolygon
QString
mapVisualQML
(
void
)
const
{
return
"WimaCorridorMapVisual.qml"
;
}
QString
editorQML
(
void
)
const
{
return
"WimaCorridorEditor.qml"
;
}
// Overrides from WimaPolygon
QString
mapVisualQML
(
void
)
const
{
return
"WimaCorridorMapVisual.qml"
;
}
QString
editorQML
(
void
)
const
{
return
"WimaCorridorEditor.qml"
;
}
// Methodes
void
saveToJson
(
QJsonObject
&
json
);
bool
loadFromJson
(
const
QJsonObject
&
json
,
QString
&
errorString
);
// Methodes
void
saveToJson
(
QJsonObject
&
json
);
bool
loadFromJson
(
const
QJsonObject
&
json
,
QString
&
errorString
);
// static Members
static
const
char
*
WimaCorridorName
;
// static Members
static
const
char
*
WimaCorridorName
;
// Friends
friend
void
print
(
const
WimaCorridor
&
area
,
QString
&
outputString
);
friend
void
print
(
const
WimaCorridor
&
area
);
// Friends
friend
void
print
(
const
WimaCorridor
&
area
,
QString
&
outputString
);
friend
void
print
(
const
WimaCorridor
&
area
);
signals:
public
slots
:
private:
void
init
();
void
init
();
};
src/Wima/Geometry/WimaServiceArea.cc
View file @
1ac83998
#include "WimaServiceArea.h"
const
char
*
WimaServiceArea
::
wimaServiceAreaName
=
"Service Area"
;
const
char
*
WimaServiceArea
::
depotLatitudeName
=
"DepotLatitude"
;
const
char
*
WimaServiceArea
::
depotLongitudeName
=
"DepotLongitude"
;
const
char
*
WimaServiceArea
::
depotAltitudeName
=
"DepotAltitude"
;
WimaServiceArea
::
WimaServiceArea
(
QObject
*
parent
)
:
WimaArea
(
parent
)
{
init
();
}
WimaServiceArea
::
WimaServiceArea
(
const
WimaServiceArea
&
other
,
QObject
*
parent
)
:
WimaArea
(
other
,
parent
)
{
:
WimaArea
(
other
,
parent
)
,
_depot
(
other
.
depot
())
{
init
();
}
...
...
@@ -16,7 +19,7 @@ WimaServiceArea::WimaServiceArea(const WimaServiceArea &other, QObject *parent)
*/
WimaServiceArea
&
WimaServiceArea
::
operator
=
(
const
WimaServiceArea
&
other
)
{
WimaArea
::
operator
=
(
other
);
this
->
setDepot
(
other
.
depot
());
return
*
this
;
}
...
...
@@ -34,18 +37,41 @@ bool WimaServiceArea::setDepot(const QGeoCoordinate &coordinate) {
void
WimaServiceArea
::
saveToJson
(
QJsonObject
&
json
)
{
this
->
WimaArea
::
saveToJson
(
json
);
json
[
areaTypeName
]
=
wimaServiceAreaName
;
json
[
depotLatitudeName
]
=
_depot
.
latitude
();
json
[
depotLongitudeName
]
=
_depot
.
longitude
();
json
[
depotAltitudeName
]
=
_depot
.
altitude
();
}
bool
WimaServiceArea
::
loadFromJson
(
const
QJsonObject
&
json
,
QString
&
errorString
)
{
bool
retVal
=
false
;
if
(
this
->
WimaArea
::
loadFromJson
(
json
,
errorString
))
{
bool
retVal
=
true
;
// code for loading here
return
retVal
;
}
else
{
qWarning
()
<<
errorString
;
return
false
;
double
lat
=
0
;
if
(
json
.
contains
(
depotLatitudeName
)
&&
json
[
depotLatitudeName
].
isDouble
())
{
lat
=
json
[
depotLatitudeName
].
toDouble
();
double
lon
=
0
;
if
(
json
.
contains
(
depotLongitudeName
)
&&
json
[
depotLongitudeName
].
isDouble
())
{
lon
=
json
[
depotLongitudeName
].
toDouble
();
double
alt
=
0
;
if
(
json
.
contains
(
depotAltitudeName
)
&&
json
[
depotAltitudeName
].
isDouble
())
{
alt
=
json
[
depotAltitudeName
].
toDouble
();
this
->
setDepot
(
QGeoCoordinate
(
lat
,
lon
,
alt
));
retVal
=
true
;
}
else
{
errorString
=
"Not able to load depot altitude."
;
}
}
else
{
errorString
=
"Not able to load depot longitude."
;
}
}
else
{
errorString
=
"Not able to load depot latitude."
;
}
retVal
=
true
;
}
return
retVal
;
}
void
print
(
const
WimaServiceArea
&
area
)
{
...
...
src/Wima/Geometry/WimaServiceArea.h
View file @
1ac83998
...
...
@@ -30,6 +30,9 @@ public:
// static Members
static
const
char
*
wimaServiceAreaName
;
static
const
char
*
depotLatitudeName
;
static
const
char
*
depotLongitudeName
;
static
const
char
*
depotAltitudeName
;
signals:
void
depotChanged
(
void
);
...
...
src/Wima/WaypointManager/DefaultManager.cpp
View file @
1ac83998
This diff is collapsed.
Click to expand it.
src/Wima/WimaController.cc
View file @
1ac83998
...
...
@@ -424,21 +424,24 @@ bool WimaController::setWimaPlanData(QSharedPointer<WimaPlanData> planData) {
emit
visualItemsChanged
();
// extract mission items
QList
<
MissionItem
>
tempMissionItems
=
planData
->
missionItems
();
auto
tempMissionItems
=
planData
->
missionItems
();
if
(
tempMissionItems
.
size
()
<
1
)
{
qWarning
(
"WimaController: Mission items from WimaPlaner empty!"
);
return
false
;
}
for
(
auto
item
:
tempMissionItems
)
{
_defaultWM
.
push_back
(
item
.
coordinate
());
qWarning
()
<<
"WimaController:"
;
for
(
auto
*
item
:
tempMissionItems
)
{
qWarning
()
<<
item
->
coordinate
();
_defaultWM
.
push_back
(
item
->
coordinate
());
}
_WMSettings
.
setHomePosition
(
QGeoCoordinate
(
_serviceArea
.
depot
().
latitude
(),
_serviceArea
.
depot
().
longitude
(),
0
));
qWarning
()
<<
"service area depot: "
<<
_serviceArea
.
depot
();
if
(
!
_defaultWM
.
reset
())
{
Q_ASSERT
(
false
)
;
qWarning
()
<<
"_defaultWM.reset() failed"
;
return
false
;
}
...
...
src/Wima/WimaPlanData.cc
View file @
1ac83998
...
...
@@ -110,7 +110,7 @@ const QList<const WimaAreaData *> &WimaPlanData::areaList() const {
return
_areaList
;
}
const
QList
<
MissionItem
>
&
WimaPlanData
::
missionItems
()
const
{
const
QList
<
MissionItem
*
>
&
WimaPlanData
::
missionItems
()
const
{
return
_missionItems
;
}
...
...
src/Wima/WimaPlanData.h
View file @
1ac83998
...
...
@@ -29,7 +29,7 @@ public:
void
clear
();
const
QList
<
const
WimaAreaData
*>
&
areaList
()
const
;
const
QList
<
MissionItem
>
&
missionItems
()
const
;
const
QList
<
MissionItem
*
>
&
missionItems
()
const
;
signals:
void
areaListChanged
();
...
...
@@ -44,5 +44,5 @@ private:
WimaMeasurementAreaData
_measurementArea
;
QList
<
const
WimaAreaData
*>
_areaList
;
QList
<
MissionItem
>
_missionItems
;
QList
<
MissionItem
*
>
_missionItems
;
};
src/Wima/WimaPlaner.cc
View file @
1ac83998
...
...
@@ -740,6 +740,10 @@ QSharedPointer<WimaPlanData> WimaPlaner::toPlanData() {
QList
<
MissionItem
*>
missionItems
;
_TSComplexItem
->
appendMissionItems
(
missionItems
,
nullptr
);
// store mavlink commands
qWarning
()
<<
"WimaPlaner"
;
for
(
auto
*
item
:
missionItems
)
{
qWarning
()
<<
item
->
coordinate
();
}
planData
->
append
(
missionItems
);
return
planData
;
}
...
...
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