实机六旋翼断桨测试过程中出现的问题
其中,我注意到了下面的事实, motor5逐渐降低到0的过程中,motor6竟然直接变成了-1, 那么我这边就有问题要问了,我的CA_MOTOR_FAIL_ID是5, 为什么变成0的是Motor 6?, 而Motor5为什么在变成0-之后, 频繁在0和1之间跳跃?上面这幅图中, 我们可以看到, 当CA_MOTOR_FAIL_EN = 1时, 断桨算法开始起作用,motor5将为最低, 同时其它电机
在上面的图中, 当飞控检测到Motor failure detected之后, 又来了一个Flight termination active的警告, 这个警告使得飞机电机输出将为0.
上面这幅图中, 我们可以看到, 当CA_MOTOR_FAIL_EN = 1时,CA_MOTOR_FAIL_ID = 6 断桨算法开始起作用, motor6输出将为-1,motor5相应减小。 同时其它电机为了维持飞机现状, 而加大输出。
其中,我注意到了下面的事实, motor5逐渐降低到0的过程中, motor6竟然直接变成了-1, 那么我这边就有问题要问了, 我的CA_MOTOR_FAIL_ID是5, 为什么变成0的是Motor 6? , 而Motor5为什么在变成0-之后, 频繁在0和1之间跳跃?
我这边先看看仿真时候是什么样子的,
首先没有出现flight termination detected
仿真将CA_MOTOR_FAIL_ID = 5生效后, motor5的动力直接变成-1, 而6减少, 当ca_motor_fail_en=0后, 所有电机输出正常。
motor5被设置成了-1, 而motor6相应低减小动力。
那么综合上述实飞和仿真的数据, 我们可以看到ca_motor_fail_id是几, motor几就会被设置成-1, 实飞和仿真时一样的。 但是motor5的变化是不相同的, 实飞的时候, 同等比例减少输出的那个电机仿真的时候输出很平稳, 但是在实际飞行的时候, 在0和最大之间反复横跳。
实际飞行过程中, 当ca_motor_fail_en = 1时, 在算法运行大概3秒后, 所有电机的输出都同时减少到0, 这个问题也是我需要认证研究的。 我先看以下当电机减小的时候, 是不是因为flight termination的时候。
通过对无人机姿态的研究之后, 发现, 之所以输出变成0, 是因为3点03份的时候有一个kill出现,之所以kill是因为, 此时飞机的姿态是不稳定的。 从roll角度和pitch角度来看飞机是大幅抬头并且向左滚和水平之间的一个状态。
从代码上, 我需要看看flight termination active是从哪里来的。 我现在看一看代码。
actuator_armed_s actuator_armed;
if (_actuator_armed_sub.copy(&actuator_armed)) {
if (actuator_armed.force_failsafe || actuator_armed.manual_lockdown) {
/* EVENT
*/
reporter.armingCheckFailure(NavModes::All, health_component_t::system, events::ID("check_system_flight_term_active"),
events::Log::Critical, "Flight termination active");
if (reporter.mavlink_log_pub()) {
mavlink_log_critical(reporter.mavlink_log_pub(), "Preflight Fail: Flight termination active");
}
}
}
在checkAndReport()函数中, 有上面的代码。 可见, 是应为actuator_armed中的force failsafe还有manual_lockdown被设置成1了, 否则不可能进入到这个Flight termination active中。
那么我现在就看看一下, 这两个数值是几?
这里我查看了几个日志, 我这里把图贴一下, 然后给出结论, 之所以出现flight termination active, 是因为manual_lockdown北设置成1了, 而之所以manual_localdown被设置成1是因为飞控检测到了遥控器kill。
所以, 我这边可以不用再考虑Flight termination active得问题了。
更多推荐
所有评论(0)