我可以使用OSDK来检测紧急情况,以便使用板载计算机自动部署降落伞 . 为清晰起见,请参阅this block diagram of my setup .

我们正在使用DJI N3飞行控制器 . In order to deploy a parachute we need to make sure that the rotors are stopped to avoid nasty and dangerous entanglements .

What I've tried:

我一直试图找出N3何时阻止电机在那一点触发降落伞,并发现它会在这两种情况下发生:

  • 手动解除无人机的武装(无论飞机在地面还是飞行)

  • 如果飞行并且施加极端滚动角度

在这两种情况下,广播数据“航班状态”将其“航班”字段设置为0(已停止) .

因此,我假设自然飞行状态转换为:0(停止)----- [臂] -----> 1(ON_GROUND)----- [起飞] ----> 2( IN_AIR)---- [土地] ---> 1(ON_GROUND)----- [撤防] ----> 0(停止)

按照这个假设,我已经编程OBC来检测从2(IN_AIR)到0(停止)的直接转换,而不通过1(ON_GROUND) .

结果(几乎)如预期的那样:当N3由于异常情况而在飞行中解除武装时,电动机停止并且降落伞展开 . 这也可以由飞行员通过执行相应的CSC手动完成 .

但是, the problem 我们're finding with this solution is that most of the times, upon normal landing, the Flight Status ' status'字段直接从2(飞行)过渡到0(停止),诱使OBC认为需要部署降落伞 . 请参阅Attached image,这是DJI数据查看器绘制的飞行日志数据的摘录 .

我相信依靠报告的海拔高度并不是一个强有力的解决方案,因为我们一直在观察非常不可靠的读数,所以 my questions are:

  • 有更好/更可靠的解决方案吗?

  • 使用智能齿轮信号检测低空在这里有什么好处吗? (我们的起落架是固定的)

  • 任何想法?

提前致谢!

编辑:

我错了,显然它是 does 通过ON_GROUND . But just for a split millisecond . 控制器在ON_GROUND状态下仅花费0.02秒 . 鉴于我的航班状态的广播速率为50赫兹,OBC很容易错过 . 我会尝试将广播速率提高到100 Hz .

编辑2:

新发布的OSDK 3.7似乎提供了一种检测飞行中异常情况的方法,并提供了一种新的API来阻止空中飞行的电机......我会试一试 .