飞控迭代2.0
编辑飞控端:我们的系统的飞机状态更新是由状态机实现的。通过循环更新状态码指定飞机的状态,并由遥控与应急状态模块决定无人机下一次的飞机状态。飞控我们采用 MCU 是 Stm32H7 系列,我们对接了 mpu 九轴传感器,气压计 bmp280,光流计,并采用滤波(KALMAN 滤波,中值滤波),对于光流输出数据,我们加上低通滤波使其相位滞后,以达到与 mpu 与激光测距高度相位基本相同。飞控的核心在于 PID。我们对不同的飞行模式采用不同的串联方式。
遥控:我们采用角度环——角速度环,不断调整姿态,这样能更加快速响应遥控的指令。
悬停 + 视觉跟踪:我们采用位置环——速度环——角度环——角速度环四个串级 PID,能更加精确地实现悬停以及跟踪。
对于 PID 更新与姿态数据更新,我们采用中断的方式完成动作,这样能更加精确地确定更新时间,同时充分利用 MCU 的资源。
光流传感器:传输光流数据,得到像素位移,解算位移。
激光测距 + 气压计:混合定高,得到精确高度。
滤波器:对于不同数据采用不同滤波方式,从而得到更为平滑的数据。
遥控:输出预定高度,姿态角,飞行模式,参数设置。
PID 更新:采用相应参数,更新马力,通过 PWM 信号输出。
State 状态机:判断飞机状态与当前模式,从而指定下一个状态。
电机输出:PWM 波信号在状态机判断后输出给电机
画电路板
OpenMV 视觉颜色跟踪
心得
由于学业安排,时间紧任务重,周围没有相关先例可供参考,我们小组三人分工协作,分配负责飞控编写,遥控传输,OPENMV 视觉模块。我们小组抽空自行搜索网上资料,学习一些知识教程,每周进行会议来汇报各自工作进度与困难,并进行对接工作。之后在未进行上机之前完成了初步调试工作。在完成学业安排后我们立即线下调试。组装后发现有许多模块与代码编写之处有不少漏洞与错误,同时发现软件与硬件之间存在很大的鸿沟。在遥控代码编写进行测试时我们发现在进行 WIFI 通信上存在数据顺序错误,读取错误问题,在故障排除上我们花去不少的时间去寻找,但是错误修复却十分迅速;在 PID 进行调参上,我们花费大量时间,整个无人机系统是开环与闭环混合系统,容易使系统不稳定。加上我们没有先前调参经验与建模能力,我们调参效率低下,严重拖累后续调试进度。在视觉模块下,我们发现 OPENMV 不能达到一个十分理想的水平,容易丢失捕捉内容,输出错误等问题。进行模块组装时候,发现我们一些方案设计上是有漏洞的,有些细节并没有考虑清楚,导致分配组装时产生许多问题,配重不合理,电线排布杂乱,调试设备不符合我们的需求等。不过收获也颇多。总之,如果还有机会,可以继续完善!
- 3
- 1
-
分享