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
f7a96555
Commit
f7a96555
authored
May 03, 2017
by
DonLakeFlyer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
User facing gimbal pitch from 0<->90 degrees
parent
13ca238f
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
53 additions
and
10 deletions
+53
-10
FactMetaData.cc
src/FactSystem/FactMetaData.cc
+48
-7
FactMetaData.h
src/FactSystem/FactMetaData.h
+4
-2
CameraSection.FactMetaData.json
src/MissionManager/CameraSection.FactMetaData.json
+1
-1
No files found.
src/FactSystem/FactMetaData.cc
View file @
f7a96555
...
...
@@ -34,9 +34,10 @@ const qreal FactMetaData::UnitConsts_s::inchesToCentimeters = 2.54;
// Built in translations for all Facts
const
FactMetaData
::
BuiltInTranslation_s
FactMetaData
::
_rgBuiltInTranslations
[]
=
{
{
"centi-degrees"
,
"deg"
,
FactMetaData
::
_centiDegreesToDegrees
,
FactMetaData
::
_degreesToCentiDegrees
},
{
"radians"
,
"deg"
,
FactMetaData
::
_radiansToDegrees
,
FactMetaData
::
_degreesToRadians
},
{
"norm"
,
"%"
,
FactMetaData
::
_normToPercent
,
FactMetaData
::
_percentToNorm
},
{
"centi-degrees"
,
"deg"
,
FactMetaData
::
_centiDegreesToDegrees
,
FactMetaData
::
_degreesToCentiDegrees
},
{
"radians"
,
"deg"
,
FactMetaData
::
_radiansToDegrees
,
FactMetaData
::
_degreesToRadians
},
{
"gimbal-degrees"
,
"deg"
,
FactMetaData
::
_mavlinkGimbalDegreesToUserGimbalDegrees
,
FactMetaData
::
_userGimbalDegreesToMavlinkGimbalDegrees
},
{
"norm"
,
"%"
,
FactMetaData
::
_normToPercent
,
FactMetaData
::
_percentToNorm
},
};
// Translations driven by app settings
...
...
@@ -256,7 +257,7 @@ bool FactMetaData::convertAndValidateRaw(const QVariant& rawValue, bool convertO
case
FactMetaData
:
:
valueTypeInt32
:
typedValue
=
QVariant
(
rawValue
.
toInt
(
&
convertOk
));
if
(
!
convertOnly
&&
convertOk
)
{
if
(
rawMin
()
>
typedValue
||
typedValue
>
rawMax
())
{
if
(
typedValue
<
rawMin
()
||
typedValue
>
rawMax
())
{
errorString
=
QString
(
"Value must be within %1 and %2"
).
arg
(
cookedMin
().
toInt
()).
arg
(
cookedMax
().
toInt
());
}
}
...
...
@@ -267,7 +268,7 @@ bool FactMetaData::convertAndValidateRaw(const QVariant& rawValue, bool convertO
case
FactMetaData
:
:
valueTypeUint32
:
typedValue
=
QVariant
(
rawValue
.
toUInt
(
&
convertOk
));
if
(
!
convertOnly
&&
convertOk
)
{
if
(
rawMin
()
>
typedValue
||
typedValue
>
rawMax
())
{
if
(
typedValue
<
rawMin
()
||
typedValue
>
rawMax
())
{
errorString
=
QString
(
"Value must be within %1 and %2"
).
arg
(
cookedMin
().
toUInt
()).
arg
(
cookedMax
().
toUInt
());
}
}
...
...
@@ -276,7 +277,7 @@ bool FactMetaData::convertAndValidateRaw(const QVariant& rawValue, bool convertO
case
FactMetaData
:
:
valueTypeFloat
:
typedValue
=
QVariant
(
rawValue
.
toFloat
(
&
convertOk
));
if
(
!
convertOnly
&&
convertOk
)
{
if
(
rawMin
()
>
typedValue
||
typedValue
>
rawMax
())
{
if
(
typedValue
<
rawMin
()
||
typedValue
>
rawMax
())
{
errorString
=
QString
(
"Value must be within %1 and %2"
).
arg
(
cookedMin
().
toFloat
()).
arg
(
cookedMax
().
toFloat
());
}
}
...
...
@@ -285,7 +286,7 @@ bool FactMetaData::convertAndValidateRaw(const QVariant& rawValue, bool convertO
case
FactMetaData
:
:
valueTypeDouble
:
typedValue
=
QVariant
(
rawValue
.
toDouble
(
&
convertOk
));
if
(
!
convertOnly
&&
convertOk
)
{
if
(
rawMin
()
>
typedValue
||
typedValue
>
rawMax
())
{
if
(
typedValue
<
rawMin
()
||
typedValue
>
rawMax
())
{
errorString
=
QString
(
"Value must be within %1 and %2"
).
arg
(
cookedMin
().
toDouble
()).
arg
(
cookedMax
().
toDouble
());
}
}
...
...
@@ -455,6 +456,20 @@ QVariant FactMetaData::_degreesToCentiDegrees(const QVariant& degrees)
return
QVariant
(
qRound
(
degrees
.
toReal
()
*
100.0
));
}
QVariant
FactMetaData
::
_userGimbalDegreesToMavlinkGimbalDegrees
(
const
QVariant
&
userGimbalDegrees
)
{
// User facing gimbal degree values are from 0 (level) to 90 (straight down)
// Mavlink gimbal degree values are from 0 (level) to -90 (straight down)
return
userGimbalDegrees
.
toDouble
()
*
-
1.0
;
}
QVariant
FactMetaData
::
_mavlinkGimbalDegreesToUserGimbalDegrees
(
const
QVariant
&
mavlinkGimbalDegrees
)
{
// User facing gimbal degree values are from 0 (level) to 90 (straight down)
// Mavlink gimbal degree values are from 0 (level) to -90 (straight down)
return
mavlinkGimbalDegrees
.
toDouble
()
*
-
1.0
;
}
QVariant
FactMetaData
::
_metersToFeet
(
const
QVariant
&
meters
)
{
return
QVariant
(
meters
.
toDouble
()
*
1.0
/
constants
.
feetToMeters
);
...
...
@@ -908,3 +923,29 @@ QMap<QString, FactMetaData*> FactMetaData::createMapFromJsonFile(const QString&
return
metaDataMap
;
}
QVariant
FactMetaData
::
cookedMax
(
void
)
const
{
// We have to be careful with cooked min/max. Running the raw values through the translator could flip min and max.
QVariant
cookedMax
=
_rawTranslator
(
_rawMax
);
QVariant
cookedMin
=
_rawTranslator
(
_rawMin
);
if
(
cookedMax
<
cookedMin
)
{
// We need to flip
return
cookedMin
;
}
else
{
return
cookedMax
;
}
}
QVariant
FactMetaData
::
cookedMin
(
void
)
const
{
// We have to be careful with cooked min/max. Running the raw values through the translator could flip min and max.
QVariant
cookedMax
=
_rawTranslator
(
_rawMax
);
QVariant
cookedMin
=
_rawTranslator
(
_rawMin
);
if
(
cookedMax
<
cookedMin
)
{
// We need to flip
return
cookedMax
;
}
else
{
return
cookedMin
;
}
}
src/FactSystem/FactMetaData.h
View file @
f7a96555
...
...
@@ -83,10 +83,10 @@ public:
QString
group
(
void
)
const
{
return
_group
;
}
QString
longDescription
(
void
)
const
{
return
_longDescription
;}
QVariant
rawMax
(
void
)
const
{
return
_rawMax
;
}
QVariant
cookedMax
(
void
)
const
{
return
_rawTranslator
(
_rawMax
);
}
QVariant
cookedMax
(
void
)
const
;
bool
maxIsDefaultForType
(
void
)
const
{
return
_maxIsDefaultForType
;
}
QVariant
rawMin
(
void
)
const
{
return
_rawMin
;
}
QVariant
cookedMin
(
void
)
const
{
return
_rawTranslator
(
_rawMin
);
}
QVariant
cookedMin
(
void
)
const
;
bool
minIsDefaultForType
(
void
)
const
{
return
_minIsDefaultForType
;
}
QString
name
(
void
)
const
{
return
_name
;
}
QString
shortDescription
(
void
)
const
{
return
_shortDescription
;
}
...
...
@@ -155,6 +155,8 @@ private:
static
QVariant
_radiansToDegrees
(
const
QVariant
&
radians
);
static
QVariant
_centiDegreesToDegrees
(
const
QVariant
&
centiDegrees
);
static
QVariant
_degreesToCentiDegrees
(
const
QVariant
&
degrees
);
static
QVariant
_userGimbalDegreesToMavlinkGimbalDegrees
(
const
QVariant
&
userGimbalDegrees
);
static
QVariant
_mavlinkGimbalDegreesToUserGimbalDegrees
(
const
QVariant
&
mavlinkGimbalDegrees
);
static
QVariant
_metersToFeet
(
const
QVariant
&
meters
);
static
QVariant
_feetToMeters
(
const
QVariant
&
feet
);
static
QVariant
_squareMetersToSquareKilometers
(
const
QVariant
&
squareMeters
);
...
...
src/MissionManager/CameraSection.FactMetaData.json
View file @
f7a96555
...
...
@@ -29,7 +29,7 @@
"name"
:
"GimbalPitch"
,
"shortDescription"
:
"Gimbal pitch rotation."
,
"type"
:
"double"
,
"units"
:
"
deg
"
,
"units"
:
"
gimbal-degrees
"
,
"min"
:
-90
,
"max"
:
0
,
"decimalPlaces"
:
0
,
...
...
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