You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

DJI Mobile SDK仿真模式下飞行器自动停止飞行问题咨询

排查Mavic 2模拟器虚拟摇杆指令15秒后停止飞行的思路

这种突然出现的、无硬件/SDK版本变更的问题确实棘手,结合你提到的之前正常运行一年的背景,我整理了几个针对性的排查方向:

  • 检查模拟器会话的生命周期与心跳机制
    DJI SDK的模拟器实例依赖持续的指令交互来维持飞行状态,很可能是代码里的Simulator实例在15秒后出现了异常:

    • 确认simulator对象是全局持有还是局部变量,如果是后者可能被GC回收,导致指令发送中断;
    • 核对虚拟摇杆指令的发送频率,DJI官方推荐至少保持10Hz左右的发送频率,要是中途发送间隔过长甚至中断,飞行器会触发安全机制自动减速停止。
  • 重置模拟器状态并验证初始参数
    虽然SDK版本没动,但模拟器的内部状态可能出现了异常缓存:

    • 在创建simulator实例后,显式调用simulator.reset()重置模拟器状态,再发送摇杆指令,看是否还会出现15秒后停止的情况;
    • 检查模拟器的初始配置参数,比如模拟的GPS信号强度、风速设置,有些默认参数可能在一段时间后触发自动悬停逻辑,导致飞行器减速。
  • 排查系统权限与DJI会话状态
    即使硬件和SDK没变更,系统层面的权限或DJI后台会话可能出了问题:

    • 确认设备的USB权限、位置权限是否正常授予,有时候系统权限临时失效会打断SDK和飞行器的通信;
    • 检查DJI GO App是否在后台保持活跃,部分场景下DJI GO的会话过期会影响SDK模拟器的正常运行。
  • 通过日志定位具体异常
    抓取SDK调试日志是最直接的排查手段:

    • 开启DJI SDK的调试日志,重点关注飞行器减速前后的日志内容,看是否有Simulator相关的错误码(比如ERROR_CODE_SIMULATOR_DISCONNECTED),或者飞行控制器的状态变更通知;
    • 实时监听FlightControllerState,在飞行器减速时查看flightModevelocity等参数的变化,判断是主动停止还是触发了安全机制。
  • 用最小化代码复现问题
    排除业务逻辑干扰,验证核心功能:

    • 编写一个只包含创建simulator、循环发送虚拟摇杆指令的极简代码,看是否还会出现同样的问题;
    • 如果极简代码正常运行,说明是原有代码中其他模块(比如线程阻塞、资源占用过高)影响了模拟器的运行。

内容的提问来源于stack exchange,提问作者Michael Couck

火山引擎 最新活动