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

使用DJI Windows SDK虚拟遥控器控制Mavic 2 Pro无响应问题问询

Troubleshooting VirtualRemoteController Input Not Working with DJI Windows SDK (Mavic 2 Pro)

我之前在做DJI Windows SDK开发时,也碰到过和你一模一样的问题——自动起飞没问题,但虚拟摇杆发移动指令无人机就是纹丝不动。结合我的排查经验,给你几个大概率能解决问题的方向:

1. 别漏了激活和启动虚拟遥控器

自动起飞成功不代表虚拟遥控器已经处于工作状态!DJI的VirtualRemoteController必须先激活再启动,才能接收并转发摇杆指令。你可以在无人机连接成功后,加上这两步:

VirtualRemoteController virtualController = DJISDKManager.Instance.VirtualRemoteController;
if (virtualController != null)
{
    // 先激活虚拟遥控器(必须在无人机连接后执行)
    virtualController.Activate();
    // 启动遥控器,开始监听摇杆输入
    virtualController.Start();
}

建议你监听DJISDKManager.Instance.ConnectionProductChanged事件,确认无人机连接完成后再初始化虚拟遥控器,避免空指针或者激活失败的情况。

2. 检查飞行模式是否允许手动输入

自动起飞后无人机默认在P模式(定位模式),这个模式是支持摇杆指令的,但如果无人机不小心进入了智能飞行模式(比如航点、跟随),摇杆指令会被直接忽略。你可以先查一下当前飞行模式:

var flightController = DJISDKManager.Instance.Product.GetFlightController();
if (flightController != null)
{
    flightController.GetFlightMode((currentMode, error) =>
    {
        if (error == null)
        {
            Console.WriteLine($"当前飞行模式: {currentMode}");
            // 确保模式是P、G或者A这类支持手动摇杆的模式
        }
    });
}

如果是智能飞行模式,先退出该模式再发指令就好了。

3. 确认摇杆参数的顺序和映射没搞反

UpdateJoystickValue(throttle, roll, pitch, yaw)的参数顺序很容易搞混,而且DJI的摇杆方向定义要注意:

  • Roll:正值=向右横移,负值=向左横移
  • Pitch:正值=向前飞,负值=向后飞
  • Yaw:正值=向右转向,负值=向左转向
  • Throttle:正值=上升,负值=下降

你可以先测试极端值(比如把pitch设为1,其他都设为0),看无人机是否向前移动,这样能快速排除参数映射错误的问题。另外要确认你传的是浮点型的[-1,1]值,别不小心传了整数或者超出范围的数。

4. 摇杆指令要持续发送,不能只发一次

DJI无人机需要持续接收摇杆指令(至少10Hz的频率),如果只发一次指令,无人机只会动一下立刻回到悬停状态。你得用定时器或者循环一直发:

// 示例:用100ms间隔的定时器持续发送指令
var joystickTimer = new System.Timers.Timer(100);
joystickTimer.Elapsed += (_, __) =>
{
    if (virtualController != null && virtualController.IsStarted)
    {
        // 替换成你计算好的数值
        float throttle = 0f;
        float roll = 0f;
        float pitch = 0.5f; // 半速向前飞
        float yaw = 0f;
        virtualController.UpdateJoystickValue(throttle, roll, pitch, yaw);
    }
};
joystickTimer.Start();

哪怕是悬停状态,也要持续发全0的摇杆值,不然无人机可能触发失控保护。

5. 检查权限和无人机安全设置

  • 确认你的DJI开发者应用已经勾选了Flight Control权限,并且绑定了当前无人机的SN号;
  • 关掉无人机的新手模式:新手模式下无人机移动范围被锁,摇杆指令可能无效,你可以用DJI Go 4 app关闭;
  • 看一下GPS信号强度:P模式下需要足够的GPS信号才能执行移动指令,如果信号弱,无人机为了安全会保持悬停。

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

火山引擎 最新活动