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
716915e3
Commit
716915e3
authored
Nov 08, 2012
by
Lorenz Meier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improved HSI display, hooking up next to UAS object
parent
8fd1afc5
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
87 additions
and
24 deletions
+87
-24
HSIDisplay.cc
src/ui/HSIDisplay.cc
+46
-24
HSIDisplay.h
src/ui/HSIDisplay.h
+41
-0
No files found.
src/ui/HSIDisplay.cc
View file @
716915e3
...
...
@@ -108,8 +108,8 @@ HSIDisplay::HSIDisplay(QWidget *parent) :
laserFix
(
0
),
iruFix
(
0
),
mavInitialized
(
false
),
topMargin
(
18
.0
f
),
bottomMargin
(
1
2
.0
f
),
topMargin
(
20
.0
f
),
bottomMargin
(
1
4
.0
f
),
attControlKnown
(
false
),
xyControlKnown
(
false
),
zControlKnown
(
false
),
...
...
@@ -134,7 +134,7 @@ HSIDisplay::HSIDisplay(QWidget *parent) :
setPalette
(
pal
);
vwidth
=
80.0
f
;
vheight
=
8
0.0
f
;
vheight
=
10
0.0
f
;
xCenterPos
=
vwidth
/
2.0
f
;
yCenterPos
=
vheight
/
2.0
f
+
topMargin
-
bottomMargin
;
...
...
@@ -213,7 +213,7 @@ void HSIDisplay::renderOverlay()
// Size of the ring instrument
//const float margin = 0.1f; // 10% margin of total width on each side
float
baseRadius
=
(
vheight
-
topMargin
-
bottomMargin
)
/
2.0
f
-
bottomMargin
/
2.0
f
;
float
baseRadius
=
(
vheight
-
topMargin
-
bottomMargin
)
/
2.0
f
-
(
topMargin
+
bottomMargin
)
/
2.8
f
;
// Draw instruments
// TESTING THIS SHOULD BE MOVED INTO A QGRAPHICSVIEW
...
...
@@ -230,16 +230,16 @@ void HSIDisplay::renderOverlay()
// Draw base instrument
// ----------------------
painter
.
setBrush
(
Qt
::
NoBrush
);
const
QColor
ringColor
=
QColor
(
200
,
2
5
0
,
200
);
const
QColor
ringColor
=
QColor
(
200
,
2
0
0
,
200
);
QPen
pen
;
pen
.
setColor
(
ringColor
);
pen
.
setWidth
(
refLineWidthToPen
(
0.1
f
));
pen
.
setWidth
(
refLineWidthToPen
(
1.0
f
));
painter
.
setPen
(
pen
);
const
int
ringCount
=
2
;
for
(
int
i
=
0
;
i
<
ringCount
;
i
++
)
{
float
radius
=
(
vwidth
-
(
topMargin
+
bottomMargin
)
*
0.3
f
)
/
(
1.35
f
*
i
+
1
)
/
2.0
f
-
bottomMargin
/
2.0
f
;
drawCircle
(
xCenterPos
,
yCenterPos
,
radius
,
0.1
f
,
ringColor
,
&
painter
);
drawCircle
(
xCenterPos
,
yCenterPos
,
radius
,
1.0
f
,
ringColor
,
&
painter
);
paintText
(
tr
(
"%1 m"
).
arg
(
refToMetric
(
radius
),
5
,
'f'
,
1
,
' '
),
QGC
::
colorCyan
,
1.6
f
,
vwidth
/
2
-
4
,
vheight
/
2
+
radius
+
2.2
,
&
painter
);
}
...
...
@@ -320,25 +320,37 @@ void HSIDisplay::renderOverlay()
drawWaypoints
(
painter
);
// Draw status flags
drawStatusFlag
(
2
,
1
,
tr
(
"ATT"
),
attControlEnabled
,
attControlKnown
,
painter
);
drawStatusFlag
(
22
,
1
,
tr
(
"PXY"
),
xyControlEnabled
,
xyControlKnown
,
painter
);
drawStatusFlag
(
44
,
1
,
tr
(
"PZ"
),
zControlEnabled
,
zControlKnown
,
painter
);
drawStatusFlag
(
66
,
1
,
tr
(
"YAW"
),
yawControlEnabled
,
yawControlKnown
,
painter
);
drawStatusFlag
(
1
,
1
,
tr
(
"RAT"
),
rateControlEnabled
,
rateControlKnown
,
painter
);
drawStatusFlag
(
17
,
1
,
tr
(
"ATT"
),
attControlEnabled
,
attControlKnown
,
painter
);
drawStatusFlag
(
33
,
1
,
tr
(
"PXY"
),
xyControlEnabled
,
xyControlKnown
,
painter
);
drawStatusFlag
(
49
,
1
,
tr
(
"PZ"
),
zControlEnabled
,
zControlKnown
,
painter
);
drawStatusFlag
(
65
,
1
,
tr
(
"YAW"
),
yawControlEnabled
,
yawControlKnown
,
painter
);
// Draw position lock indicators
drawPositionLock
(
2
,
5
,
tr
(
"POS"
),
positionFix
,
positionFixKnown
,
painter
);
drawPositionLock
(
22
,
5
,
tr
(
"VIS"
),
visionFix
,
visionFixKnown
,
painter
);
drawPositionLock
(
44
,
5
,
tr
(
"GPS"
),
gpsFix
,
gpsFixKnown
,
painter
);
drawPositionLock
(
66
,
5
,
tr
(
"IRU"
),
iruFix
,
iruFixKnown
,
painter
);
drawPositionLock
(
1
,
6
,
tr
(
"POS"
),
positionFix
,
positionFixKnown
,
painter
);
drawPositionLock
(
17
,
6
,
tr
(
"GPS"
),
gpsFix
,
gpsFixKnown
,
painter
);
drawStatusFlag
(
33
,
6
,
tr
(
"FLO"
),
flowON
,
flowKnown
,
flowOK
,
painter
);
drawPositionLock
(
49
,
6
,
tr
(
"VIS"
),
visionFix
,
visionFixKnown
,
painter
);
drawPositionLock
(
65
,
6
,
tr
(
"IRU"
),
iruFix
,
iruFixKnown
,
painter
);
drawStatusFlag
(
1
,
11
,
tr
(
"GYR"
),
gyroON
,
gyroKnown
,
gyroOK
,
painter
);
drawStatusFlag
(
17
,
11
,
tr
(
"ACC"
),
accelON
,
accelKnown
,
accelOK
,
painter
);
drawStatusFlag
(
33
,
11
,
tr
(
"MAG"
),
magON
,
magKnown
,
magOK
,
painter
);
drawStatusFlag
(
49
,
11
,
tr
(
"BAR"
),
pressureON
,
pressureKnown
,
pressureOK
,
painter
);
drawStatusFlag
(
65
,
11
,
tr
(
"PIT"
),
diffPressureON
,
diffPressureKnown
,
diffPressureOK
,
painter
);
drawStatusFlag
(
1
,
16
,
tr
(
"ACT"
),
actuatorsON
,
actuatorsKnown
,
actuatorsOK
,
painter
);
drawStatusFlag
(
17
,
16
,
tr
(
"LAS"
),
laserON
,
laserKnown
,
laserOK
,
painter
);
drawStatusFlag
(
33
,
16
,
tr
(
"VCN"
),
viconON
,
viconKnown
,
viconOK
,
painter
);
// Draw speed to top left
paintText
(
tr
(
"SPEED"
),
QGC
::
colorCyan
,
2.2
f
,
2
,
11
,
&
painter
);
paintText
(
tr
(
"%1 m/s"
).
arg
(
speed
,
5
,
'f'
,
2
,
'0'
),
Qt
::
white
,
2.2
f
,
12
,
11
,
&
painter
);
paintText
(
tr
(
"SPEED"
),
QGC
::
colorCyan
,
2.2
f
,
2
,
topMargin
+
2
,
&
painter
);
paintText
(
tr
(
"%1 m/s"
).
arg
(
speed
,
5
,
'f'
,
2
,
'0'
),
Qt
::
white
,
2.2
f
,
12
,
topMargin
+
2
,
&
painter
);
// Draw crosstrack error to top right
float
crossTrackError
=
0
;
paintText
(
tr
(
"XTRACK"
),
QGC
::
colorCyan
,
2.2
f
,
54
,
11
,
&
painter
);
paintText
(
tr
(
"%1 m"
).
arg
(
crossTrackError
,
5
,
'f'
,
2
,
'0'
),
Qt
::
white
,
2.2
f
,
67
,
11
,
&
painter
);
paintText
(
tr
(
"XTRACK"
),
QGC
::
colorCyan
,
2.2
f
,
54
,
topMargin
+
2
,
&
painter
);
paintText
(
tr
(
"%1 m"
).
arg
(
crossTrackError
,
5
,
'f'
,
2
,
'0'
),
Qt
::
white
,
2.2
f
,
67
,
topMargin
+
2
,
&
painter
);
// Draw position to bottom left
if
(
localAvailable
>
0
)
...
...
@@ -390,13 +402,23 @@ void HSIDisplay::renderOverlay()
}
void
HSIDisplay
::
drawStatusFlag
(
float
x
,
float
y
,
QString
label
,
bool
status
,
bool
known
,
QPainter
&
painter
)
{
drawStatusFlag
(
x
,
y
,
label
,
status
,
known
,
true
,
painter
);
}
void
HSIDisplay
::
drawStatusFlag
(
float
x
,
float
y
,
QString
label
,
bool
status
,
bool
known
,
bool
ok
,
QPainter
&
painter
)
{
paintText
(
label
,
QGC
::
colorCyan
,
2.6
f
,
x
,
y
+
0.8
f
,
&
painter
);
QColor
statusColor
(
250
,
250
,
250
);
if
(
status
)
{
painter
.
setBrush
(
QGC
::
colorGreen
);
}
else
{
if
(
!
ok
)
{
painter
.
setBrush
(
QGC
::
colorDarkYellow
);
}
else
{
if
(
status
)
{
painter
.
setBrush
(
QGC
::
colorGreen
);
}
else
{
painter
.
setBrush
(
Qt
::
darkGray
);
}
}
painter
.
setPen
(
Qt
::
NoPen
);
...
...
@@ -409,7 +431,7 @@ void HSIDisplay::drawStatusFlag(float x, float y, QString label, bool status, bo
if
(
!
known
)
{
QPen
pen
(
Qt
::
yellow
);
pen
.
setWidth
(
2
);
pen
.
setWidth
(
3
);
painter
.
setPen
(
pen
);
// Top left to bottom right
QPointF
p1
,
p2
,
p3
,
p4
;
...
...
@@ -468,7 +490,7 @@ void HSIDisplay::drawPositionLock(float x, float y, QString label, int status, b
// Cross out instrument if state unknown
if
(
!
known
)
{
QPen
pen
(
Qt
::
yellow
);
pen
.
setWidth
(
2
);
pen
.
setWidth
(
3
);
painter
.
setPen
(
pen
);
// Top left to bottom right
QPointF
p1
,
p2
,
p3
,
p4
;
...
...
src/ui/HSIDisplay.h
View file @
716915e3
...
...
@@ -109,6 +109,7 @@ protected slots:
void
drawAltitudeSetpoint
(
float
xRef
,
float
yRef
,
float
radius
,
const
QColor
&
color
,
QPainter
*
painter
);
/** @brief Draw a status flag indicator */
void
drawStatusFlag
(
float
x
,
float
y
,
QString
label
,
bool
status
,
bool
known
,
QPainter
&
painter
);
void
drawStatusFlag
(
float
x
,
float
y
,
QString
label
,
bool
status
,
bool
known
,
bool
ok
,
QPainter
&
painter
);
/** @brief Draw a position lock indicator */
void
drawPositionLock
(
float
x
,
float
y
,
QString
label
,
int
status
,
bool
known
,
QPainter
&
painter
);
void
setBodySetpointCoordinateXY
(
double
x
,
double
y
);
...
...
@@ -268,6 +269,7 @@ protected:
float
yCenterPos
;
///< Y center of instrument in virtual coordinates
bool
positionLock
;
bool
rateControlEnabled
;
///< Rate control enabled
bool
attControlEnabled
;
///< Attitude control enabled
bool
xyControlEnabled
;
///< Horizontal control enabled
bool
zControlEnabled
;
///< Vertical control enabled
...
...
@@ -277,10 +279,12 @@ protected:
int
visionFix
;
///< Localizaiton dimensions based on computer vision
int
laserFix
;
///< Localization dimensions based on laser
int
iruFix
;
///< Localization dimensions based on ultrasound
bool
mavInitialized
;
///< The MAV is initialized once the setpoint has been received
float
topMargin
;
///< Margin on top of the page, in virtual coordinates
float
bottomMargin
;
///< Margin on the bottom of the page, in virtual coordinates
bool
rateControlKnown
;
///< Rate control status known flag
bool
attControlKnown
;
///< Attitude control status known flag
bool
xyControlKnown
;
///< XY control status known flag
bool
zControlKnown
;
///< Z control status known flag
...
...
@@ -292,6 +296,43 @@ protected:
bool
gpsFixKnown
;
///< GPS fix status known flag
bool
iruFixKnown
;
///< Infrared/Ultrasound fix status known flag
// System state indicators
bool
gyroKnown
;
bool
gyroON
;
bool
gyroOK
;
bool
accelKnown
;
bool
accelON
;
bool
accelOK
;
bool
magKnown
;
bool
magON
;
bool
magOK
;
bool
pressureKnown
;
bool
pressureON
;
bool
pressureOK
;
bool
diffPressureKnown
;
bool
diffPressureON
;
bool
diffPressureOK
;
bool
flowKnown
;
bool
flowON
;
bool
flowOK
;
bool
laserKnown
;
bool
laserON
;
bool
laserOK
;
bool
viconKnown
;
bool
viconON
;
bool
viconOK
;
bool
actuatorsKnown
;
bool
actuatorsON
;
bool
actuatorsOK
;
// Data indicators
bool
setPointKnown
;
///< Controller setpoint known status flag
bool
positionSetPointKnown
;
///< Position setpoint known status flag
...
...
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