QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
VehicleSetpointFactGroup.cc
Go to the documentation of this file.
2
3#include <QtMath>
4
5#include "MAVLinkLib.h"
6#include "Vehicle.h"
7
9 : FactGroup(1000, QStringLiteral(":/json/Vehicle/SetpointFact.json"), parent)
10{
11 _addFact(&_rollFact);
12 _addFact(&_pitchFact);
13 _addFact(&_yawFact);
14 _addFact(&_rollRateFact);
15 _addFact(&_pitchRateFact);
16 _addFact(&_yawRateFact);
17
18 _rollFact.setRawValue(qQNaN());
19 _pitchFact.setRawValue(qQNaN());
20 _yawFact.setRawValue(qQNaN());
21 _rollRateFact.setRawValue(qQNaN());
22 _pitchRateFact.setRawValue(qQNaN());
23 _yawRateFact.setRawValue(qQNaN());
24}
25
27{
28 Q_UNUSED(vehicle);
29
30 if (message.msgid != MAVLINK_MSG_ID_ATTITUDE_TARGET) {
31 return;
32 }
33
34 mavlink_attitude_target_t attitudeTarget{};
35 mavlink_msg_attitude_target_decode(&message, &attitudeTarget);
36
37 float targetRoll, targetPitch, targetYaw;
38 mavlink_quaternion_to_euler(attitudeTarget.q, &targetRoll, &targetPitch, &targetYaw);
39
40 roll()->setRawValue(qRadiansToDegrees(targetRoll));
41 pitch()->setRawValue(qRadiansToDegrees(targetPitch));
42 if (targetYaw < 0.f) {
43 targetYaw += 2.f * static_cast<float>(M_PI); // bring to range [0, 2pi] to match the heading angle
44 }
45 yaw()->setRawValue(qRadiansToDegrees(targetYaw));
46
47 rollRate()->setRawValue(qRadiansToDegrees(attitudeTarget.body_roll_rate));
48 pitchRate()->setRawValue(qRadiansToDegrees(attitudeTarget.body_pitch_rate));
49 yawRate()->setRawValue(qRadiansToDegrees(attitudeTarget.body_yaw_rate));
50
52}
struct __mavlink_message mavlink_message_t
Used to group Facts together into an object hierarachy.
Definition FactGroup.h:16
void _setTelemetryAvailable(bool telemetryAvailable)
Definition FactGroup.cc:175
void _addFact(Fact *fact, const QString &name)
Definition FactGroup.cc:116
void setRawValue(const QVariant &value)
Definition Fact.cc:135
void handleMessage(Vehicle *vehicle, const mavlink_message_t &message) final
Allows a FactGroup to parse incoming messages and fill in values.
VehicleSetpointFactGroup(QObject *parent=nullptr)