我正在研究是否可以使用OSDK通过车载计算机自动部署降落伞来检测紧急情况。为了清楚起见,请参见this block diagram of my setup。
我们正在使用DJI N3飞行控制器。 为了部署降落伞,我们需要确保转子停止转动,以避免缠结和危险的缠结。
我尝试过的事情:
我一直在尝试找出N3何时停止电机以触发降落伞,并发现它会在以下两种情况下发生:
在两种情况下,广播数据“飞行状态”的“飞行”字段均设置为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以在空降时停止电动机...我将尝试一下。
答案 0 :(得分:0)
我用OSDK实现降落伞部署的方式与您不同
首先,我在无人机上安装了一组传感器,其中包括IDS 1221摄像机/矢量Nav IMU和3D LIDAR。
在后端,我将使用传感器和控制输入来估算基于视觉激光惯性的里程/状态估算。
如果无人机位置输出与输入控件的差异太大(状态估计方差大于阈值)超过N秒。
这意味着无人机没有保持其位置/速度命令,因此被视为流氓,应该被杀死。
在硬件部分,我设置了以下连接
电源输入-> A3->电动机切断继电器-> ESC->电动机
电源输入-> NUC +附加传感器-> PWM->电动机切断继电器
输入电源-> NUC-> PWM->溜槽
NUC通过PWM控制继电器。一旦检测到较大的差异,执行电动机功率切断并部署滑槽