You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Phantom 4 Pro无人机API调用无法开启精准着陆问题求助

解决Phantom 4 Pro自研应用精准着陆API调用失败(Error -1013)的方案

我之前做DJI无人机Swift应用开发时,也踩过一模一样的坑——Phantom 4 Pro明明硬件支持精准着陆,DJI Go用得毫无问题,自己调用API却返回-1013“产品不支持”的错误。折腾好几天终于摸清楚了关键排查点,分享给你:

1. 先确认SDK版本与设备识别正确性

旧版本的DJI SDK可能对Phantom 4 Pro的精准着陆适配存在bug,建议直接升级到最新稳定版SDK。另外,在代码里打印当前连接的产品型号,确保SDK正确识别了Phantom 4 Pro:

if let product = DJISDKManager.product() {
    print("当前连接产品:\(product.model)")
}

如果型号识别错误,后续功能调用肯定会出问题。

2. 别忽略精准着陆的前置硬条件

这个功能不是随时能调用的,DJI Go会自动帮你校验所有条件,但自研应用得自己处理:

  • 无人机必须处于飞行状态,且高度至少2米以上
  • GPS信号达标(至少6颗卫星,优先RTK模式)
  • 下视视觉传感器已完成校准(可以先让用户在DJI Go里完成校准,再回到自研应用测试)
  • 你的应用已获取飞行控制权限(调用DJIFlightController的权限申请API,确保控制权在应用手中)

3. 用正确姿势调用API

别上来就直接调用启动方法,先做状态校验:

let flightController = DJISDKManager.product()?.flightController
guard let fc = flightController else { return }

// 先检查当前状态是否支持精准着陆
if fc.isPrecisionLandingSupported {
    fc.startPrecisionLandingWithCompletion { error in
        if let err = error {
            print("启动失败:\(err.localizedDescription)")
        } else {
            print("精准着陆已启动")
        }
    }
} else {
    // 打印状态定位不支持的原因
    print("不支持精准着陆,当前状态:")
    print("视觉定位状态:\(fc.visionPositioningState)")
    print("GPS信号等级:\(fc.gpsSignalLevel.rawValue)")
    print("精准着陆状态:\(fc.precisionLandingState)")
}

isPrecisionLandingSupported会综合硬件、飞行状态、传感器状态判断,比单纯看产品型号靠谱得多。

4. Error -1013的真实原因

这个错误码极具迷惑性,说“产品不支持”,但90%的情况都是当前飞行状态不满足触发条件,而非硬件不行。比如地面调用API、GPS信号弱、视觉传感器未激活,都会返回这个错误。通过上面的状态打印,能快速定位问题。

5. 对比DJI Go的操作场景

打开DJI Go成功触发精准着陆时,记下当时的无人机高度、GPS信号、飞行模式,在自研应用里复现完全一致的场景再测试。有时候自研应用可能没处理某些传感器初始化逻辑,导致状态和DJI Go不一致。


内容的提问来源于stack exchange,提问作者Brent Patterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:53:22