固定翼前后快速晃动三次自动解锁并起飞

本文为《无人机飞控固件开发教程》系列视频的辅助资料,已经在“网易云课堂”上线视频链接:https://study.163.com/course/introduction/1209568864.htm?share=1&shareId=1448054983

无人机调试,飞控硬件定制、固件修改,日志分析,请QQ联系:3500985284

 本节课我们来实现一个有意思的功能:对于固定翼无人机(特别是小型飞翼类无人机),在takeoff模式下,将飞机前后晃动三次后自动解锁,抛飞后自动爬升到一定高度后开始盘旋,直到接收到遥控器或者地面站的其他指令。这个过程中不需要遥控器和地面站的干预,非常适合单人操作。

研发思路

1、对于飞控而言,前后晃动三下的特征是什么?

  • 先想一想大概该如何处理
    • 通过速度判断?但是手持飞机时,人对GPS天线的遮挡可能会导致GPS速度的跳变;
    • 通过加速度判断?可行。
  • 通过锁定情况下记录日志的功能测试前后晃动的数据特征(以本节课对应的视频教程中讲述的方法为准)
    • “LOG_DISARMED”参数设置为1,从而在锁定情况下也会记录日志;
    • 注意,如果是在室内测试,由于GPS可能没有定位,飞控无法获取UTC时间,日志的名称可能为“xx 1989-1-1 8-00-00.bin”,这是正常的。另外,当你使用USB连接飞控导出日志时,飞控又会产生一个日志,所以我们需要导出的是倒数第二个日志。

2、解锁时需要哪些控制逻辑与安全策略?

  • 使用一个参数控制是否启用此功能
  • 当前已经解锁,直接退出
  • GPS没有定位,直接退出
  • 延迟解锁,防止吓到飞手
  • 超时后自动进入初始状态

本节课的源程序链接:https://github.com/nufeichuiyun/ardupilot

对应的git分支:NFCY-Plane-Shake-ARM,大家切换到这个分支后注意不要忘记按照第一节课的方法更新子模块

3、起飞后的逻辑

 Takeoff模式是Plane-4.0.0版本开始有的飞行模式,飞机会自动以一定爬升角爬升到设定的高度,之后进入盘旋状态。这个过程中如下参数需要设置:

  • TKOFF_ALT:起飞后的目标高度
  • TKOFF_DIST:起飞后水平前飞距离。当飞机当前的高度到达TKOFF_ALT,并且与起飞点的水平距离大于TKOFF_DIST后,飞机将自动进入盘旋状态
  • TKOFF_LVL_ALT:此高度以下飞机将只使用陀螺来尽量保持航向,但是不保持绝对航向,高于此高度后,飞机将使用磁罗盘航向或者GPS输出的航向来锁头
  • TKOFF_LVL_PITCH:此参数定义了飞机处于TKOFF_LVL_ALT高度以下时的爬升角
  • WP_LOITER_RAD:盘旋飞行时的运动半径

4、如何测试

  • 晃动解锁与起飞后的逻辑分开测试
  • 晃动解锁功能直接进行实物测试,但是一定要将螺旋桨拆掉
  • 起飞后的逻辑通过模拟飞行测试
  • 两个步骤完全测通后,再进行外场飞行测试,注意随时切回手动控制模式(如FBWA模式)

5、测通以后,我发现了一个比较尴尬的问题

 好吧,之前粗心了,原来APM固件已经有这个功能了(ArduPlane/takeoff.cpp顶部的auto_take_check(void)函数)。这个功能白做了,但是这个研发的思路应该对大家还是比较有帮助的☺


本文为《无人机飞控固件开发教程》系列视频的辅助资料,已经在“网易云课堂”上线, 链接如下:

https://study.163.com/course/introduction/1209568864.htm?share=1&shareId=1448054983

无人机调试,飞控硬件定制、固件修改,日志分析,请QQ联系:3500985284

京ICP备19049723号   |   京公网安备 11010502039327号