ArduPilot飞控开源代码之滤波设置

news2024/11/17 15:40:25

ArduPilot飞控开源代码之滤波设置

  • 1. 源由
  • 2. 原理
  • 3. 调优
    • 3.1 ACC低通滤波 INS_ACCEL_FILTER
    • 3.2 GRYO低通滤波 INS_GYRO_FILTER
    • 3.3 陷波滤波 INS_HNTCH_ENABLE & INS_HNTC2_ENABLE
  • 4. 总结
  • 5. 参考资料

1. 源由

对于飞控传感器来来说,振动噪声也是数据。
单纯从数据角度看,和为了控制而必须补偿的干扰(例如风、湍流、控制链路斜率等)类似。
如果这些振动噪声进入系统,那么将会影响姿态控制回路的最佳调谐,导致性能下降。

为了更好的性能输出,获得最有的PID参数,必须从逻辑角度,根据特性对噪声进行识别和去除,调优步骤如下:

  1. 从硬件上减小噪声(减震、机架强度、IMU避震海绵等等)
  2. 从软件上过滤噪声(数字低通、带通滤波)
  3. 调整PID姿态控制回路性能(PID适配)

鉴于硬件选用了DIY的Mark4机架上的整体硬件,且之前在Betaflight上都正常飞行过。其性能参考:BetaFlight Mark4 H7 Dual270 + BN880 + CRSF 配置存档。

在硬件不变更的情况下,滤波设置是后续调整PID性能的基础。

2. 原理

ArduPilot为噪声提供了两种滤波器:

  • INS_ACCEL_FILTER控制的加速度计信号低通滤波器,以及INS_GYRO_FILTER控制的陀螺仪信号低通滤波器。
  • INS_HNTCH_ENABLE和INS_HNTC2_ENABLE控制的谐波陷波滤波器。

对于多旋翼模型来说,实际上所有的振动都源于电动机的旋转频率。ArduPilot支持两个陷波滤波器,其滤波器频率可以与电机的电机旋转频率相关联,并提供初级频率及其谐波的陷波。

虽然低通滤波器可以有效地减少噪声的影响,但低频设置滤波点会产生大量的相位滞后。从姿态控制的角度来看,会有迟滞感。

启用谐波陷波滤波器中的一个或两个来针对电机产生的噪声,配合低通滤波,从而实现更紧密的调谐。

3. 调优

目前,手头DIY Mark4的模型,其噪声在Betaflight上已经非常明确的给出了图谱,详见参考资料中【BetaFlight Mark4的“妖怪”声音分析】。

在频谱图上给出的峰值点:

  1. ~180Hz
  2. ~350Hz
  3. ~480Hz

从目前默认5寸ArduPilot参数情况看:

3.1 ACC低通滤波 INS_ACCEL_FILTER

维持系统默认参数,保持不变。
在这里插入图片描述

3.2 GRYO低通滤波 INS_GYRO_FILTER

默认5寸参数75Hz。

在这里插入图片描述

鉴于BF飞行情况,调整未250Hz。
在这里插入图片描述

3.3 陷波滤波 INS_HNTCH_ENABLE & INS_HNTC2_ENABLE

低通截止频率250Hz,因此在这之前只有一个180Hz左右的一个谐波噪声需要过滤。
在这里插入图片描述

鉴于目前H743的板子上,未看到bDshot协议反馈的RPM转速,ESC四合一电调板也不支持Telemetry。所以采用ArduPilot的FFT,最低中心频率从默认的100开始,3叶桨。

INS_HNTCH_HMNCS = 7 //1st/2nd/3rd harmonic
INS_HNTCH_FREQ = 120 //base center frequency in Hz
INS_HNTCH_MODE = 4 //Dynamic FFT
INS_HNTCH_BW = 60 //Harmonic Notch Filter bandwidth in Hz
INS_HNTCH_OPTS = 1 //Multi-Source

在这里插入图片描述

4. 总结

总体来说:

  1. 整体还是比较平稳;
  2. 控制有点“肉”,没有BF那套参数的相应快速;
  3. 猛推油门,有抬头后低头现象;
  4. 瞬时零油门,有抬头现象;

ArduPilot Mark4 5寸默认PID+滤波调参

ArduPilot Mark4 猛加油+松油门,抬头现象

后续可能需要继续改善的工作:

  1. 分析数据log,看下是否滤波OK;
  2. 进一步调整PID rate参数;
  3. 抬头现象的调参:ATC_THR_G_BOOST/ATCANG*_P;

5. 参考资料

【1】ArduPilot: imu notch filtering
【2】ArduPilot: vibration damping
【3】ArduPilot: measuring vibration
【4】ArduPilot: throttle based notch
【5】BetaFlight Mark4 H7 Dual270 + BN880 + CRSF 配置存档
【6】BetaFlight Mark4之“妖怪”声音
【7】BetaFlight Mark4之“妖怪”声音之二

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/611756.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yolov3

文章目录 前言一、主干网络darknet53二、从特征获取预测结果 前言 本文主要讲解yolov3的基本知识,如有错误请指出。 本文主要来自 博客1 博客2 一、主干网络darknet53 53是因为有53层。 1、darknet53没有使用pooling 来进行下采样,而是用一个33&…

电脑数据隐藏原因有哪些?电脑里隐藏的数据怎么恢复

电脑里隐藏的数据怎么恢复?电脑中的数据很容易被隐藏,这时候很多人可能会感到焦急和无助。不过不用担心,本文将为大家介绍三种方法,让你轻松找回被隐藏的数据! ※电脑数据隐藏原因有哪些 电脑数据可能会隐藏&#xf…

100天精通Golang:全面掌握Go语言的旅程

🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《I…

