Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
6af0d454
Commit
6af0d454
authored
Oct 22, 2020
by
Valentin Platzgummer
Browse files
temp
parent
53fdc29e
Changes
8
Hide whitespace changes
Inline
Side-by-side
src/Wima/CircularSurvey.cc
View file @
6af0d454
...
@@ -78,6 +78,12 @@ void CircularSurvey::setPlanData(const WimaPlanData &d) {
...
@@ -78,6 +78,12 @@ void CircularSurvey::setPlanData(const WimaPlanData &d) {
*
this
->
_pAreaData
=
d
;
*
this
->
_pAreaData
=
d
;
}
}
const
WimaPlanData
&
CircularSurvey
::
planData
()
const
{
return
*
this
->
_pAreaData
;
}
WimaPlanData
&
CircularSurvey
::
planData
()
{
return
*
this
->
_pAreaData
;
}
QStringList
CircularSurvey
::
variantNames
()
const
{
return
_variantNames
;
}
QStringList
CircularSurvey
::
variantNames
()
const
{
return
_variantNames
;
}
bool
CircularSurvey
::
load
(
const
QJsonObject
&
complexObject
,
int
sequenceNumber
,
bool
CircularSurvey
::
load
(
const
QJsonObject
&
complexObject
,
int
sequenceNumber
,
...
...
src/Wima/CircularSurvey.h
View file @
6af0d454
...
@@ -51,6 +51,8 @@ public:
...
@@ -51,6 +51,8 @@ public:
void
setPlanData
(
const
WimaPlanData
&
d
);
void
setPlanData
(
const
WimaPlanData
&
d
);
// Property getters
// Property getters
const
WimaPlanData
&
planData
()
const
;
WimaPlanData
&
planData
();
Fact
*
variant
();
Fact
*
variant
();
QStringList
variantNames
()
const
;
QStringList
variantNames
()
const
;
bool
calculating
()
const
;
bool
calculating
()
const
;
...
...
src/Wima/Snake/CircularGenerator.cpp
View file @
6af0d454
...
@@ -169,6 +169,9 @@ void CircularGenerator::resetReferenceIfInvalid() {
...
@@ -169,6 +169,9 @@ void CircularGenerator::resetReferenceIfInvalid() {
void
CircularGenerator
::
resetReference
()
{
void
CircularGenerator
::
resetReference
()
{
if
(
this
->
_d
->
measurementArea
().
center
().
isValid
())
{
if
(
this
->
_d
->
measurementArea
().
center
().
isValid
())
{
setReference
(
this
->
_d
->
measurementArea
().
center
());
setReference
(
this
->
_d
->
measurementArea
().
center
());
}
else
{
qCWarning
(
CircularGeneratorLog
)
<<
"measurement area center"
<<
this
->
_d
->
measurementArea
().
center
();
}
}
}
}
...
@@ -176,15 +179,21 @@ void CircularGenerator::establishConnections() {
...
@@ -176,15 +179,21 @@ void CircularGenerator::establishConnections() {
if
(
this
->
_d
&&
!
this
->
_connectionsEstablished
)
{
if
(
this
->
_d
&&
!
this
->
_connectionsEstablished
)
{
connect
(
this
->
_d
.
get
(),
&
WimaPlanData
::
originChanged
,
this
,
connect
(
this
->
_d
.
get
(),
&
WimaPlanData
::
originChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
connect
(
&
this
->
_d
->
measurementArea
(),
&
WimaMeasurementAreaData
::
progressChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
connect
(
&
this
->
_d
->
measurementArea
(),
connect
(
&
this
->
_d
->
measurementArea
(),
&
WimaMeasurementAreaData
::
tileDataChanged
,
this
,
&
WimaMeasurementAreaData
::
tileDataChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
connect
(
&
this
->
_d
->
measurementArea
(),
&
WimaMeasurementAreaData
::
pathChanged
,
connect
(
&
this
->
_d
->
measurementArea
(),
this
,
&
CircularGenerator
::
resetReferenceIfInvalid
);
&
WimaMeasurementAreaData
::
centerChanged
,
this
,
&
CircularGenerator
::
resetReferenceIfInvalid
);
connect
(
&
this
->
_d
->
measurementArea
(),
&
WimaMeasurementAreaData
::
pathChanged
,
connect
(
&
this
->
_d
->
measurementArea
(),
&
WimaMeasurementAreaData
::
pathChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
this
,
&
GeneratorBase
::
generatorChanged
);
connect
(
&
this
->
_d
->
serviceArea
(),
&
WimaServiceAreaData
::
depotChanged
,
this
,
connect
(
&
this
->
_d
->
serviceArea
(),
&
WimaServiceAreaData
::
depotChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
connect
(
&
this
->
_d
->
joinedArea
(),
&
WimaJoinedAreaData
::
pathChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
connect
(
this
->
distance
(),
&
Fact
::
rawValueChanged
,
this
,
connect
(
this
->
distance
(),
&
Fact
::
rawValueChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
connect
(
this
->
deltaAlpha
(),
&
Fact
::
rawValueChanged
,
this
,
connect
(
this
->
deltaAlpha
(),
&
Fact
::
rawValueChanged
,
this
,
...
@@ -207,14 +216,15 @@ void CircularGenerator::deleteConnections() {
...
@@ -207,14 +216,15 @@ void CircularGenerator::deleteConnections() {
disconnect
(
&
this
->
_d
->
measurementArea
(),
disconnect
(
&
this
->
_d
->
measurementArea
(),
&
WimaMeasurementAreaData
::
tileDataChanged
,
this
,
&
WimaMeasurementAreaData
::
tileDataChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
disconnect
(
&
this
->
_d
->
measurementArea
(),
disconnect
(
&
this
->
_d
->
measurementArea
(),
&
WimaMeasurementAreaData
::
center
,
&
WimaMeasurementAreaData
::
pathChanged
,
this
,
this
,
&
CircularGenerator
::
resetReferenceIfInvalid
);
&
CircularGenerator
::
resetReferenceIfInvalid
);
disconnect
(
&
this
->
_d
->
measurementArea
(),
disconnect
(
&
this
->
_d
->
measurementArea
(),
&
WimaMeasurementAreaData
::
pathChanged
,
this
,
&
WimaMeasurementAreaData
::
pathChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
disconnect
(
&
this
->
_d
->
serviceArea
(),
&
WimaServiceAreaData
::
depotChanged
,
disconnect
(
&
this
->
_d
->
serviceArea
(),
&
WimaServiceAreaData
::
depotChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
this
,
&
GeneratorBase
::
generatorChanged
);
disconnect
(
&
this
->
_d
->
joinedArea
(),
&
WimaJoinedAreaData
::
pathChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
disconnect
(
this
->
distance
(),
&
Fact
::
rawValueChanged
,
this
,
disconnect
(
this
->
distance
(),
&
Fact
::
rawValueChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
disconnect
(
this
->
deltaAlpha
(),
&
Fact
::
rawValueChanged
,
this
,
disconnect
(
this
->
deltaAlpha
(),
&
Fact
::
rawValueChanged
,
this
,
...
...
src/Wima/Snake/LinearGenerator.cpp
View file @
6af0d454
...
@@ -144,6 +144,8 @@ void LinearGenerator::establishConnections() {
...
@@ -144,6 +144,8 @@ void LinearGenerator::establishConnections() {
this
,
&
GeneratorBase
::
generatorChanged
);
this
,
&
GeneratorBase
::
generatorChanged
);
connect
(
&
this
->
_d
->
serviceArea
(),
&
WimaServiceAreaData
::
depotChanged
,
this
,
connect
(
&
this
->
_d
->
serviceArea
(),
&
WimaServiceAreaData
::
depotChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
connect
(
&
this
->
_d
->
joinedArea
(),
&
WimaJoinedAreaData
::
pathChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
connect
(
this
->
distance
(),
&
Fact
::
rawValueChanged
,
this
,
connect
(
this
->
distance
(),
&
Fact
::
rawValueChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
connect
(
this
->
alpha
(),
&
Fact
::
rawValueChanged
,
this
,
connect
(
this
->
alpha
(),
&
Fact
::
rawValueChanged
,
this
,
...
@@ -156,27 +158,26 @@ void LinearGenerator::establishConnections() {
...
@@ -156,27 +158,26 @@ void LinearGenerator::establishConnections() {
void
LinearGenerator
::
deleteConnections
()
{
void
LinearGenerator
::
deleteConnections
()
{
if
(
this
->
_d
&&
this
->
_connectionsEstablished
)
{
if
(
this
->
_d
&&
this
->
_connectionsEstablished
)
{
disconnect
(
this
->
_d
.
get
(),
&
WimaPlanData
::
measurementAreaChanged
,
this
,
connect
(
this
->
_d
.
get
(),
&
WimaPlanData
::
originChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
disconnect
(
this
->
_d
.
get
(),
&
WimaPlanData
::
originChanged
,
this
,
connect
(
&
this
->
_d
->
measurementArea
(),
&
GeneratorBase
::
generatorChanged
);
&
WimaMeasurementAreaData
::
progressChanged
,
this
,
disconnect
(
&
this
->
_d
->
measurementArea
(),
&
GeneratorBase
::
generatorChanged
);
&
WimaMeasurementAreaData
::
progressChanged
,
this
,
connect
(
&
this
->
_d
->
measurementArea
(),
&
GeneratorBase
::
generatorChanged
);
&
WimaMeasurementAreaData
::
tileDataChanged
,
this
,
disconnect
(
&
this
->
_d
->
measurementArea
(),
&
GeneratorBase
::
generatorChanged
);
&
WimaMeasurementAreaData
::
tileDataChanged
,
this
,
connect
(
&
this
->
_d
->
measurementArea
(),
&
WimaMeasurementAreaData
::
pathChanged
,
&
GeneratorBase
::
generatorChanged
);
this
,
&
GeneratorBase
::
generatorChanged
);
disconnect
(
&
this
->
_d
->
measurementArea
(),
connect
(
&
this
->
_d
->
serviceArea
(),
&
WimaServiceAreaData
::
depotChanged
,
this
,
&
WimaMeasurementAreaData
::
pathChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
connect
(
&
this
->
_d
->
joinedArea
(),
&
WimaJoinedAreaData
::
pathChanged
,
this
,
disconnect
(
&
this
->
_d
->
serviceArea
(),
&
WimaServiceAreaData
::
depotChanged
,
&
GeneratorBase
::
generatorChanged
);
this
,
&
GeneratorBase
::
generatorChanged
);
connect
(
this
->
distance
(),
&
Fact
::
rawValueChanged
,
this
,
disconnect
(
this
->
distance
(),
&
Fact
::
rawValueChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
connect
(
this
->
alpha
(),
&
Fact
::
rawValueChanged
,
this
,
disconnect
(
this
->
alpha
(),
&
Fact
::
rawValueChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
connect
(
this
->
minLength
(),
&
Fact
::
rawValueChanged
,
this
,
disconnect
(
this
->
minLength
(),
&
Fact
::
rawValueChanged
,
this
,
&
GeneratorBase
::
generatorChanged
);
&
GeneratorBase
::
generatorChanged
);
this
->
_connectionsEstablished
=
false
;
this
->
_connectionsEstablished
=
false
;
}
}
}
}
...
...
src/Wima/WimaPlanData.cc
View file @
6af0d454
...
@@ -50,6 +50,40 @@ void WimaPlanData::set(const WimaMeasurementAreaData &areaData) {
...
@@ -50,6 +50,40 @@ void WimaPlanData::set(const WimaMeasurementAreaData &areaData) {
}
}
}
}
void
WimaPlanData
::
set
(
const
WimaJoinedArea
&
areaData
)
{
if
(
_joinedArea
!=
areaData
)
{
_joinedArea
=
areaData
;
emit
joinedAreaChanged
();
}
}
void
WimaPlanData
::
set
(
const
WimaServiceArea
&
areaData
)
{
if
(
_serviceArea
!=
areaData
)
{
_serviceArea
=
areaData
;
emit
serviceAreaChanged
();
}
}
void
WimaPlanData
::
set
(
const
WimaCorridor
&
areaData
)
{
if
(
_corridor
!=
areaData
)
{
_corridor
=
areaData
;
emit
corridorChanged
();
}
}
void
WimaPlanData
::
set
(
const
WimaMeasurementArea
&
areaData
)
{
if
(
_measurementArea
!=
areaData
)
{
_measurementArea
=
areaData
;
emit
measurementAreaChanged
();
if
(
_measurementArea
.
coordinateList
().
size
()
>
0
)
{
setOrigin
(
_measurementArea
.
coordinateList
().
first
());
}
else
{
setOrigin
(
QGeoCoordinate
());
}
}
}
void
WimaPlanData
::
clear
()
{
*
this
=
WimaPlanData
();
}
void
WimaPlanData
::
clear
()
{
*
this
=
WimaPlanData
();
}
QGeoCoordinate
WimaPlanData
::
origin
()
{
return
_origin
;
}
QGeoCoordinate
WimaPlanData
::
origin
()
{
return
_origin
;
}
...
...
src/Wima/WimaPlanData.h
View file @
6af0d454
...
@@ -22,6 +22,11 @@ public:
...
@@ -22,6 +22,11 @@ public:
void
set
(
const
WimaServiceAreaData
&
areaData
);
void
set
(
const
WimaServiceAreaData
&
areaData
);
void
set
(
const
WimaCorridorData
&
areaData
);
void
set
(
const
WimaCorridorData
&
areaData
);
void
set
(
const
WimaMeasurementAreaData
&
areaData
);
void
set
(
const
WimaMeasurementAreaData
&
areaData
);
void
set
(
const
WimaJoinedArea
&
areaData
);
void
set
(
const
WimaServiceArea
&
areaData
);
void
set
(
const
WimaCorridor
&
areaData
);
void
set
(
const
WimaMeasurementArea
&
areaData
);
void
clear
();
void
clear
();
const
WimaJoinedAreaData
&
joinedArea
()
const
;
const
WimaJoinedAreaData
&
joinedArea
()
const
;
...
...
src/Wima/WimaPlaner.cc
View file @
6af0d454
...
@@ -38,9 +38,7 @@ const char *WimaPlaner::missionItemsName = "MissionItems";
...
@@ -38,9 +38,7 @@ const char *WimaPlaner::missionItemsName = "MissionItems";
WimaPlaner
::
WimaPlaner
(
QObject
*
parent
)
WimaPlaner
::
WimaPlaner
(
QObject
*
parent
)
:
QObject
(
parent
),
_masterController
(
nullptr
),
_missionController
(
nullptr
),
:
QObject
(
parent
),
_masterController
(
nullptr
),
_missionController
(
nullptr
),
_currentAreaIndex
(
-
1
),
_copyMAreaToSurvey
(
true
),
_copySAreaToSurvey
(
true
),
_currentAreaIndex
(
-
1
),
_joinedArea
(
this
),
_survey
(
nullptr
),
_corridorChanged
(
true
),
_joinedArea
(
this
),
_arrivalPathLength
(
0
),
_returnPathLength
(
0
),
_survey
(
nullptr
),
_surveyChanged
(
true
),
_synchronized
(
false
),
_nemoInterface
(
this
),
_synchronized
(
false
),
_nemoInterface
(
this
),
_stateMachine
(
new
StateMachine
),
_areasMonitored
(
false
),
_stateMachine
(
new
StateMachine
),
_areasMonitored
(
false
),
_missionControllerMonitored
(
false
),
_progressLocked
(
false
)
{
_missionControllerMonitored
(
false
),
_progressLocked
(
false
)
{
...
@@ -364,22 +362,7 @@ void WimaPlaner::_update() {
...
@@ -364,22 +362,7 @@ void WimaPlaner::_update() {
&
WimaPlaner
::
CSDestroyedHandler
);
&
WimaPlaner
::
CSDestroyedHandler
);
}
}
// update survey area
(
void
)
toPlanData
(
this
->
_survey
->
planData
());
disconnect
(
_survey
,
&
CircularSurvey
::
calculatingChanged
,
this
,
&
WimaPlaner
::
CSCalculatingChangedHandler
);
WimaPlanData
planData
;
if
(
!
toPlanData
(
planData
))
{
qCWarning
(
WimaPlanerLog
)
<<
"not able to create plan data."
;
return
;
}
_survey
->
setPlanData
(
planData
);
connect
(
_survey
,
&
CircularSurvey
::
calculatingChanged
,
this
,
&
WimaPlaner
::
CSCalculatingChangedHandler
);
// Folloing statement just for completeness.
this
->
_stateMachine
->
updateState
(
EVENT
::
SURVEY_UPDATE_TRIGGERED
);
}
break
;
// STATE::NEEDS_SURVEY_UPDATE
}
break
;
// STATE::NEEDS_SURVEY_UPDATE
case
STATE
::
WAITING_FOR_SURVEY_UPDATE
:
{
case
STATE
::
WAITING_FOR_SURVEY_UPDATE
:
{
...
@@ -447,7 +430,7 @@ void WimaPlaner::_update() {
...
@@ -447,7 +430,7 @@ void WimaPlaner::_update() {
.
data
());
.
data
());
return
;
return
;
}
}
_arrivalPathLength
=
path
.
size
()
-
1
;
for
(
int
i
=
1
;
i
<
path
.
count
()
-
1
;
i
++
)
{
for
(
int
i
=
1
;
i
<
path
.
count
()
-
1
;
i
++
)
{
(
void
)
_missionController
->
insertSimpleMissionItem
(
(
void
)
_missionController
->
insertSimpleMissionItem
(
path
[
i
],
missionItems
->
count
()
-
1
);
path
[
i
],
missionItems
->
count
()
-
1
);
...
@@ -465,8 +448,7 @@ void WimaPlaner::_update() {
...
@@ -465,8 +448,7 @@ void WimaPlaner::_update() {
.
data
());
.
data
());
return
;
return
;
}
}
_returnPathLength
=
path
.
size
()
-
1
;
// -1: fist item is last measurement point
for
(
int
i
=
1
;
i
<
path
.
count
()
-
1
;
i
++
)
{
for
(
int
i
=
1
;
i
<
path
.
count
()
-
1
;
i
++
)
{
(
void
)
_missionController
->
insertSimpleMissionItem
(
(
void
)
_missionController
->
insertSimpleMissionItem
(
path
[
i
],
missionItems
->
count
());
path
[
i
],
missionItems
->
count
());
...
@@ -955,13 +937,11 @@ void WimaPlaner::setInteractive() {
...
@@ -955,13 +937,11 @@ void WimaPlaner::setInteractive() {
* \sa WimaController, WimaPlanData
* \sa WimaController, WimaPlanData
*/
*/
bool
WimaPlaner
::
toPlanData
(
WimaPlanData
&
planData
)
{
bool
WimaPlaner
::
toPlanData
(
WimaPlanData
&
planData
)
{
planData
.
set
(
_measurementArea
);
// store areas
planData
.
set
(
_serviceArea
);
planData
.
set
(
WimaMeasurementAreaData
(
_measurementArea
));
planData
.
set
(
_corridor
);
planData
.
set
(
WimaServiceAreaData
(
_serviceArea
));
planData
.
set
(
_joinedArea
);
planData
.
set
(
WimaCorridorData
(
_corridor
));
return
planData
.
isValid
();
planData
.
set
(
WimaJoinedAreaData
(
_joinedArea
));
return
true
;
}
}
#ifndef NDEBUG
#ifndef NDEBUG
...
...
src/Wima/WimaPlaner.h
View file @
6af0d454
...
@@ -172,27 +172,13 @@ private:
...
@@ -172,27 +172,13 @@ private:
int
_currentAreaIndex
;
int
_currentAreaIndex
;
QString
_currentFile
;
QString
_currentFile
;
bool
_joinedAreaValid
;
WimaMeasurementArea
_measurementArea
;
WimaMeasurementArea
_measurementArea
;
bool
_copyMAreaToSurvey
;
WimaServiceArea
_serviceArea
;
WimaServiceArea
_serviceArea
;
bool
_copySAreaToSurvey
;
WimaCorridor
_corridor
;
WimaCorridor
_corridor
;
bool
_corridorChanged
;
// contains all visible areas
QmlObjectListModel
_visualItems
;
// joined area fromed by _measurementArea, _serviceArea, _corridor
WimaJoinedArea
_joinedArea
;
WimaJoinedArea
_joinedArea
;
// path from takeoff to first measurement point
QmlObjectListModel
_visualItems
;
// all areas
unsigned
long
_arrivalPathLength
;
// path from last measurement point to land
unsigned
long
_returnPathLength
;
CircularSurvey
*
_survey
;
CircularSurvey
*
_survey
;
bool
_surveyChanged
;
// sync stuff
bool
_synchronized
;
// true if planData is synchronized with
// wimaController
#ifndef NDEBUG
#ifndef NDEBUG
QTimer
_autoLoadTimer
;
// timer to auto load mission after some time, prevents
QTimer
_autoLoadTimer
;
// timer to auto load mission after some time, prevents
...
@@ -206,4 +192,6 @@ private:
...
@@ -206,4 +192,6 @@ private:
bool
_areasMonitored
;
bool
_areasMonitored
;
bool
_missionControllerMonitored
;
bool
_missionControllerMonitored
;
bool
_progressLocked
;
bool
_progressLocked
;
bool
_synchronized
;
// true if planData is synchronized with
// wimaController
};
};
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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