使用DJI Onboard SDK进行降落伞部署

时间:2018-07-12 11:19:54

标签: dji-sdk

我正在研究是否可以使用OSDK通过车载计算机自动部署降落伞来检测紧急情况。为了清楚起见,请参见this block diagram of my setup

我们正在使用DJI N3飞行控制器。 为了部署降落伞,我们需要确保转子停止转动,以避免缠结和危险的缠结

我尝试过的事情:

我一直在尝试找出N3何时停止电机以触发降落伞,并发现它会在以下两种情况下发生:

  1. 手动解除无人机的武装(无论飞机是在地面上还是在飞行中)
  2. 如果它正在飞行并且对其施加了极大的侧倾角

在两种情况下,广播数据“飞行状态”的“飞行”字段均设置为0(已停止)。

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

按照这种假设,我对OBC进行了编程,以检测从2(IN_AIR)到0(STOPPED)的直接过渡而无需经过1(ON_GROUND)。

结果是(几乎)如预期的那样:当N3由于异常情况在飞行中撤防时,电动机将停止运转并且降落伞已展开。这也可以由飞行员通过执行相应的CSC手动完成。

但是,我们发现此解决方案的问题是,在大多数情况下,正常着陆后,“飞行状态”字段会直接从2(飞行)转换为0(停止) )诱使OBC认为需要部署降落伞。请参阅Attached image,这是DJI数据查看器绘制的飞行日志数据的摘录。

我认为依靠报告的海拔不是一个可靠的解决方案,因为我们一直观察到非常不可靠的读数,所以我的问题是:

  • 是否有更好/更可靠的解决方案?
  • 使用智能档位信号检测低海拔高度是否对您有好处? (我们的起落架是固定的)
  • 有什么想法吗?

谢谢!

编辑:

我错了,显然是确实通过了ON_GROUND。 But just for a split millisecond。控制器在ON_GROUND状态下仅花费0.02 s。鉴于我的飞行状态的广播速率是50 Hz,因此OBC很容易错过这一频率。我将尝试将广播速率提高到100 Hz。

编辑2:

新发布的OSDK 3.7似乎提供了一种在飞行中检测异常情况的方法,并且确实提供了新的API以在空降时停止电动机...我将尝试一下。

1 个答案:

答案 0 :(得分:0)

我用OSDK实现降落伞部署的方式与您不同

软件

首先,我在无人机上安装了一组传感器,其中包括IDS 1221摄像机/矢量Nav IMU和3D LIDAR。

在后端,我将使用传感器和控制输入来估算基于视觉激光惯性的里程/状态估算。

如果无人机位置输出与输入控件的差异太大(状态估计方差大于阈值)超过N秒。

这意味着无人机没有保持其位置/速度命令,因此被视为流氓,应该被杀死。

硬件

在硬件部分,我设置了以下连接

电源输入-> A3->电动机切断继电器-> ESC->电动机

电源输入-> NUC +附加传感器-> PWM->电动机切断继电器

输入电源-> NUC-> PWM->溜槽

NUC通过PWM控制继电器。一旦检测到较大的差异,执行电动机功率切断并部署滑槽