QLoRA:量化 LLM 的高效微调

此 repo 支持论文“QLoRA:量化 LLM 的高效微调”,旨在使对 LLM 研究的访问民主化。 QLoRA 使用bitsandbytes进行量化,并与 Hugging Face 的PEFT和transformers库集成。QLoRA 由华盛顿大学 UW NLP 小组的成员开发。 概述 我们介绍了 QLoRA&…

volatile - (C语言)

volatile关键字和const一样都是一种类型修饰符,用它修饰过的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者是其它线程等。 该关键字是不希望被编译器优化,从而达到稳定访问内存的目的。 示例代码: #include&…

FlinkUI和Flink常见问题解决

Flink 系统架构/Flink 作业提交运行的原理 我们编写的代码,对应着在Flink集群上执行的一个作业;所以我们在本地执行代码, 其实是idea开发环境中根据引入的依赖,先模拟启动一个Flink集群,然后把我们代码中定义好的操作,作为"作业",(job要打包好)然后将作业提…

双出口网络链路和设备双冗余案例

1、AR3模拟联通和电信运营商 2、2台防火墙vrrphrp双冗余,下联局域网vrrp 10.3.0.3地址,上联两条外线每条外线都分别vrrp虚拟一个地址1.1.1.1.和2.2.2.2.1。 3、防火墙外线地址和运营商给的外线地址不在同一个网段,每条都用vrrp冗余链路&#…

安装第三方库时的问题—复现带setup.py的项目

目录 题目分析: 正片开始: 题目分析: 事情的经过大致是这样: 今天在github上拿到一个处理时间序列的迁移学习项目的复现代码,项目文件如下所示: 或者我们来关注一下tl4sm这个文件夹里的东西&#xff1…

Tomcat的部署和优化(生命中的全部偶然,其实都是命中注定)

文章目录 一、Tomcat简介二、Tomcat 的构成三、Tomcat 功能组件结构四、Tomcat 请求过程五、Tomcat 服务部署六、Tomcat 虚拟主机配置七、Tomcat优化1.Tomcat 配置文件参数优化2.JVM优化 一、Tomcat简介 Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源…

【shiro】问题记录--为什么refreshToken方法走不下去

一、前言 最近做Jwt token续签的时候,在很多博客和下载的代码中,都是在JWTFilter中进行token的刷新,于是就按照了网上的代码进行尝试,代码如下: 1. 代码 在JWTFilter中的isAccessAllowed方法 目的:就是想…

STM32单片机RS485远程PID直流电机调速系统光电传感器

实践制作DIY- GC0137-RS485远程PID直流电机调速系统 基于STM32单片机设计-RS485远程PID直流电机调速系统 二、功能介绍: 主机:STM32F103C系列最小系统LCD1602直流电机光电测速MX15系列驱动模块4*4矩阵键盘RS485收发电路 从机:STM32F103C系…

Kubernetes配置管理

1. ConfigMap简介 Kubernetes ConfigMap是一种用于存储应用程序配置信息的对象。在企业中,我们通常会有许多不同的应用程序,每个应用程序都需要一些配置信息,例如数据库连接字符串、API密钥等等。这些配置信息可能会因为环境的不同而有所不同…

JavaSE进阶(day12,复习自用)

网络编程(通信) 网络通信三要素三要素概述、要素一:IP地址IP地址操作类-InetAddress要素二:端口号要素三:协议 UDP通信-快速入门UDP通信-广播、组播TCP通信-快速入门编写客户端代码编写服务端代码、原理分析 TCP通信-多…

30天从入门到精通TensorFlow1.x 第四天,TensorFlow中的计算图或数据流图

文章目录 一、接前一天二、计算图或数据流图1. 什么是计算图或者数据流图2. 为什么需要计算图或者数据流图3. 执行顺序和延迟加载在tf中的使用 一、接前一天 这几天主要学习了张量的创建方法,以及变量,变量命名域共享变量等概念。今天主要熟悉 数据流图…

网络隔离的生物制药企业,怎样实现安全的跨网文件交换?

在数字时代,生物制药企业结合现代技术追求和实现生物科技领域上的突破,研发及生产出更多满足人体健康需求的药物及医疗技术。由于生物制药企业,在进行某一领域的科研时通常周期较长、且涉及很多创新性成果,因此,科研数…

css:CSS 线性渐变linear-gradient

CSS 渐变使您可以显示两种或多种指定颜色之间的平滑过渡。 CSS 定义了两种渐变类型: 线性渐变(向下/向上/向左/向右/对角线)径向渐变(由其中心定义) 参考文档 CSS 线性渐变 https://www.w3school.com.cn/css/css3_…

访问学者带孩子去美国何时入境最好?

访问学者带孩子去美国入境的最佳时间会受到多种因素的影响,例如孩子的学校安排、访问学者的工作计划以及家庭的个人喜好。然而,以下是知识人网小编整理的一些常见考虑因素: 1. 学校假期:如果孩子正在就读学校,最佳时间…

uniapp 打包app wgt热更新和整包更新以及更新弹窗动画

app热更新是app项目最常见的功能,接下来我总结了当时做这个功能的过程,来交流学习一哈 热更新的流程步骤 在用户进入app就获取当前版本号与调用后端接口返回的版本号对比是否是最新的版本不是最新弹出弹窗让用户确认是否更新,点击更新下载w…

财务创造价值,如何降本增效?

一、整体成本管控理论 有财务人员可能认为这和我们财务有什么关系,这和财务管理也没有关系。我们经常提到的业务财融合以及成本BP,其实在这里面是需要发挥应有的价值的。如何理解这个问题?无论是老板还是财务人员,一是有财务管理…

2023年测试人前景归途?我主攻自动化测试拿到了25k的offer...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…