强制osdk以100%保证的方式退还控制权

时间:2018-09-07 02:34:40

标签: dji-sdk

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

现在处于调试阶段,因此无人机通常会变成 失控。当我确认无人机意外移动时, 我必须强迫osdk将控制权返回给 遥控器。

我总是通过更改遥控器的飞行模式开关(P-> F F-> P)来做到这一点,并且效果很好。

但是这次,当我运行osdk程序大约5分钟时, 然后我确认了无人机的方向变化 我试过几次更改飞行模式开关(P-> F F-> P),但无人机仍然失控,最后它撞到了木柱上,两个螺旋桨和一个电动机坏了。

我该怎么办? 有什么好的方法可以迫使osdk返回控制  授权以100%保证的方式返回? 这是关键部分,我必须为此做些事情。

由于某些传感器,我无法使用模拟器进行调试 已连接到车载计算机,我无法在室内对其进行测试。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我与Matrice 600 Pro发生了类似的事件。使用DJI GO App检查您是否仍然设置了“启用多种飞行模式”。如果未启用此开关,则飞行模式开关将无法正常工作,将无法更改模式,并且SDK不会输出任何表明该开关已更改的信息。

我们将其与单独的“安全监视器”结合使用,该监视器使用适当的DJI-SDK-ROS主题(/ dji_sdk / display_mode)释放对模式切换的控制,但仅在“启用多种飞行模式”时更改发布的值'已在DJI Go应用中启用。