首页 文章

强制osdk以100%保证的方式返回控制权限

提问于
浏览
1

我正在为matrice 600 pro开发osdk软件 .

它现在处于调试阶段,因此无人机经常失控 . 当我确认无人机意外移动时,我必须强制osdk尽快将控制权返回给遥控器 .

我总是通过改变遥控器的飞行模式开关(P-> F F-> P)来做到这一点并且它运行良好 .

但是这一次,当我运行我的osdk程序大约5分钟时,我确认无人机移动了意想不到的方向,我尝试改变飞行模式开关(P-> F F-> P几次),但无人机仍然失控,最后它坠入了木柱,两个螺旋桨和一个马达被打破了 .

我该怎么办?有没有什么好方法可以强制osdk以100%保证的方式返回控制权限?这是关键部分,我必须对此做些什么 .

我不能使用模拟器进行调试,因为有些传感器连接到机载计算机,我无法在室内测试它们 .

2 回答

  • 1

    您可以通过自己监视模式开关的状态并在状态更改时显式释放控制权限,为代码添加额外的安全层 . 例如 - 在单独的线程中,您可以从TOPIC_RC订阅数据轮询模式切换的值 . 如果值切换,您可以从此线程发送 releaseCtrlAuthority() 命令或在主控制循环中设置一个停止发送控制命令的标志 .

    也就是说,模式切换开关应始终有效,这似乎是固件中的错误而不是其他任何错误 . 请在DJI dev支持下提出错误报告 .

  • 1

    我和Matrice 600 Pro发生了类似的事件 . 检查您是否仍然使用DJI GO App设置了“启用多种飞行模式” . 如果未启用此开关,则飞行模式开关不会按预期工作,也不会更改模式,并且SDK不会输出任何内容以指示交换机已更改 .

    我们将此与单独的“安全监视器”结合使用,该安全监视器使用适当的DJI-SDK-ROS主题(/ dji_sdk / display_mode)释放对模式开关更改的控制,但仅当启用“启用多个飞行模式”时,发布的值才会更改在DJI Go应用程序中 .

相关问题