Skip to content

Commit ffd5355

Browse files
gillamkidDonLakeFlyer
authored andcommitted
Revert "Use QQuaternion instead of mavlink_quaternion_to_euler"
This reverts commit 21bb9df.
1 parent 932a097 commit ffd5355

File tree

1 file changed

+7
-19
lines changed

1 file changed

+7
-19
lines changed

src/Gimbal/GimbalController.cc

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
#include "SettingsManager.h"
1717
#include "Vehicle.h"
1818

19-
#include <QtGui/QQuaternion>
20-
2119
QGC_LOGGING_CATEGORY(GimbalControllerLog, "Gimbal.GimbalController")
2220

2321
GimbalController::GimbalController(Vehicle *vehicle)
@@ -236,25 +234,15 @@ void GimbalController::_handleGimbalDeviceAttitudeStatus(const mavlink_message_t
236234
gimbal->setYawLock((attitude_status.flags & GIMBAL_DEVICE_FLAGS_YAW_LOCK) > 0);
237235
gimbal->_neutral = (attitude_status.flags & GIMBAL_DEVICE_FLAGS_NEUTRAL) > 0;
238236

239-
// Convert from QQuaternion to Euler angles. We specifically don't use mavlink_quaternion_to euler
240-
// because that seems to spew NaNs for boundary conditions. Whereas QQuaternion seems to handle things
241-
// more cleanly.
242-
QQuaternion q(
243-
attitude_status.q[0],
244-
attitude_status.q[1],
245-
attitude_status.q[2],
246-
attitude_status.q[3]);
247-
auto vector3D = q.toEulerAngles();
248-
float roll = vector3D.z();
249-
float pitch = vector3D.y();
250-
float yaw = vector3D.x();
251-
252-
gimbal->setAbsoluteRoll(roll);
253-
gimbal->setAbsolutePitch(pitch);
237+
float roll, pitch, yaw;
238+
mavlink_quaternion_to_euler(attitude_status.q, &roll, &pitch, &yaw);
239+
240+
gimbal->setAbsoluteRoll(qRadiansToDegrees(roll));
241+
gimbal->setAbsolutePitch(qRadiansToDegrees(pitch));
254242

255243
const bool yaw_in_vehicle_frame = _yawInVehicleFrame(attitude_status.flags);
256244
if (yaw_in_vehicle_frame) {
257-
const float bodyYaw = yaw;
245+
const float bodyYaw = qRadiansToDegrees(yaw);
258246
float absoluteYaw = bodyYaw + _vehicle->heading()->rawValue().toFloat();
259247
if (absoluteYaw > 180.0f) {
260248
absoluteYaw -= 360.0f;
@@ -264,7 +252,7 @@ void GimbalController::_handleGimbalDeviceAttitudeStatus(const mavlink_message_t
264252
gimbal->setAbsoluteYaw(absoluteYaw);
265253

266254
} else {
267-
const float absoluteYaw = yaw;
255+
const float absoluteYaw = qRadiansToDegrees(yaw);
268256
float bodyYaw = absoluteYaw - _vehicle->heading()->rawValue().toFloat();
269257
if (bodyYaw < -180.0f) {
270258
bodyYaw += 360.0f;

0 commit comments

Comments
 (0)