Skip to content

Commit c1a1517

Browse files
committed
Properly normalize both ends of absolute and body yaw
1 parent fab16bf commit c1a1517

1 file changed

Lines changed: 2 additions & 8 deletions

File tree

src/Gimbal/GimbalController.cc

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -254,20 +254,14 @@ void GimbalController::_handleGimbalDeviceAttitudeStatus(const mavlink_message_t
254254
const bool yaw_in_vehicle_frame = _yawInVehicleFrame(attitude_status.flags);
255255
if (yaw_in_vehicle_frame) {
256256
const float bodyYaw = qRadiansToDegrees(yaw);
257-
float absoluteYaw = bodyYaw + headingDeg;
258-
if (absoluteYaw > 180.0f) {
259-
absoluteYaw -= 360.0f;
260-
}
257+
const float absoluteYaw = std::remainder(bodyYaw + headingDeg, 360.0f);
261258

262259
gimbal->setBodyYaw(bodyYaw);
263260
gimbal->setAbsoluteYaw(absoluteYaw);
264261

265262
} else {
266263
const float absoluteYaw = qRadiansToDegrees(yaw);
267-
float bodyYaw = absoluteYaw - headingDeg;
268-
if (bodyYaw < -180.0f) {
269-
bodyYaw += 360.0f;
270-
}
264+
const float bodyYaw = std::remainder(absoluteYaw - headingDeg, 360.0f);
271265

272266
gimbal->setBodyYaw(bodyYaw);
273267
gimbal->setAbsoluteYaw(absoluteYaw);

0 commit comments

Comments
 (0)