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
59f230ba
Commit
59f230ba
authored
May 01, 2017
by
DonLakeFlyer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Clear trajectory and camera triggers at correct times
parent
dd2ab8d8
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
57 additions
and
10 deletions
+57
-10
Vehicle.cc
src/Vehicle/Vehicle.cc
+49
-7
Vehicle.h
src/Vehicle/Vehicle.h
+8
-3
No files found.
src/Vehicle/Vehicle.cc
View file @
59f230ba
...
...
@@ -29,6 +29,7 @@
#include "MissionCommandTree.h"
#include "QGroundControlQmlGlobal.h"
#include "SettingsManager.h"
#include "QGCQGeoCoordinate.h"
QGC_LOGGING_CATEGORY
(
VehicleLog
,
"VehicleLog"
)
...
...
@@ -316,6 +317,10 @@ void Vehicle::_commonInit(void)
_missionManager
=
new
MissionManager
(
this
);
connect
(
_missionManager
,
&
MissionManager
::
error
,
this
,
&
Vehicle
::
_missionManagerError
);
connect
(
_missionManager
,
&
MissionManager
::
newMissionItemsAvailable
,
this
,
&
Vehicle
::
_missionLoadComplete
);
connect
(
_missionManager
,
&
MissionManager
::
newMissionItemsAvailable
,
this
,
&
Vehicle
::
_clearCameraTriggerPoints
);
connect
(
_missionManager
,
&
MissionManager
::
newMissionItemsAvailable
,
this
,
&
Vehicle
::
_clearTrajectoryPoints
);
connect
(
_missionManager
,
&
MissionManager
::
sendComplete
,
this
,
&
Vehicle
::
_clearCameraTriggerPoints
);
connect
(
_missionManager
,
&
MissionManager
::
sendComplete
,
this
,
&
Vehicle
::
_clearTrajectoryPoints
);
_parameterManager
=
new
ParameterManager
(
this
);
connect
(
_parameterManager
,
&
ParameterManager
::
parametersReadyChanged
,
this
,
&
Vehicle
::
_parametersReady
);
...
...
@@ -584,6 +589,13 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes
break
;
case
MAVLINK_MSG_ID_SCALED_PRESSURE3
:
_handleScaledPressure3
(
message
);
break
;
case
MAVLINK_MSG_ID_CAMERA_FEEDBACK
:
_handleCameraFeedback
(
message
);
break
;
case
MAVLINK_MSG_ID_CAMERA_IMAGE_CAPTURED
:
_handleCameraImageCaptured
(
message
);
break
;
case
MAVLINK_MSG_ID_SERIAL_CONTROL
:
...
...
@@ -605,6 +617,31 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes
_uas
->
receiveMessage
(
message
);
}
void
Vehicle
::
_handleCameraFeedback
(
const
mavlink_message_t
&
message
)
{
mavlink_camera_feedback_t
feedback
;
mavlink_msg_camera_feedback_decode
(
&
message
,
&
feedback
);
QGeoCoordinate
imageCoordinate
((
double
)
feedback
.
lat
/
qPow
(
10.0
,
7.0
),
(
double
)
feedback
.
lng
/
qPow
(
10.0
,
7.0
),
feedback
.
alt_msl
);
qCDebug
(
VehicleLog
)
<<
"_handleCameraFeedback coord:index"
<<
imageCoordinate
<<
feedback
.
img_idx
;
_cameraTriggerPoints
.
append
(
new
QGCQGeoCoordinate
(
imageCoordinate
,
this
));
}
void
Vehicle
::
_handleCameraImageCaptured
(
const
mavlink_message_t
&
message
)
{
mavlink_camera_image_captured_t
feedback
;
mavlink_msg_camera_image_captured_decode
(
&
message
,
&
feedback
);
QGeoCoordinate
imageCoordinate
((
double
)
feedback
.
lat
/
qPow
(
10.0
,
7.0
),
(
double
)
feedback
.
lon
/
qPow
(
10.0
,
7.0
),
feedback
.
alt
);
qCDebug
(
VehicleLog
)
<<
"_handleCameraFeedback coord:index"
<<
imageCoordinate
<<
feedback
.
image_index
<<
feedback
.
capture_result
;
if
(
feedback
.
capture_result
==
1
)
{
_cameraTriggerPoints
.
append
(
new
QGCQGeoCoordinate
(
imageCoordinate
,
this
));
}
}
void
Vehicle
::
_handleVfrHud
(
mavlink_message_t
&
message
)
{
mavlink_vfr_hud_t
vfrHud
;
...
...
@@ -945,6 +982,7 @@ void Vehicle::_handleHeartbeat(mavlink_message_t& message)
// We are transitioning to the armed state, begin tracking trajectory points for the map
if
(
_armed
)
{
_mapTrajectoryStart
();
_clearCameraTriggerPoints
();
}
else
{
_mapTrajectoryStop
();
}
...
...
@@ -1277,7 +1315,6 @@ void Vehicle::_handleTextMessage(int newCount)
}
UASMessageHandler
*
pMh
=
qgcApp
()
->
toolbox
()
->
uasMessageHandler
();
Q_ASSERT
(
pMh
);
MessageType_t
type
=
newCount
?
_currentMessageType
:
MessageNone
;
int
errorCount
=
_currentErrorCount
;
int
warnCount
=
_currentWarningCount
;
...
...
@@ -1622,10 +1659,20 @@ void Vehicle::_addNewMapTrajectoryPoint(void)
_mapTrajectoryLastCoordinate
=
_coordinate
;
}
void
Vehicle
::
_clearTrajectoryPoints
(
void
)
{
_mapTrajectoryList
.
clearAndDeleteContents
();
}
void
Vehicle
::
_clearCameraTriggerPoints
(
void
)
{
_cameraTriggerPoints
.
clearAndDeleteContents
();
}
void
Vehicle
::
_mapTrajectoryStart
(
void
)
{
_mapTrajectoryHaveFirstCoordinate
=
false
;
_
mapTrajectoryList
.
clear
();
_
clearTrajectoryPoints
();
_mapTrajectoryTimer
.
start
();
_flightDistanceFact
.
setRawValue
(
0
);
}
...
...
@@ -1907,11 +1954,6 @@ void Vehicle::_announceArmedChanged(bool armed)
_say
(
QString
(
"%1 %2"
).
arg
(
_vehicleIdSpeech
()).
arg
(
armed
?
QStringLiteral
(
"armed"
)
:
QStringLiteral
(
"disarmed"
)));
}
void
Vehicle
::
clearTrajectoryPoints
(
void
)
{
_mapTrajectoryList
.
clearAndDeleteContents
();
}
void
Vehicle
::
setFlying
(
bool
flying
)
{
if
(
armed
()
&&
_flying
!=
flying
)
{
...
...
src/Vehicle/Vehicle.h
View file @
59f230ba
...
...
@@ -246,6 +246,7 @@ public:
Q_PROPERTY
(
QString
flightMode
READ
flightMode
WRITE
setFlightMode
NOTIFY
flightModeChanged
)
Q_PROPERTY
(
bool
hilMode
READ
hilMode
WRITE
setHilMode
NOTIFY
hilModeChanged
)
Q_PROPERTY
(
QmlObjectListModel
*
trajectoryPoints
READ
trajectoryPoints
CONSTANT
)
Q_PROPERTY
(
QmlObjectListModel
*
cameraTriggerPoints
READ
cameraTriggerPoints
CONSTANT
)
Q_PROPERTY
(
float
latitude
READ
latitude
NOTIFY
coordinateChanged
)
Q_PROPERTY
(
float
longitude
READ
longitude
NOTIFY
coordinateChanged
)
Q_PROPERTY
(
bool
messageTypeNone
READ
messageTypeNone
NOTIFY
messageTypeChanged
)
...
...
@@ -371,8 +372,6 @@ public:
Q_INVOKABLE
void
virtualTabletJoystickValue
(
double
roll
,
double
pitch
,
double
yaw
,
double
thrust
);
Q_INVOKABLE
void
disconnectInactiveVehicle
(
void
);
Q_INVOKABLE
void
clearTrajectoryPoints
(
void
);
/// Command vehicle to return to launch
Q_INVOKABLE
void
guidedModeRTL
(
void
);
...
...
@@ -524,6 +523,7 @@ public:
void
setPrearmError
(
const
QString
&
prearmError
);
QmlObjectListModel
*
trajectoryPoints
(
void
)
{
return
&
_mapTrajectoryList
;
}
QmlObjectListModel
*
cameraTriggerPoints
(
void
)
{
return
&
_cameraTriggerPoints
;
}
int
flowImageIndex
()
{
return
_flowImageIndex
;
}
...
...
@@ -791,8 +791,9 @@ private slots:
void
_geoFenceLoadComplete
(
void
);
void
_rallyPointLoadComplete
(
void
);
void
_sendMavCommandAgain
(
void
);
void
_activeJoystickChanged
(
void
);
void
_clearTrajectoryPoints
(
void
);
void
_clearCameraTriggerPoints
(
void
);
private:
bool
_containsLink
(
LinkInterface
*
link
);
...
...
@@ -820,6 +821,8 @@ private:
void
_handleScaledPressure
(
mavlink_message_t
&
message
);
void
_handleScaledPressure2
(
mavlink_message_t
&
message
);
void
_handleScaledPressure3
(
mavlink_message_t
&
message
);
void
_handleCameraFeedback
(
const
mavlink_message_t
&
message
);
void
_handleCameraImageCaptured
(
const
mavlink_message_t
&
message
);
void
_missionManagerError
(
int
errorCode
,
const
QString
&
errorMsg
);
void
_geoFenceManagerError
(
int
errorCode
,
const
QString
&
errorMsg
);
void
_rallyPointManagerError
(
int
errorCode
,
const
QString
&
errorMsg
);
...
...
@@ -954,6 +957,8 @@ private:
bool
_mapTrajectoryHaveFirstCoordinate
;
static
const
int
_mapTrajectoryMsecsBetweenPoints
=
1000
;
QmlObjectListModel
_cameraTriggerPoints
;
// Toolbox references
FirmwarePluginManager
*
_firmwarePluginManager
;
JoystickManager
*
_joystickManager
;
...
...
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