本篇文章首发于公众号:无人机系统技术。更多无人机技术相关文章请关注此公众号
一、前言

前面的文章主要都是一些理论知识为主,很多读者朋友看了之后可能会有点枯燥,里面很多公式看起来也比较晦涩,今天起给大家讲一讲如何用开源飞控PX4飞好一架飞机,飞机主要以多旋翼和垂起固定翼为主。

使用开源飞控PX4来调试一套无人机是一个较为复杂的过程,不过前期的电机电调选型、桨叶的配套,电池的设计这些内容都不是我擅长的内容,如果有需求的话以后有机会请我专业的朋友给大家来写一写这方面的内容。我要写的内容主要是如何对飞控的参数进行调试以及如何根据数据分析来评价飞行器是否调试得当。

二、振动分析准备

在组装好飞机、飞控、电机电调、电池、桨叶等设备后,我们开始进行系统调试的第一件事当然不是测试振动情况了,而是确定飞行器的传感器、电机(舵机)极性、电压电流等工作正常,而第二件事情就是来测试飞行器的振动情况,而要测试飞行器的振动情况一般都需要将飞机飞起来。这里,大家可能会奇怪,飞控的参数都没调试,怎么能飞起来呢?其实是可以飞起来的,开源飞控的很多默认参数是可以让飞机平稳起飞的。不过为了保险起见,在起飞之前我们要对飞控参数做一定的修改,确保起飞后不会因为姿态发散而坠机,在初期测试振动时我们都是采用姿态增稳模式(Stablized)来飞行的。

第一步、将角速率环的所有D项参数都调成0,即MC_ROLLRATE_D、MC_PITCHRATE_D、MC_YAWRATE_D。

因为震动影响最明显的就是角速率和加速度信息,角速率的信号如果噪声过大,那作为D项的角加速度信号一定是不能再用做姿态反馈了,调成0可以避免飞机因为震动过大引起高频震荡而坠机。

第二步、等比例缩小角度环和角速率环的所有参数。

这是因为参数过大造成飞机震荡坠机是很正常的现象,而参数略小的情况下一般不会震荡发散,尤其是起飞后不做大动作的情况下,而我们初期试飞时可通过系留或者缓慢离地观察飞机的姿态是否震荡来判断参数是否过大。

第三步、更改参数SDLOG_PROFILE,将其中的highrate勾上。

在程序中,我们可以看到把highrate勾上之后会增加下图中的记录,而且是以最大频率来记录这些数据,这就方便我们之后对角速率、加速度以及控制输出信号进行傅里叶分析。

三、振动分析方法

所以,今天我们要讲的是如何分析一架飞机的振动情况,以及如何根据振动情况来调整飞控中相关的参数。飞行器的振动一向是非常令人头疼的事情,针对机型来讲的话,一般情况下直升机的振动最大,多旋翼次之,而固定翼飞机往往比较少存在这方面的问题。而针对动力系统分类的话,油动飞机比电动飞机的振动往往要大上几倍。而飞控中的陀螺仪和加速度计对噪声尤为敏感,恶劣的振动环境下它们无法正常工作,极易造成飞控的导航数据失效,带来严重的后果。

接下来,我们针对px4来着重阐述一下如何分析飞行器的振动特性,以及如何调试参数来减少振动带来的影响。首先,我们使用增稳模式飞行3-5分钟,然后使用flightreview分析工具导入数据,生成数据图表,有关振动问题我们主要分析以下四个图表:

控制输出FFT分析图:

三轴加计FFT分析图:

三轴陀螺仪FFT分析图:

加计功率谱密度:

上面这四张图是表现比较好的时候的图形,可以看到除了80hz附近由于桨叶转速频率引起的噪声之外,还有一个20hz的低幅振动。而通过控制输出FFT图可以看到80hz的频率基本上被滤除了。

那什么样的图形才算好的呢?一般情况下振动频率比较单一,振动幅值低,控制输出中没有高频信息,这就算比较好的振动特性了。

而比较差的振动特性就比如下图这样的:


甚至是这样的:

当然也可以结合加速度计的原始数据来分析,不过以上这几个图基本就可以反应一架飞机的振动好坏了。一般好的振动特性时,三轴加速度的原始数据值都会在很小的范围内波动,在±3范围内就是非常好的振动环境了:

四、调试策略

而通过分析飞行器的幅频特性有什么意义呢,一方面除了查看飞行器的振动特性好坏,另一方面也是为了对飞控中的滤波参数进行调试。飞控中跟振动有关的参数有两个:一个是IMU_GYRO_CUTOFF,这个参数是用于陀螺仪原始数据输出滤波的,滤波器是一个巴特沃斯二阶低通滤波,这个参数当然是要设置成小于振动主频率,但最好不好小于40hz,避免引入过大的延时。另外一个参数是MC_DTERM_CUTOFF,这就是角速率环D项的滤波参数,这个噪声更大,所以滤波参数选得较小,30hz基本满足大部分的飞机。这两个参数调试完成后再把角速率环的D项参数慢慢往上加,直到飞机出现小幅震荡后缩减到一半就可以了。

这里有一些应对振动的小方法,大家在遇到振动问题时可以参考:

确保所有设备安装牢固;

桨叶动平衡;

