From eceec6c8612ce39839946c43ec31ff8ae4d6c88f Mon Sep 17 00:00:00 2001
From: pfilimonov
Date: Tue, 28 Apr 2026 19:16:39 -0300
Subject: [PATCH] fix(gimbal): add YAW_IN_VEHICLE/EARTH_FRAME flags to
GIMBAL_DEVICE_SET_ATTITUDE (#27198)
---
msg/GimbalDeviceSetAttitude.msg | 2 ++
src/modules/gimbal/output_mavlink.cpp | 4 ++++
2 files changed, 6 insertions(+)
diff --git a/msg/GimbalDeviceSetAttitude.msg b/msg/GimbalDeviceSetAttitude.msg
index f224a23441..ad8622bc01 100644
--- a/msg/GimbalDeviceSetAttitude.msg
+++ b/msg/GimbalDeviceSetAttitude.msg
@@ -9,6 +9,8 @@ uint32 GIMBAL_DEVICE_FLAGS_NEUTRAL = 2
uint32 GIMBAL_DEVICE_FLAGS_ROLL_LOCK = 4
uint32 GIMBAL_DEVICE_FLAGS_PITCH_LOCK = 8
uint32 GIMBAL_DEVICE_FLAGS_YAW_LOCK = 16
+uint32 GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME = 32
+uint32 GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME = 64
float32[4] q
diff --git a/src/modules/gimbal/output_mavlink.cpp b/src/modules/gimbal/output_mavlink.cpp
index c3ceaab678..f51632da96 100644
--- a/src/modules/gimbal/output_mavlink.cpp
+++ b/src/modules/gimbal/output_mavlink.cpp
@@ -245,6 +245,10 @@ void OutputMavlinkV2::_publish_gimbal_device_set_attitude()
if (_absolute_angle[2]) {
set_attitude.flags |= gimbal_device_set_attitude_s::GIMBAL_DEVICE_FLAGS_YAW_LOCK;
+ set_attitude.flags |= gimbal_device_set_attitude_s::GIMBAL_DEVICE_FLAGS_YAW_IN_EARTH_FRAME;
+
+ } else {
+ set_attitude.flags |= gimbal_device_set_attitude_s::GIMBAL_DEVICE_FLAGS_YAW_IN_VEHICLE_FRAME;
}
_gimbal_device_set_attitude_pub.publish(set_attitude);