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
db2b0bf5
Commit
db2b0bf5
authored
Jun 26, 2010
by
pixhawk
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added controller and position status indicators
parent
ff5ceff5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
123 additions
and
33 deletions
+123
-33
Core.cc
src/Core.cc
+1
-1
PxQuadMAV.cc
src/uas/PxQuadMAV.cc
+10
-0
HSIDisplay.cc
src/ui/HSIDisplay.cc
+104
-24
HSIDisplay.h
src/ui/HSIDisplay.h
+8
-8
No files found.
src/Core.cc
View file @
db2b0bf5
...
...
@@ -62,7 +62,7 @@ This file is part of the PIXHAWK project
Core
::
Core
(
int
&
argc
,
char
*
argv
[])
:
QApplication
(
argc
,
argv
)
{
this
->
setApplicationName
(
"QGroundControl"
);
this
->
setApplicationVersion
(
"v. 0.7.
0
(Beta)"
);
this
->
setApplicationVersion
(
"v. 0.7.
5
(Beta)"
);
this
->
setOrganizationName
(
QLatin1String
(
"OpenMAV Association"
));
this
->
setOrganizationDomain
(
"http://qgroundcontrol.org"
);
...
...
src/uas/PxQuadMAV.cc
View file @
db2b0bf5
...
...
@@ -124,6 +124,16 @@ void PxQuadMAV::receiveMessage(LinkInterface* link, mavlink_message_t message)
{
mavlink_control_status_t
status
;
mavlink_msg_control_status_decode
(
&
message
,
&
status
);
// Emit control status vector
emit
attitudeControlEnabled
(
static_cast
<
bool
>
(
status
.
control_att
));
emit
positionXYControlEnabled
(
static_cast
<
bool
>
(
status
.
control_pos_xy
));
emit
positionZControlEnabled
(
static_cast
<
bool
>
(
status
.
control_pos_z
));
emit
positionYawControlEnabled
(
static_cast
<
bool
>
(
status
.
control_pos_yaw
));
// Emit localization status vector
emit
localizationChanged
(
this
,
status
.
position_fix
);
emit
visionLocalizationChanged
(
this
,
status
.
vision_fix
);
emit
gpsLocalizationChanged
(
this
,
status
.
gps_fix
);
}
break
;
default:
...
...
src/ui/HSIDisplay.cc
View file @
db2b0bf5
...
...
@@ -84,6 +84,11 @@ HSIDisplay::HSIDisplay(QWidget *parent) :
attControlEnabled
(
false
),
xyControlEnabled
(
false
),
zControlEnabled
(
false
),
yawControlEnabled
(
false
),
positionFix
(
0
),
gpsFix
(
0
),
visionFix
(
0
),
laserFix
(
0
),
mavInitialized
(
false
)
{
connect
(
UASManager
::
instance
(),
SIGNAL
(
activeUASSet
(
UASInterface
*
)),
this
,
SLOT
(
setActiveUAS
(
UASInterface
*
)));
...
...
@@ -130,31 +135,16 @@ void HSIDisplay::paintDisplay()
// Draw background
painter
.
fillRect
(
QRect
(
0
,
0
,
width
(),
height
()),
backgroundColor
);
// Draw status indicators
QColor
statusColor
(
255
,
255
,
255
);
QString
lockStatus
;
QString
xyContrStatus
;
QString
zContrStatus
;
QString
attContrStatus
;
// Draw status flags
drawStatusFlag
(
2
,
1
,
tr
(
"ATT"
),
attControlEnabled
,
painter
);
drawStatusFlag
(
22
,
1
,
tr
(
"PXY"
),
xyControlEnabled
,
painter
);
drawStatusFlag
(
44
,
1
,
tr
(
"PZ"
),
zControlEnabled
,
painter
);
QColor
lockStatusColor
;
// Draw position lock indicators
drawPositionLock
(
2
,
5
,
tr
(
"POS"
),
positionFix
,
painter
);
drawPositionLock
(
22
,
5
,
tr
(
"VIS"
),
positionFix
,
painter
);
drawPositionLock
(
44
,
5
,
tr
(
"GPS"
),
positionFix
,
painter
);
if
(
positionLock
)
{
lockStatus
=
tr
(
"LOCK"
);
lockStatusColor
=
QColor
(
20
,
255
,
20
);
}
else
{
lockStatus
=
tr
(
"NO"
);
lockStatusColor
=
QColor
(
255
,
20
,
20
);
}
paintText
(
tr
(
"POS"
),
QGC
::
colorCyan
,
1.8
f
,
2.0
f
,
2.5
f
,
&
painter
);
painter
.
setBrush
(
lockStatusColor
);
painter
.
setPen
(
Qt
::
NoPen
);
painter
.
drawRect
(
QRect
(
refToScreenX
(
9.5
f
),
refToScreenY
(
2.0
f
),
refToScreenX
(
7.0
f
),
refToScreenY
(
4.0
f
)));
paintText
(
lockStatus
,
statusColor
,
2.8
f
,
10.0
f
,
2.0
f
,
&
painter
);
// Draw base instrument
// ----------------------
...
...
@@ -245,6 +235,61 @@ void HSIDisplay::paintDisplay()
// bodyYawSet = 0.95 * bodyYawSet + 0.05 * uiYawSet;
}
void
HSIDisplay
::
drawStatusFlag
(
float
x
,
float
y
,
QString
label
,
bool
status
,
QPainter
&
painter
)
{
paintText
(
label
,
QGC
::
colorCyan
,
2.6
f
,
x
,
y
+
0.35
f
,
&
painter
);
QColor
statusColor
(
250
,
250
,
250
);
if
(
status
)
{
painter
.
setBrush
(
QGC
::
colorRed
);
}
else
{
painter
.
setBrush
(
QGC
::
colorRed
);
}
painter
.
setPen
(
Qt
::
NoPen
);
painter
.
drawRect
(
QRect
(
refToScreenX
(
x
+
7.3
f
),
refToScreenY
(
y
+
0.05
),
refToScreenX
(
7.0
f
),
refToScreenY
(
4.0
f
)));
paintText
((
status
)
?
tr
(
"ON"
)
:
tr
(
"OFF"
),
statusColor
,
2.6
f
,
x
+
7.9
f
,
y
+
0.35
f
,
&
painter
);
}
void
HSIDisplay
::
drawPositionLock
(
float
x
,
float
y
,
QString
label
,
int
status
,
QPainter
&
painter
)
{
paintText
(
label
,
QGC
::
colorCyan
,
2.6
f
,
x
,
y
+
0.35
f
,
&
painter
);
QColor
negStatusColor
(
200
,
20
,
20
);
QColor
posStatusColor
(
20
,
200
,
20
);
QColor
statusColor
(
250
,
250
,
250
);
if
(
status
>
0
&&
status
<
4
)
{
painter
.
setBrush
(
posStatusColor
);
}
else
{
painter
.
setBrush
(
negStatusColor
);
}
// Lock text
QString
lockText
;
switch
(
status
)
{
case
1
:
lockText
=
tr
(
"LOC"
);
break
;
case
2
:
lockText
=
tr
(
"2D"
);
break
;
case
3
:
lockText
=
tr
(
"3D"
);
break
;
default:
lockText
=
tr
(
"NO"
);
break
;
}
painter
.
setPen
(
Qt
::
NoPen
);
painter
.
drawRect
(
QRect
(
refToScreenX
(
x
+
7.3
f
),
refToScreenY
(
y
+
0.05
),
refToScreenX
(
7.0
f
),
refToScreenY
(
4.0
f
)));
paintText
(
lockText
,
statusColor
,
2.6
f
,
x
+
7.9
f
,
y
+
0.35
f
,
&
painter
);
}
void
HSIDisplay
::
updatePositionLock
(
UASInterface
*
uas
,
bool
lock
)
{
Q_UNUSED
(
uas
);
...
...
@@ -375,7 +420,12 @@ void HSIDisplay::setActiveUAS(UASInterface* uas)
connect
(
uas
,
SIGNAL
(
attitudeControlEnabled
(
bool
)),
this
,
SLOT
(
updateAttitudeControllerEnabled
(
UASInterface
*
,
bool
)));
connect
(
uas
,
SIGNAL
(
positionXYControlEnabled
(
bool
)),
this
,
SLOT
(
updatePositionXYControllerEnabled
(
UASInterface
*
,
bool
)));
connect
(
uas
,
SIGNAL
(
positionZControlEnabled
(
bool
)),
this
,
SLOT
(
updatePositionZControllerEnabled
(
UASInterface
*
,
bool
)));
connect
(
uas
,
SIGNAL
(
positionYawControlEnabled
(
bool
)),
this
,
SLOT
(
updatePositionYawControllerEnabled
(
UASInterface
*
,
bool
)))
connect
(
uas
,
SIGNAL
(
positionYawControlEnabled
(
bool
)),
this
,
SLOT
(
updatePositionYawControllerEnabled
(
UASInterface
*
,
bool
)));
connect
(
uas
,
SIGNAL
(
localizationChanged
(
UASInterface
*
,
int
)),
this
,
SLOT
(
updateLocalization
(
UASInterface
*
,
int
)));
connect
(
uas
,
SIGNAL
(
visionLocalizationChanged
(
UASInterface
*
,
int
)),
this
,
SLOT
(
updateVisionLocalization
(
UASInterface
*
,
int
)));
connect
(
uas
,
SIGNAL
(
gpsLocalizationChanged
(
UASInterface
*
,
int
)),
this
,
SLOT
(
updateGpsLocalization
(
UASInterface
*
,
int
)));
// Now connect the new UAS
//if (this->uas != uas)
...
...
@@ -492,6 +542,36 @@ void HSIDisplay::updateSatellite(int uasid, int satid, float elevation, float az
}
}
void
HSIDisplay
::
updatePositionYawControllerEnabled
(
bool
enabled
)
{
yawControlEnabled
=
enabled
;
}
/**
* @param fix 0: lost, 1: 2D local position hold, 2: 2D localization, 3: 3D localization
*/
void
HSIDisplay
::
updateLocalization
(
UASInterface
*
uas
,
int
fix
)
{
Q_UNUSED
(
uas
);
positionFix
=
fix
;
}
/**
* @param fix 0: lost, 1: at least one satellite, but no GPS fix, 2: 2D localization, 3: 3D localization
*/
void
HSIDisplay
::
updateGpsLocalization
(
UASInterface
*
uas
,
int
fix
)
{
Q_UNUSED
(
uas
);
gpsFix
=
fix
;
}
/**
* @param fix 0: lost, 1: 2D local position hold, 2: 2D localization, 3: 3D localization
*/
void
HSIDisplay
::
updateVisionLocalization
(
UASInterface
*
uas
,
int
fix
)
{
Q_UNUSED
(
uas
);
visionFix
=
fix
;
}
QColor
HSIDisplay
::
getColorForSNR
(
float
snr
)
{
QColor
color
;
...
...
src/ui/HSIDisplay.h
View file @
db2b0bf5
...
...
@@ -62,15 +62,8 @@ public slots:
void
updateAttitudeControllerEnabled
(
UASInterface
*
uas
,
bool
enabled
);
void
updatePositionXYControllerEnabled
(
UASInterface
*
uas
,
bool
enabled
);
void
updatePositionZControllerEnabled
(
UASInterface
*
uas
,
bool
enabled
);
/** @brief Attitude control enabled/disabled */
void
attitudeControlEnabled
(
bool
enabled
);
/** @brief Position 2D control enabled/disabled */
void
positionXYControlEnabled
(
bool
enabled
);
/** @brief Altitude control enabled/disabled */
void
positionZControlEnabled
(
bool
enabled
);
/** @brief Heading control enabled/disabled */
void
positionYawControl
Enabled
(
bool
enabled
);
void
updatePositionYawController
Enabled
(
bool
enabled
);
/**
* @brief Localization quality changed
...
...
@@ -100,6 +93,8 @@ protected slots:
void
drawPositionDirection
(
float
xRef
,
float
yRef
,
float
radius
,
const
QColor
&
color
,
QPainter
*
painter
);
void
drawAttitudeDirection
(
float
xRef
,
float
yRef
,
float
radius
,
const
QColor
&
color
,
QPainter
*
painter
);
void
drawAltitudeSetpoint
(
float
xRef
,
float
yRef
,
float
radius
,
const
QColor
&
color
,
QPainter
*
painter
);
void
drawStatusFlag
(
float
x
,
float
y
,
QString
label
,
bool
status
,
QPainter
&
painter
);
void
drawPositionLock
(
float
x
,
float
y
,
QString
label
,
int
status
,
QPainter
&
painter
);
void
setBodySetpointCoordinateXY
(
double
x
,
double
y
);
void
setBodySetpointCoordinateZ
(
double
z
);
/** @brief Send the current ui setpoint coordinates as new setpoint to the MAV */
...
...
@@ -220,6 +215,11 @@ protected:
bool
attControlEnabled
;
bool
xyControlEnabled
;
bool
zControlEnabled
;
bool
yawControlEnabled
;
int
positionFix
;
int
gpsFix
;
int
visionFix
;
int
laserFix
;
bool
mavInitialized
;
///< The MAV is initialized once the setpoint has been received
private:
...
...
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