使用高质量的电机电调、桨叶;

自驾仪安装减震装置;

设计滤波器,调节滤波器参数。但这不是最好的方法,最好的方法是解决振动源的振动问题。

本篇文章首发于公众号:无人机系统技术。更多无人机技术相关文章请关注此公众号

PX4代码解析:振动分析相关推荐

  1. PX4代码解析(5)

    一.前言 我所讨论的PX4代码是基于v1.11版本,该版本与之前的版本有不少不同,其中一个比较大的区别在于新版本大部分用到了C++中模板,使得代码没有以前那么容易理解,因此我在后面介绍PX4的姿态估计 ...

  2. PX4代码解析(6)

    一.前言 上一节介绍了PX4姿态估计调用函数的流程,这一节分享一下我对PX4姿态解算的解读.首先,要理解PX4姿态解算的程序,要先从传感器的特性入手,这里主要介绍的传感器有加速度计,磁力计,陀螺仪. ...

  3. px4代码解析(3)

    前言 在使用PX4飞控时,我们难免要对其进行二次开发,例如修改控制算法,添加新的传感器,这时需要在代码中定义属于自己的消息.本节主要分享一下如何在PX4代码中添加自己的消息 一.消息添加与配置 从代码 ...

  4. PX4代码解析(1)

    前言 做pixhawk飞控有一段时间了,但在学习过程中遇到许多困难,目前网上找不到比较完整的PX4学习笔记,我打算结合自己理解,写写自己对PX4源码的理解,不一定对,只是希望与各位大佬交流交流,同时梳 ...

  5. PX4代码解析(4)

    一.引言 PX4程序是基于实时操作系统(Real-time operating system, RTOS)的上层应用程序,PX4飞控程序的很多重要模块都是在Nuttx操作系统的调度下运行的.因此,想要 ...

  6. PX4代码解析(2)

    前言 在大致了解PX4代码架构后,我们需要了解PX4的通信机制.在PX4代码架构中,每通信总线主要分为两个部分,一是内部通信总线uORB,即PX4内部进程通信采用的协议,例如PX4内部姿态控制需要获取 ...

  7. PX4代码学习系列博客(6)——offboard模式位置控制代码分析(之前转载过,这是第二次转载了)

    我刚刚发现这篇文章去年八月份的时候转载过一次了 https://blog.csdn.net/sinat_16643223/article/details/107874349 转载自:https://b ...

  8. 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )

    文章目录 一.PyCharm 中进行断点调试 二.ELFFile 实例对象分析 一.PyCharm 中进行断点调试 在上一篇博客 [Android 逆向]使用 Python 代码解析 ELF 文件 ( ...

  9. 基于单层决策树的adaBoost算法思想分析和源代码解析

    基于单层决策树的AdaBoost算法思想分析和源代码解析 前言: 上一篇SVM可是废了我好鼻子劲,这一篇咱们来点愉快的东西.我们一定听说过这句俗语:"三个臭皮匠,顶个诸葛亮!" 大 ...

最新文章

  1. python适合做后端开发吗-Python后端开发是什么职位?
  2. php循环输出标题,php-如何通过循环在同一标题下分组数据
  3. 比手工模型快10~100倍,谷歌揭秘视频NAS三大法宝
  4. 输入一个以回车结束的字符串,判断该字符串是否对称(正序与逆序相同,如aBc2cBa为对称字符串)
  5. Ubuntu环境下sublime3 nodejs安装与插件配置
  6. vue父子组件间传值(props)
  7. 第三篇:C++ 中的几种初始化
  8. PHP一个文件内多个php代码段的写法
  9. 身为程序员的我们......
  10. Ghost工具进行分区对拷(备份、迁移系统)
  11. 下载Cisco Packet Tracer 模拟器 含汉化教程
  12. 关于vscode CloudMusic 插件无法登陆
  13. Ubuntu 软件包管理 常用 apt 命令
  14. w10计算机右键管理,Win10右键菜单怎么管理
  15. 在现有Fabric 2.2.0 网络上设置和运行Caliper性能测试 实战
  16. 美化 PowerShell
  17. AutoCAD、Revit、Maya、3dsMax出现许可管理器不起作用
  18. 优酷土豆联姻 视频网站格局的几大猜想
  19. OpenCV开发笔记(六十五):红胖子8分钟带你深入了解ORB特征点(图文并茂+浅显易懂+程序源码)
  20. 【征文大赛】TiDB 社区第二届征文大赛,一次性带走社区全部新周边,还有bose 降噪耳机、倍轻松按摩仪等你拿!

热门文章

  1. Windows 的cmd怎么切换路径
  2. Redis 一定是单线程的进程吗?
  3. 谷歌GPB外链对网站排名有帮助吗
  4. 一文读懂基于Redis的Amazon MemoryDB数据库
  5. Unity3d鼠标与游戏物体的交互(方法体)
  6. 维基解密曝光CIA Marble框架:用于躲避取证人员的调查
  7. Windows msc文件
  8. Linux--Ubuntu入门篇(Ubuntu终端操作与Shell命令)
  9. 目标检测:FasterRCNN,RFCN和Light-RCNN的对比分析
  10. 微信小程序——在小程序自定义组件中获取元素定位及宽度