云台旋转不适用于 Windows SDK

Gimbal rotation doesn't work with Windows SDK

我有示例 UWP 应用程序可以与我的 Mavic Air 一起使用,我可以看到相机提要等。现在我正在尝试像这样更改 Gimbal 角度:

var connected = await DJISDKManager.Instance.ComponentManager.GetGimbalHandler(0, 0).GetConnectionAsync();
// true

var attitude = await DJISDKManager.Instance.ComponentManager.GetGimbalHandler(0, 0).GetGimbalAttitudeAsync();
// pitch: 0, roll: 0, yaw: -124

var range = await DJISDKManager.Instance.ComponentManager.GetGimbalHandler(0, 0).GetGimbalAttitudeRangeAsync();
// pitch: max 17 min -90; yaw: max 0 min 0; roll: max 0 min 0;

var angle = new GimbalAngleRotation() { mode = GimbalAngleRotationMode.ABSOLUTE_ANGLE, pitch = -20, yaw = 10, roll = 0  };
var resp = await DJISDKManager.Instance.ComponentManager.GetGimbalHandler(0, 0).RotateByAngleAsync(angle);
// PARAM_OUT_OF_RANGE

如您所见,偏航和横滚的范围是 0-0 (none)。但是,实际偏航值是-124;据我了解,Mavic Air 有一个 3 轴云台,所以我应该为每个轴设置更宽的范围。

此外,当我尝试改变偏航或滚动时,我得到 PARAM_OUT_OF_RANGE 响应。改变俯仰只会导致 NO_ERROR 响应,但我看不出云台角度有什么不同。

我也遇到了同样的问题。我看不到 Gimbal 使用 RotateByAngleAsync 方法做任何事情。我让 Gimbal 做任何事情的唯一方法是使用 RotateBySpeedAsync。如果这能完美运行,这将不是问题,但有时它也什么都不做。 10 次中有 1 次有效。:-/。如果有效 - 只要我不重新启动应用程序,它就会有效。还没有弄清楚如何处理 "reset" 它。

// Defined somewhere else
gimbalHandler = DJISDKManager.Instance.ComponentManager.GetGimbalHandler(0, 0);

// In my control method
var gimbalRotation = new GimbalSpeedRotation();
gimbalRotation.pitch = 4;
gimbalHandler.RotateBySpeedAsync(gimbalRotation);

对于这个问题,您可以尝试以下步骤来解决:

  1. 您还需要在 GimbalAngleRotation 结构中将 GimbalAngleRotaion.duration(以秒为单位)设置为非零值以旋转云台。
  2. 目前WindowsSDK不支持yaw和roll轴的云台旋转