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
2226a433
Commit
2226a433
authored
Nov 19, 2010
by
Mariano Lizarraga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Working on new messages and gui updates which are time based instead of reception based
parent
6d994de4
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
2077 additions
and
1132 deletions
+2077
-1132
qgroundcontrol.pro
qgroundcontrol.pro
+0
-1
configuration.h
src/configuration.h
+3
-1
SlugsMAV.cc
src/uas/SlugsMAV.cc
+174
-284
SlugsMAV.h
src/uas/SlugsMAV.h
+71
-99
MainWindow.cc
src/ui/MainWindow.cc
+17
-11
SlugsDataSensorView.cc
src/ui/SlugsDataSensorView.cc
+136
-416
SlugsDataSensorView.h
src/ui/SlugsDataSensorView.h
+23
-207
SlugsDataSensorView.ui
src/ui/SlugsDataSensorView.ui
+1640
-107
SlugsPIDControl.cpp
src/ui/SlugsPIDControl.cpp
+9
-4
SlugsPIDControl.h
src/ui/SlugsPIDControl.h
+4
-2
No files found.
qgroundcontrol.pro
View file @
2226a433
...
...
@@ -139,7 +139,6 @@ FORMS += src/ui/MainWindow.ui \
src
/
ui
/
WaypointGlobalView
.
ui
\
src
/
ui
/
SlugsDataSensorView
.
ui
\
src
/
ui
/
SlugsHilSim
.
ui
\
src
/
ui
/
SlugsDataSensorView
.
ui
\
src
/
ui
/
SlugsPIDControl
.
ui
INCLUDEPATH
+=
src
\
src
/
ui
\
...
...
src/configuration.h
View file @
2226a433
#ifndef CONFIGURATION_H
#define CONFIGURATION_H
#include "mavlink.h"
/** @brief Polling interval in ms */
#ifdef MAVLINK_ENABLED_SLUGS
_MESSAGES_QGC
#ifdef MAVLINK_ENABLED_SLUGS
#define SERIAL_POLL_INTERVAL 7
#else
#define SERIAL_POLL_INTERVAL 2
...
...
src/uas/SlugsMAV.cc
View file @
2226a433
...
...
@@ -6,6 +6,46 @@ SlugsMAV::SlugsMAV(MAVLinkProtocol* mavlink, int id) :
UAS
(
mavlink
,
id
)
//,
// Place other initializers here
{
widgetTimer
=
new
QTimer
(
this
);
widgetTimer
->
setInterval
(
SLUGS_UPDATE_RATE
);
connect
(
widgetTimer
,
SIGNAL
(
timeout
()),
this
,
SLOT
(
emitSignals
()));
widgetTimer
->
start
();
// clear all the state structures
memset
(
&
mlRawImuData
,
0
,
sizeof
(
mavlink_raw_imu_t
));
#ifdef MAVLINK_ENABLED_SLUGS
memset
(
&
mlGpsData
,
0
,
sizeof
(
mavlink_gps_raw_t
));
memset
(
&
mlCpuLoadData
,
0
,
sizeof
(
mavlink_cpu_load_t
));
memset
(
&
mlAirData
,
0
,
sizeof
(
mavlink_air_data_t
));
memset
(
&
mlSensorBiasData
,
0
,
sizeof
(
mavlink_sensor_bias_t
));
memset
(
&
mlDiagnosticData
,
0
,
sizeof
(
mavlink_diagnostic_t
));
memset
(
&
mlPilotConsoleData
,
0
,
sizeof
(
mavlink_pilot_console_t
));
memset
(
&
mlFilteredData
,
0
,
sizeof
(
mavlink_filtered_data_t
));
memset
(
&
mlBoot
,
0
,
sizeof
(
mavlink_boot_t
));
memset
(
&
mlGpsDateTime
,
0
,
sizeof
(
mavlink_gps_date_time_t
));
memset
(
&
mlApMode
,
0
,
sizeof
(
mavlink_set_mode_t
));
memset
(
&
mlPwmCommands
,
0
,
sizeof
(
mavlink_pwm_commands_t
));
memset
(
&
mlPidValues
,
0
,
sizeof
(
mavlink_pid_values_t
));
memset
(
&
mlSinglePid
,
0
,
sizeof
(
mavlink_pid_t
));
memset
(
&
mlNavigation
,
0
,
sizeof
(
mavlink_slugs_navigation_t
));
memset
(
&
mlDataLog
,
0
,
sizeof
(
mavlink_data_log_t
));
memset
(
&
mlPassthrough
,
0
,
sizeof
(
mavlink_ctrl_srfc_pt_t
));
memset
(
&
mlActionAck
,
0
,
sizeof
(
mavlink_action_ack_t
));
memset
(
&
mlAction
,
0
,
sizeof
(
mavlink_slugs_action_t
));
updateRoundRobin
=
0
;
uasId
=
id
;
#endif
}
/**
...
...
@@ -19,336 +59,186 @@ SlugsMAV::SlugsMAV(MAVLinkProtocol* mavlink, int id) :
void
SlugsMAV
::
receiveMessage
(
LinkInterface
*
link
,
mavlink_message_t
message
)
{
// Let UAS handle the default message set
UAS
::
receiveMessage
(
link
,
message
);
//UAS::receiveMessage(link, message);
// Handle your special messages mavlink_message_t* msg = &message;
switch
(
message
.
msgid
)
{
case
MAVLINK_MSG_ID_HEARTBEAT
:
{
//qDebug() << "SLUGS RECEIVED HEARTBEAT";
break
;
}
#ifdef MAVLINK_ENABLED_SLUGS
case
MAVLINK_MSG_ID_CPU_LOAD
:
//170
{
mavlink_cpu_load_t
cpu_load
;
quint64
time
=
getUnixTime
(
0
);
mavlink_msg_cpu_load_decode
(
&
message
,
&
cpu_load
);
emit
valueChanged
(
uasId
,
tr
(
"SensorDSC Load"
),
cpu_load
.
sensLoad
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"ControlDSC Load"
),
cpu_load
.
ctrlLoad
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"Battery Volt"
),
cpu_load
.
batVolt
,
time
);
emit
slugsCPULoad
(
uasId
,
cpu_load
.
sensLoad
,
cpu_load
.
ctrlLoad
,
cpu_load
.
batVolt
,
0
);
//qDebug()<<"--------->>>>>>>>>>>>>>> EMITIENDO MAVLINK_MSG_ID_CPU_LOAD 170";
break
;
}
case
MAVLINK_MSG_ID_AIR_DATA
:
//171
{
mavlink_air_data_t
air_data
;
quint64
time
=
getUnixTime
(
0
);
mavlink_msg_air_data_decode
(
&
message
,
&
air_data
);
emit
valueChanged
(
uasId
,
tr
(
"Dynamic Pressure"
),
air_data
.
dynamicPressure
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"Static Pressure"
),
air_data
.
staticPressure
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"Temp"
),
air_data
.
temperature
,
time
);
emit
slugsAirData
(
uasId
,
air_data
.
dynamicPressure
,
air_data
.
staticPressure
,
air_data
.
temperature
,
time
);
//qDebug()<<"--------->>>>>>>>>>>>>>> EMITIENDO MAVLINK_MSG_ID_AIR_DATA 171";
break
;
}
case
MAVLINK_MSG_ID_SENSOR_BIAS
:
//172
{
mavlink_sensor_bias_t
sensor_bias
;
quint64
time
=
getUnixTime
(
0
);
mavlink_msg_sensor_bias_decode
(
&
message
,
&
sensor_bias
);
emit
valueChanged
(
uasId
,
tr
(
"Ax Bias"
),
sensor_bias
.
axBias
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"Ay Bias"
),
sensor_bias
.
ayBias
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"Az Bias"
),
sensor_bias
.
azBias
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"Gx Bias"
),
sensor_bias
.
gxBias
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"Gy Bias"
),
sensor_bias
.
gyBias
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"Gz Bias"
),
sensor_bias
.
gzBias
,
time
);
emit
slugsSensorBias
(
uasId
,
sensor_bias
.
axBias
,
sensor_bias
.
ayBias
,
sensor_bias
.
azBias
,
sensor_bias
.
gxBias
,
sensor_bias
.
gyBias
,
sensor_bias
.
gzBias
,
0
);
// qDebug()<<"------------->>>>>>>>>>>>>>> EMITIENDO MAVLINK_MSG_ID_SENSOR_BIAS 172";
break
;
}
case
MAVLINK_MSG_ID_DIAGNOSTIC
:
//173
{
mavlink_diagnostic_t
diagnostic
;
quint64
time
=
getUnixTime
(
0
);
mavlink_msg_diagnostic_decode
(
&
message
,
&
diagnostic
);
emit
valueChanged
(
uasId
,
tr
(
"Diag F1"
),
diagnostic
.
diagFl1
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"Diag F2"
),
diagnostic
.
diagFl2
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"Diag F3"
),
diagnostic
.
diagFl3
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"Diag S1"
),
diagnostic
.
diagSh1
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"Diag S2"
),
diagnostic
.
diagSh2
,
time
);
emit
valueChanged
(
uasId
,
tr
(
"Diag S3"
),
diagnostic
.
diagSh3
,
time
);
emit
slugsDiagnostic
(
uasId
,
diagnostic
.
diagFl1
,
diagnostic
.
diagFl2
,
diagnostic
.
diagFl3
,
diagnostic
.
diagSh1
,
diagnostic
.
diagSh2
,
diagnostic
.
diagSh3
,
0
);
//qDebug()<<"------->>>>>>>>>>> EMITIENDO MAVLINK_MSG_ID_DIAGNOSTIC 173";
break
;
}
case
MAVLINK_MSG_ID_PILOT_CONSOLE
:
//174
{
mavlink_pilot_console_t
pilot
;
quint64
time
=
getUnixTime
(
0
);
mavlink_msg_pilot_console_decode
(
&
message
,
&
pilot
);
emit
valueChanged
(
uasId
,
"dt"
,
pilot
.
dt
,
time
);
emit
valueChanged
(
uasId
,
"dla"
,
pilot
.
dla
,
time
);
emit
valueChanged
(
uasId
,
"dra"
,
pilot
.
dra
,
time
);
emit
valueChanged
(
uasId
,
"dr"
,
pilot
.
dr
,
time
);
emit
valueChanged
(
uasId
,
"de"
,
pilot
.
de
,
time
);
emit
slugsPilotConsolePWM
(
uasId
,
pilot
.
dt
,
pilot
.
dla
,
pilot
.
dra
,
pilot
.
dr
,
pilot
.
de
,
0
);
// qDebug()<<"---------->>>>>>>>>>>>>>> EMITIENDO MAVLINK_MSG_ID_PILOT_CONSOLE 174";
break
;
}
case
MAVLINK_MSG_ID_PWM_COMMANDS
:
//175
{
mavlink_pwm_commands_t
pwm
;
quint64
time
=
getUnixTime
(
0
);
mavlink_msg_pwm_commands_decode
(
&
message
,
&
pwm
);
emit
valueChanged
(
uasId
,
"dt_c"
,
pwm
.
dt_c
,
time
);
emit
valueChanged
(
uasId
,
"dla_c"
,
pwm
.
dla_c
,
time
);
emit
valueChanged
(
uasId
,
"dra_c"
,
pwm
.
dra_c
,
time
);
emit
valueChanged
(
uasId
,
"dr_c"
,
pwm
.
dr_c
,
time
);
emit
valueChanged
(
uasId
,
"dle_c"
,
pwm
.
dle_c
,
time
);
emit
valueChanged
(
uasId
,
"dre_c"
,
pwm
.
dre_c
,
time
);
emit
valueChanged
(
uasId
,
"dlf_c"
,
pwm
.
dlf_c
,
time
);
emit
valueChanged
(
uasId
,
"drf_c"
,
pwm
.
drf_c
,
time
);
emit
valueChanged
(
uasId
,
"da1_c"
,
pwm
.
aux1
,
time
);
emit
valueChanged
(
uasId
,
"da2_c"
,
pwm
.
aux2
,
time
);
emit
slugsPWM
(
uasId
,
pwm
.
dt_c
,
pwm
.
dla_c
,
pwm
.
dra_c
,
pwm
.
dr_c
,
pwm
.
dle_c
,
pwm
.
dre_c
,
pwm
.
dlf_c
,
pwm
.
drf_c
,
pwm
.
aux1
,
pwm
.
aux2
,
0
);
//qDebug()<<"----------->>>>>>>>>>>>>>> EMITIENDO MAVLINK_MSG_ID_PWM_COMMANDS 175";
break
;
}
case
MAVLINK_MSG_ID_SLUGS_NAVIGATION
:
//176
{
mavlink_slugs_navigation_t
nav
;
quint64
time
=
getUnixTime
(
0
);
mavlink_msg_slugs_navigation_decode
(
&
message
,
&
nav
);
emit
valueChanged
(
uasId
,
"u_m"
,
nav
.
u_m
,
time
);
emit
valueChanged
(
uasId
,
"phi_c"
,
nav
.
phi_c
,
time
);
emit
valueChanged
(
uasId
,
"theta_c"
,
nav
.
theta_c
,
time
);
emit
valueChanged
(
uasId
,
"psiDot_c"
,
nav
.
psiDot_c
,
time
);
emit
valueChanged
(
uasId
,
"ay_body"
,
nav
.
ay_body
,
time
);
emit
valueChanged
(
uasId
,
"totalDist"
,
nav
.
totalDist
,
time
);
emit
valueChanged
(
uasId
,
"dist2Go"
,
nav
.
dist2Go
,
time
);
emit
valueChanged
(
uasId
,
"fromWP"
,
nav
.
fromWP
,
time
);
emit
valueChanged
(
uasId
,
"toWP"
,
nav
.
toWP
,
time
);
emit
slugsNavegation
(
uasId
,
nav
.
u_m
,
nav
.
phi_c
,
nav
.
theta_c
,
nav
.
psiDot_c
,
nav
.
ay_body
,
nav
.
totalDist
,
nav
.
dist2Go
,
nav
.
fromWP
,
nav
.
toWP
,
time
);
// qDebug()<<"-------->>>>>>>>>>>>>>> EMITIENDO MAVLINK_MSG_ID_SLUGS_NAVIGATION 176";
break
;
}
case
MAVLINK_MSG_ID_DATA_LOG
:
//177
case
MAVLINK_MSG_ID_HEARTBEAT
:
emit
heartbeat
(
this
);
// Set new type if it has changed
if
(
this
->
type
!=
mavlink_msg_heartbeat_get_type
(
&
message
))
{
mavlink_data_log_t
dataLog
;
quint64
time
=
getUnixTime
(
0
);
mavlink_msg_data_log_decode
(
&
message
,
&
dataLog
);
emit
valueChanged
(
uasId
,
"fl_1"
,
dataLog
.
fl_1
,
time
);
emit
valueChanged
(
uasId
,
"fl_2"
,
dataLog
.
fl_2
,
time
);
emit
valueChanged
(
uasId
,
"fl_3"
,
dataLog
.
fl_3
,
time
);
emit
valueChanged
(
uasId
,
"fl_4"
,
dataLog
.
fl_4
,
time
);
emit
valueChanged
(
uasId
,
"fl_5"
,
dataLog
.
fl_5
,
time
);
emit
valueChanged
(
uasId
,
"fl_6"
,
dataLog
.
fl_6
,
time
);
emit
slugsDataLog
(
uasId
,
dataLog
.
fl_1
,
dataLog
.
fl_2
,
dataLog
.
fl_3
,
dataLog
.
fl_4
,
dataLog
.
fl_5
,
dataLog
.
fl_6
,
time
);
// qDebug()<<"-------->>>>>>>>>>>>>>> EMITIENDO LOG DATA 177";
break
;
this
->
type
=
mavlink_msg_heartbeat_get_type
(
&
message
);
emit
systemTypeSet
(
this
,
type
);
}
break
;
case
MAVLINK_MSG_ID_FILTERED_DATA
:
//178
{
case
MAVLINK_MSG_ID_RAW_IMU
:
mavlink_msg_raw_imu_decode
(
&
message
,
&
mlRawImuData
);
break
;
mavlink_filtered_data_t
fil
;
quint64
time
=
getUnixTime
(
0
);
mavlink_msg_filtered_data_decode
(
&
message
,
&
fil
);
emit
valueChanged
(
uasId
,
"aX"
,
fil
.
aX
,
time
);
emit
valueChanged
(
uasId
,
"aY"
,
fil
.
aY
,
time
);
emit
valueChanged
(
uasId
,
"aZ"
,
fil
.
aZ
,
time
);
emit
valueChanged
(
uasId
,
"gX"
,
fil
.
gX
,
time
);
emit
valueChanged
(
uasId
,
"gY"
,
fil
.
gY
,
time
);
emit
valueChanged
(
uasId
,
"gZ"
,
fil
.
gZ
,
time
);
emit
valueChanged
(
uasId
,
"mX"
,
fil
.
mX
,
time
);
emit
valueChanged
(
uasId
,
"mY"
,
fil
.
mY
,
time
);
emit
valueChanged
(
uasId
,
"mZ"
,
fil
.
mZ
,
time
);
#ifdef MAVLINK_ENABLED_SLUGS
emit
slugsFilteredData
(
uasId
,
fil
.
aX
,
fil
.
aY
,
fil
.
aZ
,
fil
.
gX
,
fil
.
gY
,
fil
.
gZ
,
fil
.
mX
,
fil
.
mY
,
fil
.
mZ
,
time
);
case
MAVLINK_MSG_ID_BOOT
:
mavlink_msg_boot_decode
(
&
message
,
&
mlBoot
);
emit
slugsBootMsg
(
uasId
,
mlBoot
);
break
;
// qDebug()<<"-------->>>>>>>>>>>>>>> EMITIENDO filtering data 178";
case
MAVLINK_MSG_ID_ATTITUDE
:
mavlink_msg_attitude_decode
(
&
message
,
&
mlAttitude
);
break
;
case
MAVLINK_MSG_ID_GPS_RAW
:
mavlink_msg_gps_raw_decode
(
&
message
,
&
mlGpsData
);
break
;
case
MAVLINK_MSG_ID_ACTION_ACK
:
// 62
mavlink_msg_action_ack_decode
(
&
message
,
&
mlActionAck
);
break
;
break
;
}
case
MAVLINK_MSG_ID_GPS_DATE_TIME
:
//179
{
mavlink_gps_date_time_t
gps
;
quint64
time
=
getUnixTime
(
0
);
mavlink_msg_gps_date_time_decode
(
&
message
,
&
gps
);
emit
valueChanged
(
uasId
,
"year"
,
gps
.
year
,
time
);
emit
valueChanged
(
uasId
,
"month"
,
gps
.
month
,
time
);
emit
valueChanged
(
uasId
,
"day"
,
gps
.
day
,
time
);
emit
valueChanged
(
uasId
,
"hour"
,
gps
.
hour
,
time
);
emit
valueChanged
(
uasId
,
"min"
,
gps
.
min
,
time
);
emit
valueChanged
(
uasId
,
"sec"
,
gps
.
sec
,
time
);
emit
valueChanged
(
uasId
,
"visSat"
,
gps
.
visSat
,
time
);
emit
slugsGPSDateTime
(
uasId
,
gps
.
year
,
gps
.
month
,
gps
.
day
,
gps
.
hour
,
gps
.
min
,
gps
.
sec
,
gps
.
visSat
,
time
);
case
MAVLINK_MSG_ID_CPU_LOAD
:
//170
mavlink_msg_cpu_load_decode
(
&
message
,
&
mlCpuLoadData
);
break
;
case
MAVLINK_MSG_ID_AIR_DATA
:
//171
mavlink_msg_air_data_decode
(
&
message
,
&
mlAirData
);
break
;
case
MAVLINK_MSG_ID_SENSOR_BIAS
:
//172
mavlink_msg_sensor_bias_decode
(
&
message
,
&
mlSensorBiasData
);
break
;
// qDebug()<<"-------->>>>>>>>>>>>>>> EMITIENDO MAVLINK_MSG_ID_GPS_DATE_TIME 179";
case
MAVLINK_MSG_ID_DIAGNOSTIC
:
//173
mavlink_msg_diagnostic_decode
(
&
message
,
&
mlDiagnosticData
);
break
;
case
MAVLINK_MSG_ID_PILOT_CONSOLE
:
//174
mavlink_msg_pilot_console_decode
(
&
message
,
&
mlPilotConsoleData
);
break
;
case
MAVLINK_MSG_ID_PWM_COMMANDS
:
//175
mavlink_msg_pwm_commands_decode
(
&
message
,
&
mlPwmCommands
);
break
;
break
;
}
case
MAVLINK_MSG_ID_ACTION_ACK
:
{
qDebug
()
<<
"--->>>> EMITIENDO MAVLINK_MSG_ID_ACTION_ACK"
;
mavlink_action_ack_t
ack
;
case
MAVLINK_MSG_ID_SLUGS_NAVIGATION
:
//176
mavlink_msg_slugs_navigation_decode
(
&
message
,
&
mlNavigation
);
break
;
mavlink_msg_action_ack_decode
(
&
message
,
&
ack
);
emit
slugsActionAck
(
uasId
,
ack
.
action
,
ack
.
result
);
}
// case MAVLINK_MSG_ID_MID_LVL_CMDS://180
// {
case
MAVLINK_MSG_ID_DATA_LOG
:
//177
mavlink_msg_data_log_decode
(
&
message
,
&
mlDataLog
);
break
;
case
MAVLINK_MSG_ID_FILTERED_DATA
:
//178
mavlink_msg_filtered_data_decode
(
&
message
,
&
mlFilteredData
);
break
;
// // qDebug()<<"------->>>>>>>>>>>>>>> EMITIENDO MAVLINK_MSG_ID_MID_LVL_CMDS 180";
case
MAVLINK_MSG_ID_GPS_DATE_TIME
:
//179
mavlink_msg_gps_date_time_decode
(
&
message
,
&
mlGpsDateTime
);
break
;
case
MAVLINK_MSG_ID_MID_LVL_CMDS
:
//180
break
;
// break;
// }
// case MAVLINK_MSG_ID_CTRL_SRFC_PT://181
// {
case
MAVLINK_MSG_ID_CTRL_SRFC_PT
:
//181
break
;
// // qDebug()<<"--------->>>>>>>>>>>>>>> EMITIENDO MAVLINK_MSG_ID_CTRL_SRFC_PT 181";
case
MAVLINK_MSG_ID_PID
:
//182
break
;
case
MAVLINK_MSG_ID_SLUGS_ACTION
:
//183
// break;
// }
// case MAVLINK_MSG_ID_PID://182
// {
break
;
#endif
// // qDebug()<<"-------->>>>>>>>>>>>>>> EMITIENDO MAVLINK_MSG_ID_PID 182";
default:
// qDebug() << "\nSLUGS RECEIVED MESSAGE WITH ID" << message.msgid;
break
;
}
}
// break;
// }
// case MAVLINK_MSG_ID_SLUGS_ACTION://183
// {
void
SlugsMAV
::
emitSignals
(
void
){
#ifdef MAVLINK_ENABLED_SLUGS
switch
(
updateRoundRobin
){
case
1
:
emit
slugsCPULoad
(
uasId
,
mlCpuLoadData
);
emit
slugsSensorBias
(
uasId
,
mlSensorBiasData
);
break
;
case
2
:
emit
slugsAirData
(
uasId
,
mlAirData
);
emit
slugsDiagnostic
(
uasId
,
mlDiagnosticData
);
break
;
case
3
:
emit
slugsPilotConsolePWM
(
uasId
,
mlPilotConsoleData
);
emit
slugsPWM
(
uasId
,
mlPwmCommands
);
break
;
case
4
:
emit
slugsNavegation
(
uasId
,
mlNavigation
);
emit
slugsDataLog
(
uasId
,
mlDataLog
);
break
;
case
5
:
emit
slugsFilteredData
(
uasId
,
mlFilteredData
);
emit
slugsGPSDateTime
(
uasId
,
mlGpsDateTime
);
break
;
case
6
:
emit
slugsActionAck
(
uasId
,
mlActionAck
);
emit
emitGpsSignals
();
break
;
}
emit
slugsAttitude
(
uasId
,
mlAttitude
);
emit
attitudeChanged
(
this
,
mlAttitude
.
roll
,
mlAttitude
.
pitch
,
mlAttitude
.
yaw
,
0.0
);
#endif
emit
slugsRawImu
(
uasId
,
mlRawImuData
);
// // qDebug()<<"-------->>>>>>>>>>>>>>> EMITIENDO MAVLINK_MSG_ID_SLUGS_ACTION 183";
// wrap around
updateRoundRobin
=
updateRoundRobin
>
10
?
1
:
updateRoundRobin
+
1
;
// break;
// }
#endif
}
default:
//qDebug() << "\nSLUGS RECEIVED MESSAGE WITH ID" << message.msgid;
break
;
#ifdef MAVLINK_ENABLED_SLUGS
void
SlugsMAV
::
emitGpsSignals
(
void
){
if
(
mlGpsData
.
fix_type
>
0
){
emit
globalPositionChanged
(
this
,
mlGpsData
.
lon
,
mlGpsData
.
lat
,
mlGpsData
.
alt
,
0.0
);
// Smaller than threshold and not NaN
if
(
mlGpsData
.
v
<
1000000
&&
mlGpsData
.
v
==
mlGpsData
.
v
){
emit
speedChanged
(
this
,
(
double
)
mlGpsData
.
v
,
0.0
,
0.0
,
0.0
);
}
else
{
emit
textMessageReceived
(
uasId
,
uasId
,
255
,
QString
(
"GCS ERROR: RECEIVED INVALID SPEED OF %1 m/s"
).
arg
(
mlGpsData
.
v
));
}
}
}
#endif // MAVLINK_ENABLED_SLUGS
src/uas/SlugsMAV.h
View file @
2226a433
...
...
@@ -26,7 +26,9 @@ This file is part of the QGROUNDCONTROL project
#include "UAS.h"
#include "mavlink.h"
#include <QTimer>
#define SLUGS_UPDATE_RATE 100 // in ms
class
SlugsMAV
:
public
UAS
{
Q_OBJECT
...
...
@@ -38,109 +40,79 @@ public slots:
/** @brief Receive a MAVLink message from this MAV */
void
receiveMessage
(
LinkInterface
*
link
,
mavlink_message_t
message
);
void
emitSignals
(
void
);
signals:
// ESPECIAL SLUGS MESSAGE
void
slugsCPULoad
(
int
systemId
,
uint8_t
sensLoad
,
uint8_t
ctrlLoad
,
uint8_t
batVolt
,
quint64
time
);
void
slugsAirData
(
int
systemId
,
float
dinamicPressure
,
float
staticPresure
,
uint16_t
temperature
,
quint64
time
);
void
slugsSensorBias
(
int
systemId
,
double
axBias
,
double
ayBias
,
double
azBias
,
double
gxBias
,
double
gyBias
,
double
gzBias
,
quint64
time
);
void
slugsDiagnostic
(
int
systemId
,
double
diagFl1
,
double
diagFl2
,
double
diagFl3
,
int16_t
diagSh1
,
int16_t
diagSh2
,
int16_t
diagSh3
,
quint64
time
);
void
slugsPilotConsolePWM
(
int
systemId
,
uint16_t
dt
,
uint16_t
dla
,
uint16_t
dra
,
uint16_t
dr
,
uint16_t
de
,
quint64
time
);
void
slugsPWM
(
int
systemId
,
uint16_t
dt_c
,
uint16_t
dla_c
,
uint16_t
dra_c
,
uint16_t
dr_c
,
uint16_t
dle_c
,
uint16_t
dre_c
,
uint16_t
dlf_c
,
uint16_t
drf_c
,
uint16_t
da1_c
,
uint16_t
da2_c
,
quint64
time
);
void
slugsNavegation
(
int
systemId
,
double
u_m
,
double
phi_c
,
double
theta_c
,
double
psiDot_c
,
double
ay_body
,
double
totalDist
,
double
dist2Go
,
uint8_t
fromWP
,
uint8_t
toWP
,
quint64
time
);
void
slugsDataLog
(
int
systemId
,
double
logfl_1
,
double
logfl_2
,
double
logfl_3
,
double
logfl_4
,
double
logfl_5
,
double
logfl_6
,
quint64
time
);
void
slugsFilteredData
(
int
systemId
,
double
filaX
,
double
filaY
,
double
filaZ
,
double
filgX
,
double
filgY
,
double
filgZ
,
double
filmX
,
double
filmY
,
double
filmZ
,
quint64
time
);
void
slugsGPSDateTime
(
int
systemId
,
uint8_t
gpsyear
,
uint8_t
gpsmonth
,
uint8_t
gpsday
,
uint8_t
gpshour
,
uint8_t
gpsmin
,
uint8_t
gpssec
,
uint8_t
gpsvisSat
,
quint64
time
);
void
slugsActionAck
(
int
systemId
,
uint8_t
action
,
uint8_t
result
);
void
slugsRawImu
(
int
uasId
,
const
mavlink_raw_imu_t
&
rawData
);
#ifdef MAVLINK_ENABLED_SLUGS
void
slugsCPULoad
(
int
systemId
,
const
mavlink_cpu_load_t
&
cpuLoad
);
void
slugsAirData
(
int
systemId
,
const
mavlink_air_data_t
&
airData
);
void
slugsSensorBias
(
int
systemId
,
const
mavlink_sensor_bias_t
&
sensorBias
);
void
slugsDiagnostic
(
int
systemId
,
const
mavlink_diagnostic_t
&
diagnostic
);
void
slugsPilotConsolePWM
(
int
systemId
,
const
mavlink_pilot_console_t
&
pilotConsole
);
void
slugsPWM
(
int
systemId
,
const
mavlink_pwm_commands_t
&
pwmCommands
);
void
slugsNavegation
(
int
systemId
,
const
mavlink_slugs_navigation_t
&
slugsNavigation
);
void
slugsDataLog
(
int
systemId
,
const
mavlink_data_log_t
&
dataLog
);
void
slugsFilteredData
(
int
systemId
,
const
mavlink_filtered_data_t
&
filteredData
);
void
slugsGPSDateTime
(
int
systemId
,
const
mavlink_gps_date_time_t
&
gpsDateTime
);
void
slugsActionAck
(
int
systemId
,
const
mavlink_action_ack_t
&
actionAck
);
void
slugsBootMsg
(
int
uasId
,
mavlink_boot_t
&
boot
);
void
slugsAttitude
(
int
uasId
,
mavlink_attitude_t
&
attitude
);
#endif
protected:
typedef
struct
_mavlink_pid_values_t
{
float
P
[
11
];
float
I
[
11
];
float
D
[
11
];
}
mavlink_pid_values_t
;
unsigned
char
updateRoundRobin
;
QTimer
*
widgetTimer
;
mavlink_raw_imu_t
mlRawImuData
;
#ifdef MAVLINK_ENABLED_SLUGS
mavlink_gps_raw_t
mlGpsData
;
mavlink_attitude_t
mlAttitude
;
mavlink_cpu_load_t
mlCpuLoadData
;
mavlink_air_data_t
mlAirData
;
mavlink_sensor_bias_t
mlSensorBiasData
;
mavlink_diagnostic_t
mlDiagnosticData
;
mavlink_pilot_console_t
mlPilotConsoleData
;
mavlink_filtered_data_t
mlFilteredData
;
mavlink_boot_t
mlBoot
;
mavlink_gps_date_time_t
mlGpsDateTime
;
mavlink_mid_lvl_cmds_t
mlMidLevelCommands
;
mavlink_set_mode_t
mlApMode
;
mavlink_pwm_commands_t
mlPwmCommands
;
mavlink_pid_values_t
mlPidValues
;
mavlink_pid_t
mlSinglePid
;
mavlink_slugs_navigation_t
mlNavigation
;
mavlink_data_log_t
mlDataLog
;
mavlink_ctrl_srfc_pt_t
mlPassthrough
;
mavlink_action_ack_t
mlActionAck
;
mavlink_slugs_action_t
mlAction
;
private:
void
emitGpsSignals
(
void
);
int
uasId
;
#endif // if SLUGS
};
...
...
src/ui/MainWindow.cc
View file @
2226a433
...
...
@@ -224,8 +224,14 @@ void MainWindow::connectWidgets()
connect
(
waypointsDockWidget
->
widget
(),
SIGNAL
(
changePositionWPGlobalBySpinBox
(
int
,
float
,
float
)),
mapWidget
,
SLOT
(
changeGlobalWaypointPositionBySpinBox
(
int
,
float
,
float
)));
}
if
(
slugsHilSimWidget
->
widget
()){
connect
(
UASManager
::
instance
(),
SIGNAL
(
activeUASSet
(
UASInterface
*
)),
dynamic_cast
<
SlugsHilSim
*>
(
slugsHilSimWidget
->
widget
()),
SLOT
(
activeUasSet
(
UASInterface
*
))
);
if
(
slugsHilSimWidget
&&
slugsHilSimWidget
->
widget
()){
connect
(
UASManager
::
instance
(),
SIGNAL
(
activeUASSet
(
UASInterface
*
)),
slugsHilSimWidget
->
widget
(),
SLOT
(
activeUasSet
(
UASInterface
*
)));
}
if
(
slugsDataWidget
&&
slugsDataWidget
->
widget
()){
connect
(
UASManager
::
instance
(),
SIGNAL
(
activeUASSet
(
UASInterface
*
)),
slugsDataWidget
->
widget
(),
SLOT
(
setActiveUAS
(
UASInterface
*
)));
}
...
...
@@ -552,16 +558,16 @@ void MainWindow::UASCreated(UASInterface* uas)
PxQuadMAV
*
mav
=
dynamic_cast
<
PxQuadMAV
*>
(
uas
);
if
(
mav
)
loadPixhawkView
();
SlugsMAV
*
mav2
=
dynamic_cast
<
SlugsMAV
*>
(
uas
);
if
(
mav2
)
{
dynamic_cast
<
SlugsDataSensorView
*>
(
slugsDataWidget
->
widget
())
->
addUAS
(
uas
);
loadSlugsView
();
if
(
slugsDataWidget
)
{
SlugsDataSensorView
*
dataWidget
=
dynamic_cast
<
SlugsDataSensorView
*>
(
slugsDataWidget
->
widget
());
if
(
dataWidget
)
{
SlugsMAV
*
mav2
=
dynamic_cast
<
SlugsMAV
*>
(
uas
);
if
(
mav2
)
{
dataWidget
->
addUAS
(
uas
);
loadSlugsView
();
}
}
}
}
}
...
...
src/ui/SlugsDataSensorView.cc
View file @
2226a433
...
...
@@ -10,288 +10,81 @@ SlugsDataSensorView::SlugsDataSensorView(QWidget *parent) :
QWidget
(
parent
),
ui
(
new
Ui
::
SlugsDataSensorView
)
{
ui
->
setupUi
(
this
);
connect
(
UASManager
::
instance
(),
SIGNAL
(
activeUASSet
(
UASInterface
*
)),
this
,
SLOT
(
setActiveUAS
(
UASInterface
*
)));
activeUAS
=
NULL
;
loadParameters
();
this
->
setVisible
(
false
);
// timer for refresh UI
updateTimer
=
new
QTimer
(
this
);
connect
(
updateTimer
,
SIGNAL
(
timeout
()),
this
,
SLOT
(
refresh
()));
updateTimer
->
start
(
200
);
}
void
SlugsDataSensorView
::
loadParameters
()
{
//Global Position
Latitude
=
0
;
Longitude
=
0
;
Height
=
0
;
timeGlobalPosition
=
0
;
Xpos
=
0
;
Ypos
=
0
;
Zpos
=
0
;
TimeActualPosition
=
0
;
VXpos
=
0
;
VYpos
=
0
;
VZpos
=
0
;
TimeActualSpeed
=
0
;
roll
=
0
;
pitch
=
0
;
yaw
=
0
;
TimeActualAttitude
=
0
;
//Sensor Biases
//Acelerometer
Axb
=
0
;
Ayb
=
0
;
Azb
=
0
;
//Gyro
Gxb
=
0
;
Gyb
=
0
;
Gzb
=
0
;
TimeActualBias
=
0
;
//Diagnostic Message
diagFl1
=
0
;
diagFl2
=
0
;
diagFl3
=
0
;
diagSh1
=
0
;
diagSh2
=
0
;
diagSh3
=
0
;
timeDiagnostic
=
0
;
//CPU Load
sensLoad
=
0
;
ctrlLoad
=
0
;
batVolt
=
0
;
timeCpuLoad
=
0
;
//navigation
u_m
=
0
;
phi_c
=
0
;
theta_c
=
0
;
psiDot_c
=
0
;
ay_body
=
0
;
totalDist
=
0
;
dist2Go
=
0
;
fromWP
=
0
;
toWP
=
0
;
timeNavigation
=
0
;
// Data Log
Logfl_1
=
0
;
Logfl_2
=
0
;
Logfl_3
=
0
;
Logfl_4
=
0
;
Logfl_5
=
0
;
Logfl_6
=
0
;
timeDataLog
=
0
;
//pwm commands
dt_c
=
0
;
///< AutoPilot's throttle command
dla_c
=
0
;
///< AutoPilot's left aileron command
dra_c
=
0
;
///< AutoPilot's right aileron command
dr_c
=
0
;
///< AutoPilot's rudder command
dle_c
=
0
;
///< AutoPilot's left elevator command
dre_c
=
0
;
///< AutoPilot's right elevator command
dlf_c
=
0
;
///< AutoPilot's left flap command
drf_c
=
0
;
///< AutoPilot's right flap command
aux1
=
0
;
///< AutoPilot's aux1 command
aux2
=
0
;
///< AutoPilot's aux2 command
timePWMCommand
=
0
;
//filtered data
aX
=
0
;
///< Accelerometer X value (m/s^2)
aY
=
0
;
///< Accelerometer Y value (m/s^2)
aZ
=
0
;
///< Accelerometer Z value (m/s^2)
gX
=
0
;
///< Gyro X value (rad/s)
gY
=
0
;
///< Gyro Y value (rad/s)
gZ
=
0
;
///< Gyro Z value (rad/s)
mX
=
0
;
///< Magnetometer X (normalized to 1)
mY
=
0
;
///< Magnetometer Y (normalized to 1)
mZ
=
0
;
///< Magnetometer Z (normalized to 1)
timeFiltered
=
0
;
//gps date and time
year
=
0
;
///< Year reported by Gps
month
=
0
;
///< Month reported by Gps
day
=
0
;
///< Day reported by Gps
hour
=
0
;
///< Hour reported by Gps
min
=
0
;
///< Min reported by Gps
sec
=
0
;
///< Sec reported by Gps
visSat
=
0
;
///< Visible sattelites reported by Gps
timeGPSDateTime
=
0
;
ui
->
setupUi
(
this
);
activeUAS
=
NULL
;
this
->
setVisible
(
false
);
}
SlugsDataSensorView
::~
SlugsDataSensorView
()
{
delete
ui
;
delete
ui
;
}
void
SlugsDataSensorView
::
addUAS
(
UASInterface
*
uas
)
{
SlugsMAV
*
slugsMav
=
dynamic_cast
<
SlugsMAV
*>
(
uas
);
SlugsMAV
*
slugsMav
=
dynamic_cast
<
SlugsMAV
*>
(
uas
);
if
(
slugsMav
!=
NULL
)
{
//connect standar messages
connect
(
slugsMav
,
SIGNAL
(
localPositionChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)),
this
,
SLOT
(
slugLocalPositionChange
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)));
connect
(
slugsMav
,
SIGNAL
(
speedChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)),
this
,
SLOT
(
slugSpeedLocalPositionChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)));
connect
(
slugsMav
,
SIGNAL
(
attitudeChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)),
this
,
SLOT
(
slugAttitudeChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)));
connect
(
slugsMav
,
SIGNAL
(
globalPositionChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)),
this
,
SLOT
(
slugsGlobalPositionChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)));
if
(
slugsMav
!=
NULL
)
{
connect
(
slugsMav
,
SIGNAL
(
slugsRawImu
(
int
,
const
mavlink_raw_imu_t
&
)),
this
,
SLOT
(
slugRawDataChanged
(
int
,
const
mavlink_raw_imu_t
&
)));
//connect slugs especial messages
connect
(
slugsMav
,
SIGNAL
(
slugsSensorBias
(
int
,
double
,
double
,
double
,
double
,
double
,
double
,
quint64
)),
this
,
SLOT
(
slugsSensorBiasChanged
(
int
,
double
,
double
,
double
,
double
,
double
,
double
,
quint64
)));
connect
(
slugsMav
,
SIGNAL
(
slugsDiagnostic
(
int
,
double
,
double
,
double
,
int16_t
,
int16_t
,
int16_t
,
quint64
)),
this
,
SLOT
(
slugsDiagnosticMessageChanged
(
int
,
double
,
double
,
double
,
int16_t
,
int16_t
,
int16_t
,
quint64
)));
connect
(
slugsMav
,
SIGNAL
(
slugsCPULoad
(
int
,
uint8_t
,
uint8_t
,
uint8_t
,
quint64
)),
this
,
SLOT
(
slugsCpuLoadChanged
(
int
,
uint8_t
,
uint8_t
,
uint8_t
,
quint64
)));
connect
(
slugsMav
,
SIGNAL
(
slugsNavegation
(
int
,
double
,
double
,
double
,
double
,
double
,
double
,
double
,
uint8_t
,
uint8_t
,
quint64
)),
this
,
SLOT
(
slugsNavegationChanged
(
int
,
double
,
double
,
double
,
double
,
double
,
double
,
double
,
uint8_t
,
uint8_t
,
quint64
)));
connect
(
slugsMav
,
SIGNAL
(
slugsDataLog
(
int
,
double
,
double
,
double
,
double
,
double
,
double
,
quint64
)),
this
,
SLOT
(
slugsDataLogChanged
(
int
,
double
,
double
,
double
,
double
,
double
,
double
,
quint64
)));
connect
(
slugsMav
,
SIGNAL
(
slugsPWM
(
int
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
quint64
)),
this
,
SLOT
(
slugsPWMChanged
(
int
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
uint16_t
,
quint64
)));
connect
(
slugsMav
,
SIGNAL
(
slugsFilteredData
(
int
,
double
,
double
,
double
,
double
,
double
,
double
,
double
,
double
,
double
,
quint64
)),
this
,
SLOT
(
slugsFilteredDataChanged
(
int
,
double
,
double
,
double
,
double
,
double
,
double
,
double
,
double
,
double
,
quint64
)));
connect
(
slugsMav
,
SIGNAL
(
slugsGPSDateTime
(
int
,
uint8_t
,
uint8_t
,
uint8_t
,
uint8_t
,
uint8_t
,
uint8_t
,
uint8_t
,
quint64
)),
this
,
SLOT
(
slugsGPSDateTimeChanged
(
int
,
uint8_t
,
uint8_t
,
uint8_t
,
uint8_t
,
uint8_t
,
uint8_t
,
uint8_t
,
quint64
)));
#ifdef MAVLINK_ENABLED_SLUGS
//connect standar messages
connect
(
slugsMav
,
SIGNAL
(
localPositionChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)),
this
,
SLOT
(
slugLocalPositionChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)));
connect
(
slugsMav
,
SIGNAL
(
speedChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)),
this
,
SLOT
(
slugSpeedLocalPositionChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)));
connect
(
slugsMav
,
SIGNAL
(
attitudeChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)),
this
,
SLOT
(
slugAttitudeChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)));
connect
(
slugsMav
,
SIGNAL
(
globalPositionChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)),
this
,
SLOT
(
slugsGlobalPositionChanged
(
UASInterface
*
,
double
,
double
,
double
,
quint64
)));
//connect slugs especial messages
connect
(
slugsMav
,
SIGNAL
(
slugsSensorBias
(
int
,
const
mavlink_sensor_bias_t
&
)),
this
,
SLOT
(
slugsSensorBiasChanged
(
int
,
const
mavlink_sensor_bias_t
&
)));
connect
(
slugsMav
,
SIGNAL
(
slugsDiagnostic
(
int
,
const
mavlink_diagnostic_t
&
)),
this
,
SLOT
(
slugsDiagnosticMessageChanged
(
int
,
const
mavlink_diagnostic_t
&
)));
connect
(
slugsMav
,
SIGNAL
(
slugsCPULoad
(
int
,
const
mavlink_cpu_load_t
&
)),
this
,
SLOT
(
slugsCpuLoadChanged
(
int
,
const
mavlink_cpu_load_t
&
)));
connect
(
slugsMav
,
SIGNAL
(
slugsNavegation
(
int
,
const
mavlink_slugs_navigation_t
&
)),
this
,
SLOT
(
slugsNavegationChanged
(
int
,
const
mavlink_slugs_navigation_t
&
)));
connect
(
slugsMav
,
SIGNAL
(
slugsDataLog
(
int
,
const
mavlink_data_log_t
&
)),
this
,
SLOT
(
slugsDataLogChanged
(
int
,
const
mavlink_data_log_t
&
)));
connect
(
slugsMav
,
SIGNAL
(
slugsPWM
(
int
,
const
mavlink_pwm_commands_t
&
)),
this
,
SLOT
(
slugsPWMChanged
(
int
,
const
mavlink_pwm_commands_t
&
)));
connect
(
slugsMav
,
SIGNAL
(
slugsFilteredData
(
int
,
const
mavlink_filtered_data_t
&
)),
this
,
SLOT
(
slugsFilteredDataChanged
(
int
,
const
mavlink_filtered_data_t
&
)));
connect
(
slugsMav
,
SIGNAL
(
slugsGPSDateTime
(
int
,
const
mavlink_gps_date_time_t
&
)),
this
,
SLOT
(
slugsGPSDateTimeChanged
(
int
,
const
mavlink_gps_date_time_t
&
)));
#endif // MAVLINK_ENABLED_SLUGS
// Set this UAS as active if it is the first one
if
(
activeUAS
==
0
)
{
activeUAS
=
uas
;
}
// Set this UAS as active if it is the first one
if
(
activeUAS
==
0
)
{
activeUAS
=
uas
;
}
}
void
SlugsDataSensorView
::
setActiveUAS
(
UASInterface
*
uas
)
{
activeUAS
=
uas
;
}
}
void
SlugsDataSensorView
::
slugRawDataChanged
(
int
uasId
,
const
mavlink_raw_imu_t
&
rawData
){
Q_UNUSED
(
uasId
);
void
SlugsDataSensorView
::
refresh
()
{
if
(
activeUAS
)
{
//refresh Global Position
ui
->
m_GpsLatitude
->
setText
(
QString
::
number
(
Latitude
,
'f'
,
4
));
ui
->
m_GpsLongitude
->
setText
(
QString
::
number
(
Longitude
,
'f'
,
4
));
ui
->
m_Gpsheigth
->
setText
(
QString
::
number
(
Height
,
'f'
,
4
));
//refresh GPS Date and Time
ui
->
m_GpsDate
->
setText
(
QString
::
number
(
day
)
+
"-"
+
QString
::
number
(
month
)
+
"-"
+
QString
::
number
(
year
));
ui
->
m_GpsTime
->
setText
(
QString
::
number
(
hour
)
+
"-"
+
QString
::
number
(
min
)
+
"-"
+
QString
::
number
(
sec
));
ui
->
m_GpsSat
->
setText
(
QString
::
number
(
visSat
));
ui
->
m_GpsCog
->
setText
(
"No Data"
);
ui
->
m_GpsSog
->
setText
(
"No Data"
);
//refresh UI position data
ui
->
ed_x
->
setPlainText
(
QString
::
number
(
Xpos
,
'f'
,
4
));
ui
->
ed_y
->
setPlainText
(
QString
::
number
(
Ypos
,
'f'
,
4
));
ui
->
ed_z
->
setPlainText
(
QString
::
number
(
Zpos
,
'f'
,
4
));
//refresh UI speed position data
ui
->
ed_vx
->
setPlainText
(
QString
::
number
(
VXpos
,
'f'
,
4
));
ui
->
ed_vy
->
setPlainText
(
QString
::
number
(
VYpos
,
'f'
,
4
));
ui
->
ed_vz
->
setPlainText
(
QString
::
number
(
VZpos
,
'f'
,
4
));
//refresh UI attitude data
ui
->
m_SlugAttitudeRoll_plainTextEdit
->
setPlainText
(
QString
::
number
(
roll
,
'f'
,
4
));
ui
->
m_SlugAttitudePitch_plainTextEdit
->
setPlainText
(
QString
::
number
(
pitch
,
'f'
,
4
));
ui
->
m_SlugAttitudeYaw_plainTextEdit
->
setPlainText
(
QString
::
number
(
yaw
,
'f'
,
4
));
//refresh UI sensor bias acelerometer data
ui
->
m_AxBiases
->
setText
(
QString
::
number
(
Axb
,
'f'
,
4
));
ui
->
m_AyBiases
->
setText
(
QString
::
number
(
Ayb
,
'f'
,
4
));
ui
->
m_AzBiases
->
setText
(
QString
::
number
(
Azb
,
'f'
,
4
));
ui
->
m_GxBiases
->
setText
(
QString
::
number
(
Gxb
,
'f'
,
4
));
ui
->
m_GyBiases
->
setText
(
QString
::
number
(
Gyb
,
'f'
,
4
));
ui
->
m_GzBiases
->
setText
(
QString
::
number
(
Gzb
,
'f'
,
4
));
//refresh UI diagnostic data
ui
->
m_SlugsFl1_textEdit
->
setText
(
QString
::
number
(
diagFl1
,
'f'
,
4
));
ui
->
m_SlugsFl2_textEdit
->
setText
(
QString
::
number
(
diagFl2
,
'f'
,
4
));
ui
->
m_SlugsFl3_textEdit
->
setText
(
QString
::
number
(
diagFl3
,
'f'
,
4
));
ui
->
m_SlugsSh1_textEdit
->
setText
(
QString
::
number
(
diagSh1
,
'f'
,
4
));
ui
->
m_SlugsSh2_textEdit
->
setText
(
QString
::
number
(
diagSh2
,
'f'
,
4
));
ui
->
m_SlugsSh3_textEdit
->
setText
(
QString
::
number
(
diagSh3
,
'f'
,
4
));
//refresh UI navegation data
ui
->
m_SlugsUm_textEdit
->
setText
(
QString
::
number
(
u_m
,
'f'
,
4
));
ui
->
m_SlugsPitchC_textEdit
->
setText
(
QString
::
number
(
pitch
,
'f'
,
4
));
ui
->
m_SlugsPsidC_textEdit
->
setText
(
QString
::
number
(
psiDot_c
,
'f'
,
4
));
ui
->
m_SlugsPhiC_textEdit
->
setText
(
QString
::
number
(
phi_c
,
'f'
,
4
));
ui
->
m_SlugsAyBody_textEdit
->
setText
(
QString
::
number
(
ay_body
,
'f'
,
4
));
ui
->
m_SlugsFromWP_textEdit
->
setText
(
QString
::
number
(
fromWP
,
'f'
,
4
));
ui
->
m_SlugsToWP_textEdit
->
setText
(
QString
::
number
(
toWP
,
'f'
,
4
));
ui
->
m_SlugsTotRun_textEdit
->
setText
(
QString
::
number
(
totalDist
,
'f'
,
4
));
ui
->
m_SlugsDistToGround_textEdit
->
setText
(
QString
::
number
(
dist2Go
,
'f'
,
4
));
//refresh UI Data Log
ui
->
m_logFl1_textEdit
->
setText
(
QString
::
number
(
Logfl_1
,
'f'
,
4
));
ui
->
m_logFl2_textEdit
->
setText
(
QString
::
number
(
Logfl_2
,
'f'
,
4
));
ui
->
m_logFl3_textEdit
->
setText
(
QString
::
number
(
Logfl_3
,
'f'
,
4
));
ui
->
m_logFl4_textEdit
->
setText
(
QString
::
number
(
Logfl_4
,
'f'
,
4
));
ui
->
m_logFl5_textEdit
->
setText
(
QString
::
number
(
Logfl_5
,
'f'
,
4
));
ui
->
m_logFl6_textEdit
->
setText
(
QString
::
number
(
Logfl_6
,
'f'
,
4
));
//refresh UI PWM Commands
ui
->
m_pwmThro
->
setText
(
QString
::
number
(
dt_c
,
'f'
,
4
));
ui
->
m_pwmThroTrim
->
setText
(
QString
::
number
(
dre_c
,
'f'
,
4
));
ui
->
m_pwmAile
->
setText
(
QString
::
number
(
dla_c
,
'f'
,
4
));
ui
->
m_pwmAileTrim
->
setText
(
QString
::
number
(
dlf_c
,
'f'
,
4
));
ui
->
m_pwmElev
->
setText
(
QString
::
number
(
dle_c
,
'f'
,
4
));
ui
->
m_pwmElevTrim
->
setText
(
QString
::
number
(
drf_c
,
'f'
,
4
));
ui
->
m_pwmRudd
->
setText
(
QString
::
number
(
dr_c
,
'f'
,
4
));
ui
->
m_pwmRuddTrim
->
setText
(
QString
::
number
(
aux1
,
'f'
,
4
));
ui
->
m_pwmFailSafe
->
setText
(
QString
::
number
(
dre_c
,
'f'
,
4
));
ui
->
m_pwmAvailable
->
setText
(
"No Data"
);
}
ui
->
m_Axr
->
setText
(
QString
::
number
(
rawData
.
xacc
));
ui
->
m_Ayr
->
setText
(
QString
::
number
(
rawData
.
yacc
));
ui
->
m_Azr
->
setText
(
QString
::
number
(
rawData
.
zacc
));
}
void
SlugsDataSensorView
::
setActiveUAS
(
UASInterface
*
uas
){
activeUAS
=
uas
;
}
#ifdef MAVLINK_ENABLED_SLUGS
void
SlugsDataSensorView
::
slugsGlobalPositionChanged
(
UASInterface
*
uas
,
double
lat
,
double
lon
,
double
alt
,
quint64
time
)
{
Q_UNUSED
(
uas
);
Latitude
=
lat
;
Longitude
=
lon
;
Height
=
alt
;
timeGlobalPosition
=
time
;
quint64
time
)
{
Q_UNUSED
(
uas
);
Q_UNUSED
(
time
);
ui
->
m_GpsLatitude
->
setText
(
QString
::
number
(
lat
));
ui
->
m_GpsLongitude
->
setText
(
QString
::
number
(
lon
));
ui
->
m_GpsHeight
->
setText
(
QString
::
number
(
alt
));
}
...
...
@@ -299,14 +92,13 @@ void SlugsDataSensorView::slugLocalPositionChanged(UASInterface* uas,
double
x
,
double
y
,
double
z
,
quint64
time
)
{
Q_UNUSED
(
uas
);
quint64
time
)
{
Q_UNUSED
(
uas
);
Q_UNUSED
(
time
);
Xpos
=
x
;
Ypos
=
y
;
Zpos
=
z
;
TimeActualPosition
=
time
;
ui
->
ed_x
->
setPlainText
(
QString
::
number
(
x
));
ui
->
ed_y
->
setPlainText
(
QString
::
number
(
y
));
ui
->
ed_z
->
setPlainText
(
QString
::
number
(
z
));
}
...
...
@@ -314,14 +106,14 @@ void SlugsDataSensorView::slugSpeedLocalPositionChanged(UASInterface* uas,
double
vx
,
double
vy
,
double
vz
,
quint64
time
)
{
Q_UNUSED
(
uas
);
quint64
time
)
{
Q_UNUSED
(
uas
);
Q_UNUSED
(
time
);
ui
->
ed_vx
->
setPlainText
(
QString
::
number
(
vx
));
ui
->
ed_vy
->
setPlainText
(
QString
::
number
(
vy
));
ui
->
ed_vz
->
setPlainText
(
QString
::
number
(
vz
));
VXpos
=
vx
;
VYpos
=
vy
;
VZpos
=
vz
;
TimeActualSpeed
=
time
;
}
void
SlugsDataSensorView
::
slugAttitudeChanged
(
UASInterface
*
uas
,
...
...
@@ -331,190 +123,118 @@ void SlugsDataSensorView::slugAttitudeChanged(UASInterface* uas,
quint64
time
)
{
Q_UNUSED
(
uas
);
Q_UNUSED
(
time
);
roll
=
slugroll
;
pitch
=
slugpitch
;
yaw
=
slugyaw
;
TimeActualAttitude
=
time
;
}
ui
->
m_Roll
->
setPlainText
(
QString
::
number
(
slugroll
));
ui
->
m_Pitch
->
setPlainText
(
QString
::
number
(
slugpitch
));
ui
->
m_Yaw
->
setPlainText
(
QString
::
number
(
slugyaw
));
void
SlugsDataSensorView
::
slugsSensorBiasChanged
(
int
systemId
,
double
axb
,
double
ayb
,
double
azb
,
double
gxb
,
double
gyb
,
double
gzb
,
quint64
time
)
{
}
Q_UNUSED
(
systemId
);
Axb
=
axb
;
Ayb
=
ayb
;
Azb
=
azb
;
Gxb
=
gxb
;
Gyb
=
gyb
;
Gzb
=
gzb
;
TimeActualBias
=
time
;
void
SlugsDataSensorView
::
slugsSensorBiasChanged
(
int
systemId
,
const
mavlink_sensor_bias_t
&
sensorBias
){
Q_UNUSED
(
systemId
);
ui
->
m_AxBiases
->
setText
(
QString
::
number
(
sensorBias
.
axBias
));
ui
->
m_AyBiases
->
setText
(
QString
::
number
(
sensorBias
.
ayBias
));
ui
->
m_AzBiases
->
setText
(
QString
::
number
(
sensorBias
.
azBias
));
ui
->
m_GxBiases
->
setText
(
QString
::
number
(
sensorBias
.
gxBias
));
ui
->
m_GyBiases
->
setText
(
QString
::
number
(
sensorBias
.
gyBias
));
ui
->
m_GzBiases
->
setText
(
QString
::
number
(
sensorBias
.
gzBias
));
}
void
SlugsDataSensorView
::
slugsDiagnosticMessageChanged
(
int
systemId
,
double
diagfl1
,
double
diagfl2
,
double
diagfl3
,
int16_t
diagsh1
,
int16_t
diagsh2
,
int16_t
diagsh3
,
quint64
time
)
{
Q_UNUSED
(
systemId
);
diagFl1
=
diagfl1
;
diagFl2
=
diagfl2
;
diagFl3
=
diagfl3
;
diagSh1
=
diagsh1
;
diagSh2
=
diagsh2
;
diagSh3
=
diagsh3
;
timeDiagnostic
=
time
;
const
mavlink_diagnostic_t
&
diagnostic
){
Q_UNUSED
(
systemId
);
ui
->
m_Fl1
->
setText
(
QString
::
number
(
diagnostic
.
diagFl1
));
ui
->
m_Fl2
->
setText
(
QString
::
number
(
diagnostic
.
diagFl2
));
ui
->
m_Fl3
->
setText
(
QString
::
number
(
diagnostic
.
diagFl2
));
ui
->
m_Sh1
->
setText
(
QString
::
number
(
diagnostic
.
diagSh1
));
ui
->
m_Sh2
->
setText
(
QString
::
number
(
diagnostic
.
diagSh2
));
ui
->
m_Sh3
->
setText
(
QString
::
number
(
diagnostic
.
diagSh3
));
}
void
SlugsDataSensorView
::
slugsCpuLoadChanged
(
int
systemId
,
uint8_t
sensload
,
uint8_t
ctrlload
,
uint8_t
batvolt
,
quint64
time
)
{
Q_UNUSED
(
systemId
);
sensLoad
=
sensload
;
ctrlLoad
=
ctrlload
;
batVolt
=
batvolt
;
timeCpuLoad
=
time
;
const
mavlink_cpu_load_t
&
cpuLoad
){
Q_UNUSED
(
systemId
);
ui
->
ed_sens
->
setText
(
QString
::
number
(
cpuLoad
.
sensLoad
));
ui
->
ed_control
->
setText
(
QString
::
number
(
cpuLoad
.
ctrlLoad
));
ui
->
ed_batvolt
->
setText
(
QString
::
number
(
cpuLoad
.
batVolt
));
}
void
SlugsDataSensorView
::
slugsNavegationChanged
(
int
systemId
,
double
navu_m
,
double
navphi_c
,
double
navtheta_c
,
double
navpsiDot_c
,
double
navay_body
,
double
navtotalDist
,
double
navdist2Go
,
uint8_t
navfromWP
,
uint8_t
navtoWP
,
quint64
time
)
{
Q_UNUSED
(
systemId
);
u_m
=
navu_m
;
phi_c
=
navphi_c
;
theta_c
=
navtheta_c
;
psiDot_c
=
navpsiDot_c
;
ay_body
=
navay_body
;
totalDist
=
navtotalDist
;
dist2Go
=
navdist2Go
;
fromWP
=
navfromWP
;
toWP
=
navtoWP
;
timeNavigation
=
time
;
const
mavlink_slugs_navigation_t
&
slugsNavigation
){
Q_UNUSED
(
systemId
);
ui
->
m_Um
->
setText
(
QString
::
number
(
slugsNavigation
.
u_m
));
ui
->
m_PhiC
->
setText
(
QString
::
number
(
slugsNavigation
.
phi_c
));
ui
->
m_PitchC
->
setText
(
QString
::
number
(
slugsNavigation
.
theta_c
));
ui
->
m_PsidC
->
setText
(
QString
::
number
(
slugsNavigation
.
psiDot_c
));
ui
->
m_AyBody
->
setText
(
QString
::
number
(
slugsNavigation
.
ay_body
));
ui
->
m_TotRun
->
setText
(
QString
::
number
(
slugsNavigation
.
totalDist
));
ui
->
m_DistToGo
->
setText
(
QString
::
number
(
slugsNavigation
.
dist2Go
));
ui
->
m_FromWP
->
setText
(
QString
::
number
(
slugsNavigation
.
fromWP
));
ui
->
m_ToWP
->
setText
(
QString
::
number
(
slugsNavigation
.
toWP
));
}
void
SlugsDataSensorView
::
slugsDataLogChanged
(
int
systemId
,
double
logfl_1
,
double
logfl_2
,
double
logfl_3
,
double
logfl_4
,
double
logfl_5
,
double
logfl_6
,
quint64
time
)
{
Q_UNUSED
(
systemId
);
Logfl_1
=
logfl_1
;
Logfl_2
=
logfl_2
;
Logfl_3
=
logfl_3
;
Logfl_4
=
logfl_4
;
Logfl_5
=
logfl_5
;
Logfl_6
=
logfl_6
;
timeDataLog
=
time
;
const
mavlink_data_log_t
&
dataLog
){
Q_UNUSED
(
systemId
);
ui
->
m_logFl1
->
setText
(
QString
::
number
(
dataLog
.
fl_1
));
ui
->
m_logFl2
->
setText
(
QString
::
number
(
dataLog
.
fl_2
));
ui
->
m_logFl3
->
setText
(
QString
::
number
(
dataLog
.
fl_3
));
ui
->
m_logFl4
->
setText
(
QString
::
number
(
dataLog
.
fl_4
));
ui
->
m_logFl5
->
setText
(
QString
::
number
(
dataLog
.
fl_5
));
ui
->
m_logFl6
->
setText
(
QString
::
number
(
dataLog
.
fl_6
));
}
void
SlugsDataSensorView
::
slugsPWMChanged
(
int
systemId
,
uint16_t
vdt_c
,
uint16_t
vdla_c
,
uint16_t
vdra_c
,
uint16_t
vdr_c
,
uint16_t
vdle_c
,
uint16_t
vdre_c
,
uint16_t
vdlf_c
,
uint16_t
vdrf_c
,
uint16_t
vda1_c
,
uint16_t
vda2_c
,
quint64
time
)
{
Q_UNUSED
(
systemId
);
dt_c
=
vdt_c
;
///< AutoPilot's throttle command
dla_c
=
vdla_c
;
///< AutoPilot's left aileron command
dra_c
=
vdra_c
;
///< AutoPilot's right aileron command
dr_c
=
vdr_c
;
///< AutoPilot's rudder command
dle_c
=
vdle_c
;
///< AutoPilot's left elevator command
dre_c
=
vdre_c
;
///< AutoPilot's right elevator command
dlf_c
=
vdlf_c
;
///< AutoPilot's left flap command
drf_c
=
vdrf_c
;
///< AutoPilot's right flap command
aux1
=
vda1_c
;
///< AutoPilot's aux1 command
aux2
=
vda2_c
;
///< AutoPilot's aux2 command
timePWMCommand
=
time
;
const
mavlink_pwm_commands_t
&
pwmCommands
){
Q_UNUSED
(
systemId
);
ui
->
m_pwmThro
->
setText
(
QString
::
number
(
pwmCommands
.
dt_c
));
ui
->
m_pwmAile
->
setText
(
QString
::
number
(
pwmCommands
.
dla_c
));
ui
->
m_pwmElev
->
setText
(
QString
::
number
(
pwmCommands
.
dle_c
));
ui
->
m_pwmRudd
->
setText
(
QString
::
number
(
pwmCommands
.
dr_c
));
ui
->
m_pwmThroTrim
->
setText
(
QString
::
number
(
pwmCommands
.
dre_c
));
ui
->
m_pwmAileTrim
->
setText
(
QString
::
number
(
pwmCommands
.
dlf_c
));
ui
->
m_pwmElevTrim
->
setText
(
QString
::
number
(
pwmCommands
.
drf_c
));
ui
->
m_pwmRuddTrim
->
setText
(
QString
::
number
(
pwmCommands
.
aux1
));
}
void
SlugsDataSensorView
::
slugsFilteredDataChanged
(
int
systemId
,
double
filaX
,
double
filaY
,
double
filaZ
,
double
filgX
,
double
filgY
,
double
filgZ
,
double
filmX
,
double
filmY
,
double
filmZ
,
quint64
time
)
{
Q_UNUSED
(
systemId
);
aX
=
filaX
;
///< Accelerometer X value (m/s^2)
aY
=
filaY
;
///< Accelerometer Y value (m/s^2)
aZ
=
filaZ
;
///< Accelerometer Z value (m/s^2)
gX
=
filgX
;
///< Gyro X value (rad/s)
gY
=
filgY
;
///< Gyro Y value (rad/s)
gZ
=
filgZ
;
///< Gyro Z value (rad/s)
mX
=
filmX
;
///< Magnetometer X (normalized to 1)
mY
=
filmY
;
///< Magnetometer Y (normalized to 1)
mZ
=
filmZ
;
///< Magnetometer Z (normalized to 1)
timeFiltered
=
time
;
const
mavlink_filtered_data_t
&
filteredData
){
Q_UNUSED
(
systemId
);
ui
->
m_Axf
->
setText
(
QString
::
number
(
filteredData
.
aX
));
ui
->
m_Ayf
->
setText
(
QString
::
number
(
filteredData
.
aY
));
ui
->
m_Azf
->
setText
(
QString
::
number
(
filteredData
.
aZ
));
ui
->
m_Gxf
->
setText
(
QString
::
number
(
filteredData
.
gX
));
ui
->
m_Gyf
->
setText
(
QString
::
number
(
filteredData
.
gY
));
ui
->
m_Gzf
->
setText
(
QString
::
number
(
filteredData
.
gZ
));
ui
->
m_Mxf
->
setText
(
QString
::
number
(
filteredData
.
mX
));
ui
->
m_Myf
->
setText
(
QString
::
number
(
filteredData
.
mY
));
ui
->
m_Mzf
->
setText
(
QString
::
number
(
filteredData
.
mZ
));
}
void
SlugsDataSensorView
::
slugsGPSDateTimeChanged
(
int
systemId
,
uint8_t
gpsyear
,
uint8_t
gpsmonth
,
uint8_t
gpsday
,
uint8_t
gpshour
,
uint8_t
gpsmin
,
uint8_t
gpssec
,
uint8_t
gpsvisSat
,
quint64
time
)
{
Q_UNUSED
(
systemId
);
const
mavlink_gps_date_time_t
&
gpsDateTime
){
Q_UNUSED
(
systemId
);
ui
->
m_GpsDate
->
setText
(
QString
::
number
(
gpsDateTime
.
month
)
+
"/"
+
QString
::
number
(
gpsDateTime
.
day
)
+
"/"
+
QString
::
number
(
gpsDateTime
.
year
));
year
=
gpsyear
;
///< Year reported by Gps
month
=
gpsmonth
;
///< Month reported by Gps
day
=
gpsday
;
///< Day reported by Gps
hour
=
gpshour
;
///< Hour reported by Gps
min
=
gpsmin
;
///< Min reported by Gps
sec
=
gpssec
;
///< Sec reported by Gps
visSat
=
gpsvisSat
;
///< Visible sattelites reported by Gps
timeGPSDateTime
=
time
;
ui
->
m_GpsTime
->
setText
(
QString
::
number
(
gpsDateTime
.
hour
)
+
":"
+
QString
::
number
(
gpsDateTime
.
min
)
+
":"
+
QString
::
number
(
gpsDateTime
.
sec
));
ui
->
m_GpsSat
->
setText
(
QString
::
number
(
gpsDateTime
.
visSat
));
}
#endif // MAVLINK_ENABLED_SLUGS
src/ui/SlugsDataSensorView.h
View file @
2226a433
...
...
@@ -36,6 +36,7 @@ This file is part of the QGROUNDCONTROL project
#include "UASInterface.h"
#include "SlugsMAV.h"
#include "mavlink.h"
namespace
Ui
{
class
SlugsDataSensorView
;
...
...
@@ -67,17 +68,10 @@ public slots:
*/
void
setActiveUAS
(
UASInterface
*
uas
);
/**
* @brief Adds the UAS for data display
*
* Adds the UAS and makes all the correct connections for data display on the Widgets
*/
void
refresh
();
void
slugRawDataChanged
(
int
uasId
,
const
mavlink_raw_imu_t
&
rawData
);
#ifdef MAVLINK_ENABLED_SLUGS
/**
* @brief Adds the UAS for data display
*
...
...
@@ -120,240 +114,62 @@ public slots:
double
alt
,
quint64
time
);
/**
* @brief Adds the UAS for data display
*
* Adds the UAS and makes all the correct connections for data display on the Widgets
* @brief Updates the sensor bias widget
*/
void
slugsSensorBiasChanged
(
int
systemId
,
double
axb
,
double
ayb
,
double
azb
,
double
gxb
,
double
gyb
,
double
gzb
,
quint64
time
);
const
mavlink_sensor_bias_t
&
sensorBias
);
/**
* @brief Adds the UAS for data display
*
* Adds the UAS and makes all the correct connections for data display on the Widgets
* @brief Updates the diagnostic widget
*/
void
slugsDiagnosticMessageChanged
(
int
systemId
,
double
diagfl1
,
double
diagfl2
,
double
diagfl3
,
int16_t
diagsh1
,
int16_t
diagsh2
,
int16_t
diagsh3
,
quint64
time
);
const
mavlink_diagnostic_t
&
diagnostic
);
/**
* @brief Adds the UAS for data display
*
* Adds the UAS and makes all the correct connections for data display on the Widgets
* @brief Updates the CPU load widget
*/
void
slugsCpuLoadChanged
(
int
systemId
,
uint8_t
sensload
,
uint8_t
ctrlload
,
uint8_t
batvolt
,
quint64
time
);
const
mavlink_cpu_load_t
&
cpuLoad
);
/**
* @brief Adds the UAS for data display
*
* Adds the UAS and makes all the correct connections for data display on the Widgets
* @brief Updates the Navigation widget
*/
void
slugsNavegationChanged
(
int
systemId
,
double
navu_m
,
double
navphi_c
,
double
navtheta_c
,
double
navpsiDot_c
,
double
navay_body
,
double
navtotalDist
,
double
navdist2Go
,
uint8_t
navfromWP
,
uint8_t
navtoWP
,
quint64
time
);
const
mavlink_slugs_navigation_t
&
slugsNavigation
);
/**
* @brief Adds the UAS for data display
*
* Adds the UAS and makes all the correct connections for data display on the Widgets
* @brief Updates the Data Log widget
*/
void
slugsDataLogChanged
(
int
systemId
,
double
logfl_1
,
double
logfl_2
,
double
logfl_3
,
double
logfl_4
,
double
logfl_5
,
double
logfl_6
,
quint64
time
);
const
mavlink_data_log_t
&
dataLog
);
/**
* @brief Adds the UAS for data display
*
* Adds the UAS and makes all the correct connections for data display on the Widgets
* @brief Updates the PWM Commands widget
*/
void
slugsPWMChanged
(
int
systemId
,
uint16_t
vdt_c
,
uint16_t
vdla_c
,
uint16_t
vdra_c
,
uint16_t
vdr_c
,
uint16_t
vdle_c
,
uint16_t
vdre_c
,
uint16_t
vdlf_c
,
uint16_t
vdrf_c
,
uint16_t
vda1_c
,
uint16_t
vda2_c
,
quint64
time
);
const
mavlink_pwm_commands_t
&
pwmCommands
);
/**
* @brief Adds the UAS for data display
*
* Adds the UAS and makes all the correct connections for data display on the Widgets
* @brief Updates the filtered sensor measurements widget
*/
void
slugsFilteredDataChanged
(
int
systemId
,
double
filaX
,
double
filaY
,
double
filaZ
,
double
filgX
,
double
filgY
,
double
filgZ
,
double
filmX
,
double
filmY
,
double
filmZ
,
quint64
time
);
const
mavlink_filtered_data_t
&
filteredData
);
/**
* @brief Updates the gps Date Time widget
*/
void
slugsGPSDateTimeChanged
(
int
systemId
,
uint8_t
gpsyear
,
uint8_t
gpsmonth
,
uint8_t
gpsday
,
uint8_t
gpshour
,
uint8_t
gpsmin
,
uint8_t
gpssec
,
uint8_t
gpsvisSat
,
quint64
time
);
const
mavlink_gps_date_time_t
&
gpsDateTime
);
#endif // MAVLINK_ENABLED_SLUGS
protected:
QTimer
*
updateTimer
;
UASInterface
*
activeUAS
;
//Global Position
double
Latitude
;
double
Longitude
;
double
Height
;
quint64
timeGlobalPosition
;
// Position and Attitude
//Position
double
Xpos
;
double
Ypos
;
double
Zpos
;
quint64
TimeActualPosition
;
//Speed
double
VXpos
;
double
VYpos
;
double
VZpos
;
quint64
TimeActualSpeed
;
//Attitude
double
roll
;
double
pitch
;
double
yaw
;
quint64
TimeActualAttitude
;
//Sensor Biases
//Acelerometer
double
Axb
;
double
Ayb
;
double
Azb
;
//Gyro
double
Gxb
;
double
Gyb
;
double
Gzb
;
quint64
TimeActualBias
;
//Diagnostic
double
diagFl1
;
double
diagFl2
;
double
diagFl3
;
int16_t
diagSh1
;
int16_t
diagSh2
;
int16_t
diagSh3
;
quint64
timeDiagnostic
;
//CPU Load
uint8_t
sensLoad
;
uint8_t
ctrlLoad
;
uint8_t
batVolt
;
quint64
timeCpuLoad
;
//navigation data
double
u_m
;
double
phi_c
;
double
theta_c
;
double
psiDot_c
;
double
ay_body
;
double
totalDist
;
double
dist2Go
;
uint8_t
fromWP
;
uint8_t
toWP
;
quint64
timeNavigation
;
// Data Log
double
Logfl_1
;
double
Logfl_2
;
double
Logfl_3
;
double
Logfl_4
;
double
Logfl_5
;
double
Logfl_6
;
quint64
timeDataLog
;
//pwm commands
uint16_t
dt_c
;
///< AutoPilot's throttle command
uint16_t
dla_c
;
///< AutoPilot's left aileron command
uint16_t
dra_c
;
///< AutoPilot's right aileron command
uint16_t
dr_c
;
///< AutoPilot's rudder command
uint16_t
dle_c
;
///< AutoPilot's left elevator command
uint16_t
dre_c
;
///< AutoPilot's right elevator command
uint16_t
dlf_c
;
///< AutoPilot's left flap command
uint16_t
drf_c
;
///< AutoPilot's right flap command
uint16_t
aux1
;
///< AutoPilot's aux1 command
uint16_t
aux2
;
///< AutoPilot's aux2 command
quint64
timePWMCommand
;
//filtered data
double
aX
;
///< Accelerometer X value (m/s^2)
double
aY
;
///< Accelerometer Y value (m/s^2)
double
aZ
;
///< Accelerometer Z value (m/s^2)
double
gX
;
///< Gyro X value (rad/s)
double
gY
;
///< Gyro Y value (rad/s)
double
gZ
;
///< Gyro Z value (rad/s)
double
mX
;
///< Magnetometer X (normalized to 1)
double
mY
;
///< Magnetometer Y (normalized to 1)
double
mZ
;
///< Magnetometer Z (normalized to 1)
quint64
timeFiltered
;
//gps date and time
uint8_t
year
;
///< Year reported by Gps
uint8_t
month
;
///< Month reported by Gps
uint8_t
day
;
///< Day reported by Gps
uint8_t
hour
;
///< Hour reported by Gps
uint8_t
min
;
///< Min reported by Gps
uint8_t
sec
;
///< Sec reported by Gps
uint8_t
visSat
;
///< Visible sattelites reported by Gps
quint64
timeGPSDateTime
;
private:
Ui
::
SlugsDataSensorView
*
ui
;
void
loadParameters
();
};
...
...
src/ui/SlugsDataSensorView.ui
View file @
2226a433
...
...
@@ -6,7 +6,7 @@
<rect>
<x>
0
</x>
<y>
0
</y>
<width>
39
4
</width>
<width>
39
9
</width>
<height>
667
</height>
</rect>
</property>
...
...
@@ -31,11 +31,11 @@
<property
name=
"windowTitle"
>
<string>
Form
</string>
</property>
<layout
class=
"Q
HBoxLayout"
name=
"horizontalLayout_3
"
>
<layout
class=
"Q
VBoxLayout"
name=
"verticalLayout_17
"
>
<item>
<widget
class=
"QTabWidget"
name=
"SlugsSensorView_tabWidget"
>
<property
name=
"currentIndex"
>
<number>
3
</number>
<number>
2
</number>
</property>
<widget
class=
"QWidget"
name=
"tab"
>
<attribute
name=
"title"
>
...
...
@@ -496,7 +496,7 @@
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QPlainTextEdit"
name=
"m_
SlugAttitudeRoll_plainTextEdit
"
>
<widget
class=
"QPlainTextEdit"
name=
"m_
Roll
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -556,7 +556,7 @@
</widget>
</item>
<item
row=
"0"
column=
"3"
>
<widget
class=
"QPlainTextEdit"
name=
"m_
SlugAttitudePitch_plainTextEdit
"
>
<widget
class=
"QPlainTextEdit"
name=
"m_
Pitch
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -616,7 +616,7 @@
</widget>
</item>
<item
row=
"0"
column=
"5"
>
<widget
class=
"QPlainTextEdit"
name=
"m_
SlugAttitudeYaw_plainTextEdit
"
>
<widget
class=
"QPlainTextEdit"
name=
"m_
Yaw
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -708,7 +708,7 @@
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_
SlugsUm_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_
Um
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -768,7 +768,7 @@
</widget>
</item>
<item
row=
"0"
column=
"3"
>
<widget
class=
"QTextEdit"
name=
"m_
SlugsFromWP_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_
FromWP
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -828,7 +828,7 @@
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_
SlugsPitchC_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_
PitchC
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -888,7 +888,7 @@
</widget>
</item>
<item
row=
"1"
column=
"3"
>
<widget
class=
"QTextEdit"
name=
"m_
SlugsToWP_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_
ToWP
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -948,7 +948,7 @@
</widget>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_
SlugsPsidC_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_
PsidC
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1021,7 +1021,7 @@
</widget>
</item>
<item
row=
"3"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_
SlugsPhiC_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_
PhiC
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1081,7 +1081,7 @@
</widget>
</item>
<item
row=
"3"
column=
"3"
>
<widget
class=
"QTextEdit"
name=
"m_
SlugsTotRun_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_
TotRun
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1141,7 +1141,7 @@
</widget>
</item>
<item
row=
"4"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_
SlugsAyBody_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_
AyBody
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1201,7 +1201,7 @@
</widget>
</item>
<item
row=
"4"
column=
"3"
>
<widget
class=
"QTextEdit"
name=
"m_
SlugsDistToGround_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_
DistToGo
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1269,7 +1269,7 @@
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_
SlugsFl1_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_
Fl1
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1311,7 +1311,7 @@
</widget>
</item>
<item
row=
"0"
column=
"3"
>
<widget
class=
"QTextEdit"
name=
"m_S
lugsSh1_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_S
h1
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1353,7 +1353,7 @@
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_
SlugsFl2_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_
Fl2
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1395,7 +1395,7 @@
</widget>
</item>
<item
row=
"1"
column=
"3"
>
<widget
class=
"QTextEdit"
name=
"m_S
lugsSh2_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_S
h2
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1437,7 +1437,7 @@
</widget>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_
SlugsFl3_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_
Fl3
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1479,7 +1479,7 @@
</widget>
</item>
<item
row=
"2"
column=
"3"
>
<widget
class=
"QTextEdit"
name=
"m_S
lugsSh3_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_S
h3
"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1541,7 +1541,7 @@
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_logFl1
_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_logFl1"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1583,7 +1583,7 @@
</widget>
</item>
<item
row=
"0"
column=
"3"
>
<widget
class=
"QTextEdit"
name=
"m_logFl4
_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_logFl4"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1625,7 +1625,7 @@
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_logFl2
_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_logFl2"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1667,7 +1667,7 @@
</widget>
</item>
<item
row=
"1"
column=
"3"
>
<widget
class=
"QTextEdit"
name=
"m_logFl5
_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_logFl5"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1709,7 +1709,7 @@
</widget>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_logFl3
_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_logFl3"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -1751,7 +1751,7 @@
</widget>
</item>
<item
row=
"2"
column=
"3"
>
<widget
class=
"QTextEdit"
name=
"m_logFl6
_textEdit
"
>
<widget
class=
"QTextEdit"
name=
"m_logFl6"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
...
...
@@ -2068,7 +2068,7 @@
</widget>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QLineEdit"
name=
"m_Gps
heigth
"
>
<widget
class=
"QLineEdit"
name=
"m_Gps
Height
"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
...
...
@@ -2715,58 +2715,6 @@
</property>
</widget>
</item>
<item
row=
"4"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_20"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
FailSafe
</string>
</property>
</widget>
</item>
<item
row=
"4"
column=
"2"
>
<widget
class=
"QLabel"
name=
"label_25"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Available
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QLineEdit"
name=
"m_pwmThro"
>
<property
name=
"sizePolicy"
>
...
...
@@ -2798,6 +2746,12 @@
</sizepolicy>
</property>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
...
...
@@ -2814,6 +2768,12 @@
</sizepolicy>
</property>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
...
...
@@ -2831,21 +2791,11 @@
</property>
<property
name=
"minimumSize"
>
<size>
<width>
8
0
</width>
<width>
6
0
</width>
<height>
18
</height>
</size>
</property>
</widget>
</item>
<item
row=
"4"
column=
"1"
>
<widget
class=
"QLineEdit"
name=
"m_pwmFailSafe"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
60
</horstretch>
<verstretch>
18
</verstretch>
</sizepolicy>
</property>
<property
name=
"minimumSize"
>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
...
...
@@ -2862,6 +2812,12 @@
</sizepolicy>
</property>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
...
...
@@ -2878,6 +2834,12 @@
</sizepolicy>
</property>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
...
...
@@ -2894,6 +2856,12 @@
</sizepolicy>
</property>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
...
...
@@ -2911,29 +2879,16 @@
</property>
<property
name=
"minimumSize"
>
<size>
<width>
8
0
</width>
<width>
6
0
</width>
<height>
18
</height>
</size>
</property>
</widget>
</item>
<item
row=
"4"
column=
"3"
>
<widget
class=
"QLineEdit"
name=
"m_pwmAvailable"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
60
</horstretch>
<verstretch>
18
</verstretch>
</sizepolicy>
</property>
<property
name=
"minimumSize"
>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"text"
>
<string/>
</property>
</widget>
</item>
</layout>
...
...
@@ -2949,6 +2904,1584 @@
<attribute
name=
"title"
>
<string>
Tab 3
</string>
</attribute>
<layout
class=
"QVBoxLayout"
name=
"verticalLayout_16"
>
<item>
<layout
class=
"QHBoxLayout"
name=
"horizontalLayout_4"
>
<item>
<widget
class=
"QGroupBox"
name=
"sensorBiases_groupBox_2"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
132123
</width>
<height>
123123
</height>
</size>
</property>
<property
name=
"title"
>
<string>
CPU Load
</string>
</property>
<layout
class=
"QVBoxLayout"
name=
"verticalLayout_12"
>
<item>
<layout
class=
"QGridLayout"
name=
"gridLayout_10"
>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_55"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Sensor
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"ed_sens"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"1"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_57"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Control
</string>
</property>
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"ed_control"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"2"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_59"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Batt Volt
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"ed_batvolt"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget
class=
"QGroupBox"
name=
"sensorBiases_groupBox_3"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
132123
</width>
<height>
123123
</height>
</size>
</property>
<property
name=
"title"
>
<string>
Air Data
</string>
</property>
<layout
class=
"QVBoxLayout"
name=
"verticalLayout_13"
>
<item>
<layout
class=
"QGridLayout"
name=
"gridLayout_11"
>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_56"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Dynamic
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"ed_dynamic"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"1"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_58"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Static
</string>
</property>
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"ed_static"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"2"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_60"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Temperature
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"ed_temp"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>
<widget
class=
"QGroupBox"
name=
"sensorBiases_groupBox_4"
>
<property
name=
"minimumSize"
>
<size>
<width>
311
</width>
<height>
213
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
371
</width>
<height>
213
</height>
</size>
</property>
<property
name=
"title"
>
<string>
Filtered Data
</string>
</property>
<layout
class=
"QVBoxLayout"
name=
"verticalLayout_14"
>
<item>
<layout
class=
"QGridLayout"
name=
"gridLayout_15"
>
<item
row=
"0"
column=
"0"
>
<layout
class=
"QGridLayout"
name=
"gridLayout_12"
>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_20"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Ax
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Axf"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"1"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_61"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Ay
</string>
</property>
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Ayf"
>
<property
name=
"sizePolicy"
>
<sizepolicy
hsizetype=
"Expanding"
vsizetype=
"Fixed"
>
<horstretch>
0
</horstretch>
<verstretch>
0
</verstretch>
</sizepolicy>
</property>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"2"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_63"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Az
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Azf"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
</layout>
</item>
<item
row=
"0"
column=
"1"
rowspan=
"2"
>
<layout
class=
"QGridLayout"
name=
"gridLayout_14"
>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_25"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Gx
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Gxf"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"1"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_62"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Gy
</string>
</property>
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Gyf"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"2"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_64"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Gz
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Gzf"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
</layout>
</item>
<item
row=
"1"
column=
"0"
rowspan=
"2"
>
<layout
class=
"QGridLayout"
name=
"gridLayout_13"
>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_66"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Mx
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Mxf"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"1"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_67"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
My
</string>
</property>
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Myf"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"2"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_65"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Mz
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Mzf"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
</layout>
</item>
<item
row=
"2"
column=
"1"
>
<spacer
name=
"verticalSpacer_3"
>
<property
name=
"orientation"
>
<enum>
Qt::Vertical
</enum>
</property>
<property
name=
"sizeHint"
stdset=
"0"
>
<size>
<width>
20
</width>
<height>
40
</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget
class=
"QGroupBox"
name=
"sensorBiases_groupBox_5"
>
<property
name=
"minimumSize"
>
<size>
<width>
311
</width>
<height>
213
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
361
</width>
<height>
213
</height>
</size>
</property>
<property
name=
"title"
>
<string>
Raw Data
</string>
</property>
<layout
class=
"QVBoxLayout"
name=
"verticalLayout_15"
>
<item>
<layout
class=
"QGridLayout"
name=
"gridLayout_16"
>
<item
row=
"0"
column=
"0"
>
<layout
class=
"QGridLayout"
name=
"gridLayout_17"
>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_68"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Ax
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Axr"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"1"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_69"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Ay
</string>
</property>
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Ayr"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"2"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_70"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Az
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Azr"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
</layout>
</item>
<item
row=
"0"
column=
"1"
rowspan=
"2"
>
<layout
class=
"QGridLayout"
name=
"gridLayout_18"
>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_71"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Gx
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Gxr"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"1"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_72"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Gy
</string>
</property>
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Gyr"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"2"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_73"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Gz
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Gzr"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
</layout>
</item>
<item
row=
"1"
column=
"0"
rowspan=
"2"
>
<layout
class=
"QGridLayout"
name=
"gridLayout_19"
>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_74"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Mx
</string>
</property>
</widget>
</item>
<item
row=
"0"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Mxr"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"1"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_75"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
My
</string>
</property>
</widget>
</item>
<item
row=
"1"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Myr"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"2"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label_76"
>
<property
name=
"minimumSize"
>
<size>
<width>
0
</width>
<height>
0
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
16777215
</width>
<height>
16777215
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
<weight>
75
</weight>
<bold>
true
</bold>
</font>
</property>
<property
name=
"text"
>
<string>
Mz
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"1"
>
<widget
class=
"QTextEdit"
name=
"m_Mzr"
>
<property
name=
"minimumSize"
>
<size>
<width>
60
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"maximumSize"
>
<size>
<width>
80
</width>
<height>
18
</height>
</size>
</property>
<property
name=
"font"
>
<font>
<pointsize>
10
</pointsize>
</font>
</property>
<property
name=
"frameShape"
>
<enum>
QFrame::WinPanel
</enum>
</property>
<property
name=
"verticalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"horizontalScrollBarPolicy"
>
<enum>
Qt::ScrollBarAlwaysOff
</enum>
</property>
<property
name=
"readOnly"
>
<bool>
true
</bool>
</property>
</widget>
</item>
</layout>
</item>
<item
row=
"2"
column=
"1"
>
<spacer
name=
"verticalSpacer_4"
>
<property
name=
"orientation"
>
<enum>
Qt::Vertical
</enum>
</property>
<property
name=
"sizeHint"
stdset=
"0"
>
<size>
<width>
20
</width>
<height>
40
</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget
class=
"QWidget"
name=
"tab_2"
>
<attribute
name=
"title"
>
...
...
src/ui/SlugsPIDControl.cpp
View file @
2226a433
...
...
@@ -44,12 +44,13 @@ void SlugsPIDControl::activeUasSet(UASInterface* uas)
{
SlugsMAV
*
slugsMav
=
dynamic_cast
<
SlugsMAV
*>
(
uas
);
#ifdef MAVLINK_ENABLED_SLUGS
if
(
slugsMav
!=
NULL
)
{
connect
(
slugsMav
,
SIGNAL
(
slugsActionAck
(
int
,
uint8_t
,
uint8_t
)),
this
,
SLOT
(
recibeMensaje
(
int
,
uint8_t
,
uint8
_t
)));
connect
(
slugsMav
,
SIGNAL
(
slugsActionAck
(
int
,
const
mavlink_action_ack_t
&
)),
this
,
SLOT
(
recibeMensaje
(
int
,
mavlink_action_ack
_t
)));
}
#endif // MAVLINK_ENABLED_SLUG
// Set this UAS as active if it is the first one
if
(
activeUAS
==
0
)
{
...
...
@@ -339,7 +340,11 @@ void SlugsPIDControl::connect_Pitch2dT_LineEdit()
connect
(
ui
->
P2dT_FF_set
,
SIGNAL
(
textChanged
(
QString
)),
this
,
SLOT
(
changeColor_RED_Pitch2dT_groupBox
(
QString
)));
}
void
SlugsPIDControl
::
recibeMensaje
(
int
systemId
,
uint8_t
action
,
uint8_t
result
)
#ifdef MAVLINK_ENABLED_SLUGS
void
SlugsPIDControl
::
recibeMensaje
(
int
systemId
,
const
mavlink_action_ack_t
&
action
)
{
ui
->
recepcion_label
->
setText
(
QString
::
number
(
action
));
ui
->
recepcion_label
->
setText
(
QString
::
number
(
action
.
action
));
}
#endif // MAVLINK_ENABLED_SLUGS
src/ui/SlugsPIDControl.h
View file @
2226a433
...
...
@@ -6,7 +6,7 @@
#include "UASInterface.h"
#include "QGCMAVLink.h"
#include "SlugsMAV.h"
#include "mavlink.h"
namespace
Ui
{
class
SlugsPIDControl
;
...
...
@@ -184,9 +184,11 @@ public slots:
//Create, send and get Messages PID
// void createMessagePID();
#ifdef MAVLINK_ENABLED_SLUGS
void
recibeMensaje
(
int
systemId
,
uint8_t
action
,
uint8_t
result
);
void
recibeMensaje
(
int
systemId
,
const
mavlink_action_ack_t
&
action
);
#endif // MAVLINK_ENABLED_SLUG
private:
Ui
::
SlugsPIDControl
*
ui
;
...
...
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