(7)自动调优

news/2024/7/10 22:22:37 标签: 开源, 无人机, 调优, Copter, ArduPilot

文章目录

        前言

1 在自动调优模式下飞行前的设置

2 如何调用自动调优

3 在位置保持下调用自动调优

4 如果自动调优失败

5 补充说明

6 常见的问题

7 Dataflash日志记录

8 地面控制站消息


前言

AutoTune 试图自动调优稳定P速率P和 D,以及最大旋转加速度,以提供最高的响应,而没有明显的过冲。在尝试使用自动调优之前,旋翼飞机需要在 AltHold 模式(AltHold mode)下"基本"可以飞行,因为该功能需要能够在横滚和俯仰轴上"旋转"旋翼飞机。


Warning

AutoTune 并不总是能够为飞行器确定一个好的调优,可能会导致增益,导致飞行器无法飞行,可能会崩溃。在尝试使用 AutoTune 之前,请遵循调优过程说明(Tuning Process Instructions)。在遵循这些说明,并评估了你的初始调优后(evaluated your initial tune),应该尝试 AutoTune

有一些问题会妨碍 AutoTune 提供一个好的调优,包括:

  • 强风;
  • 高水平的陀螺仪噪音;
  • 由于 MOT_THST_EXPO 的值不正确而导致 ESC 的非线性响应;
  • 灵活的框架或有效载荷支架;
  • 过于灵活的振动隔离支架;
  • 对 MOT_SPIN_MIN 的设置非常低;
  • 超载的螺旋桨或电机。

1 在自动调优模式下飞行前的设置

1. 将一个飞行模式开关位置设置为 AltHold

2.RC 通道辅助功能开关(Auxiliary Function)或辅助功能开关(Auxiliary Function Switch)(4.0 版之前)设置为自动调优,以允许你用开关打开/关闭自动调优

Note

你也可以将 AUTOTUNE 飞行模式设置为飞行模式开关上的一个模式,以激活自动调优

3. 移除相机云台或其他可能在飞行中晃动的框架部分。

4. 使用 AUTOTUNE_AXES 参数选择你想调优的轴的组合(横滚、俯仰、偏航)。

5. 使用 AUTOTUNE_AGGR 参数设置自动调优的积极性(0.1 = 积极,0.075 = 中等,0.050 = 较弱),通常以默认的 0.1 开始。

6. 对于大型旋翼飞机(螺旋桨直径至少为13英寸33厘米),将速率横滚和俯仰滤波器设置为 10hz,它们是 ATC_RAT_RLL_FLTT, ATC_RAT_RLL_FLTD, ATC_RAT_PIT_FLTT, ATC_RAT_PIT_FLTD, (在 Copter-3.4 中它们是 ATC_RAT_RLL_FILT  和 ATC_RAT_PIT_FILT)。

7. 建议启用电池电压比例的 PID 增益(battery voltage scaling of PID gains)。

2 如何调用自动调优

1. 等待一个平静的日子,到一个大的开放区域。

2. 确保 ch7ch8 开关(如果使用的话)处于低电平位置。

3. 起飞后,在一个舒适的高度上将旋翼飞机置入 AltHold 模式。

4. 面对飞行器,使其与风吹的方向成 90 度旋转(即如果先调优横滚轴,则将飞行器指向风中)。

 5.ch7/ch8 开关设置到高位,或切换到 AUTOTUNE 模式,以进行自动调优

  • 你会看到它左右旋转大约 20 度,持续几分钟,然后它将重复向前和向后;
  • 在任何时候使用横滚和俯仰杆来重新定位旋翼飞机,如果它漂移了(在重新定位和测试之间它将使用原来的 PID 增益)。当你松开摇杆时,它将继续自动调优它的位置;
  • ch7/ch8 开关移到 LOW 位置,如果使用 AUTOTUNE 飞行模式,可随时改变飞行模式,放弃自动调优,回到原始 PIDs
  • 确保你的发射机上没有任何微调设置,否则自动调优可能无法得到摇杆居中的信号。

6.调优完成后,旋翼飞机将变回原来的 PID 增益。

7.ch7/ch8 开关放置 LOW 位置,然后再回到高位,测试调优PID 增益,如果使用 AUTOTUNE 飞行模式,则切换出来,然后再回到该模式中。

8.ch7/ch8 开关放置 LOW 位置,或者切换出 AUTOTUNE 飞行模式,使用原来的 PID 增益飞行。

9. 如果你对自动调优PID 增益感到满意,让 ch7/ch8 开关保持在高位,或者切换回自动调优飞行模式,降落后加锁,永久保存 PIDs。如果你不喜欢新的 PID,请将 ch7/ch8 切换到低电平或退出自动调优飞行模式,以返回到原始 PID。当你加锁时,增益将不会被保存。

如果你在执行自动调优后发现,在 StabilizeAltHoldPosHold(但在更多的自主模式下,如 LoiterRTLAuto,也可以)飞行时,飞行器感觉过度抽搐,可以尝试将 ATC_INPUT_TC 参数增加到 0.25。这将使飞行员的输入更加平滑。或者尝试减少 AUTOTUNE_AGGR 参数(它应该总是在 0.050.10 的范围内)并再次尝试。

如果飞行器在自动调优后感觉不顺畅,可尝试将 AUTOTUNE_AGGR 参数提高到 0.10,并再次尝试自动调优

3 在位置保持下调用自动调优

Warning

通过上述从 AltHold 调用 AutoTune,而不是从 LoiterPosHold 调用,往往可以获得更好的调优效果,如下文所述。使用 AUTOTUNE 飞行模式也有这个可能的缺点。

如果在进行自动调优时,从 LoiterPosHold 飞行模式(与 AltHold 相反)调用,自动调优会执行一个弱位置保持。如果使用 AUTOTUNE 飞行模式,也会使用这种弱位置保持。

  • 飞行器将向一个"目标点"缓缓倾斜(最多 10 度),该目标点最初被设定为调用 AutoTune 时的飞行器位置;
  • 飞行员可以使用横滚、俯仰、偏航或油门杆来重新定位飞行器。目标位置将在飞行员释放横滚和俯仰杆的那一刻被重置为飞行器的位置;
  • 高度是通过高度保持控制器来保持的,所以当摇杆放在 10% 的中油门上时,飞行器将试图保持其当前高度。它将以 2.5m/s 的速度爬升或下降(这个速度可以通过 PILOT_SPEED_UP 和 PILOT_SPEED_DN 参数调整)。用于建立这些速度的加速度是由 PILOT_ACCEL_Z 设置的;
  • 为了与风向垂直地旋转,飞行器在漂移到离目标地点 5m(或更远)的时候,可能会突然向任何一个方向旋转,最多 90 度;
  • 如果风小或没有风,飞行器的温和位置控制可能意味着它来回移动,在目标点周围打乒乓,每次离目标超过 5m 就改变偏航。在这种情况下,恢复更简单的基于 AltHold 的自动调优可能会更舒服。

4 如果自动调优失败

如果自动调优失败,你将需要进行手动调优

自动调优成功的一些迹象是(除了 DataFlash 日志和地面控制站信息):

  • ATC_ANG_PIT_P 和 ATC_ANG_RLL_P 的数值增加;
  • ATC_RAT_PIT_D 和 ATC_RAT_RLL_D 比 AUTOTUNE_MIN_D 大。

AutoTune 将试图把每个轴调优到飞机可以容忍的范围内。在一些飞机上,这可能是不必要的反应。对于大多数飞机来说,这是一个指南:

  • ATC_ANG_PIT_P 应从 10 减至 6
  • ATC_ANG_RLL_P 应从 10 减至 6
  • ATC_ANG_YAW_P 应从 10 减至 6
  • ATC_RAT_YAW_P 应从 1 减至 0.5
  • ATC_RAT_YAW_IATC_RAT_YAW_P x 0.1

只有在 AutoTune 产生更高的值时,才应该改变这些值。小型特技飞机可能更愿意保持这些值尽可能高。

5 补充说明

Copter-3.3(和更高版本)中,AutoTune 可以被设置为一种飞行模式。进入或退出 AutoTune 飞行模式的反应与提高或降低 ch7/ch8 辅助开关的高分配 AutoTune 功能相同。

AUTOTUNE_AXES 允许控制哪些轴要被调优。如果飞行器的电池寿命不够长,无法完成所有 3 轴的调优,这就很有用。"1"=调优横滚,"2"=调优俯仰,"4"=调优偏航。把这些数字加在一起,就可以在一次训练中调优多个轴(例如,"7"=调优所有轴)。

AUTOTUNE_AGGR:应该在 0.050.10 之间。更高的值会产生更积极的调优,但有时会导致增益过高。更具体地说,这个参数控制 D 项反弹和 P 项过冲的阈值。这影响到调优的抗噪能力(较高的值对框架中的弯曲或其他可能欺骗调优算法的干扰更宽容)。高值也会导致调优更好地拒绝外部干扰。较低的值会导致调优对飞行员输入的反应更灵敏。

可由自动调优更新的参数的完整列表:

  • 横滚角度 P 增益:ATC_ANG_RLL_P
  • 横滚速率 PID 增益:ATC_RAT_RLL_P, ATC_RAT_RLL_I, ATC_RAT_RLL_D
  • 横滚最大加速度:ATC_ACCEL_R_MAX
  • 俯仰角度 P 增益:ATC_ANG_PIT_P
  • 俯仰速率 PID 增益:ATC_RAT_PIT_P, ATC_RAT_PIT_I, ATC_RAT_PIT_D
  • 俯仰最大加速度:ATC_ACCEL_P_MAX
  • 偏航角度 P 增益:ATC_ANG_YAW_P
  • 偏航速率 PID 增益:ATC_RAT_YAW_P, ATC_RAT_YAW_I, ATC_RAT_YAW_D
  • 偏航速率滤波器:ATC_RAT_YAW_FLTT, ATC_RAT_YAW_FLTE(在AC3.6: ATC_RAT_YAW_FLT)
  • 偏航最大加速度:ATC_ACCEL_Y_MAX
  • 横滚和俯仰轴速率前馈已启用:(ATC_RATE_FF_ENAB)

在你调优好之后,你可能希望把 ATC_THR_MIX_MAX 增加到 0.9(默认是 0.5),以提高姿态控制的优先级,而不是油门。这可以减少在AltHold中有时看到的俯仰过冲(特别是在有大螺旋桨的旋翼飞机上),如果飞行器在执行快速向前飞行后突然减速。在这种情况下,风从螺旋桨下刮过,提供了升力,但也扰乱了飞行器的姿态,导致油门和姿态控制之间的冲突。增加这个参数值的危险在于,如果后来速率增益提高到如此之高,以至于飞行器严重振荡,那么飞行器可能很难下降(因为它将优先考虑试图纠正姿态振荡,而永远不会充分减少油门)。

AutoTune 可以要求对电机的输出进行非常大和快速的改变,这可能导致 ESC 的同步问题,特别是当使用 SimonK 固件和/或低 KV 的电机(低于 500KV)。请看这个视频,其中显示了一个测试(video showing a test),它再现了一个同步问题。

为了达到最佳效果,不应该让飞行器建立起过高的水平速度。这可以通过在测试之间进行快速修正(抽动)来阻止飞行器飞得太快。

请注意,自动调优将从自稳模式开始,所以在你进入 AltHold 并准备开始程序之前,不要意外地翻开你的自动调优开关。

一般来说,对于俯仰和横滚,PI 应该相等,D 应该是 P1/10。对于偏航,I 应该是 P1/10D = 0,在大多数情况下。

6 常见的问题

如果飞行器即使在自动调优模式下也不会开始调优(即不会抽动),那么问题很可能是横滚、俯仰、偏航或油门杆没有完全在中间。将 RC1_DZRC2_DZRC3_DZ 和 RC4_DZ 增加到 50(或更高),可能有助于增加 RC 输入的死区。

如果自动调优产生了一个过度抽动的飞行器,尝试减少 AUTOTUNE_AGGR 参数(不应低于 0.05)并再次执行自动调优

如果自动调优产生的飞行器不稳定,尝试增加 AUTOTUNE_AGGR 参数(不应超过 0.1)并再次执行自动调优

Tip

当报告 AutoTune 的问题时,请包括对你的框架描述和飞行的数据闪存记录。

7 Dataflash日志记录

ATUN(自动调优概述)和 ATDE(自动调优细节)信息被写入数据闪存日志中。这些信息内容的一些细节可以在 Mission Planner 的下载和分析数据日志(Downloading and Analyzing Data Logs in Mission Planner)维基页面上找到。

8 地面控制站消息

对于每个轴来说,有几个阶段的调优。速率 PID 首先被调整,然后是角度参数。这些阶段的进度信息被发送到 GCS(并记录在 Dataflash 日志中)。

调优期间的典型顺序可能是:

09:09:33       AutoTune: Twitch

09:09:34       AutoTune: (P) Rate P Up\

09:09:34       AutoTune: WFL (Rate(P)) (15.13040 > 10.00000)

09:09:34       AutoTune: p=0.052298 d=0.005232

09:09:34       AutoTune: success 1/4

这是在 Pitch Rate P 的调整过程中,表明一个抽动即将发生,因为 P 正在尝试增加 0.052298 的值,但首先它在等待,直到它从上一次抽动回到水平(WFL = 等待水平),然后它报告说这次抽动的结果在目标范围内,并且成功了。但这必须连续发生 4 次,才能进入下一个阶段。

Note

在YAW速率调优阶段,信息将显示"d"的值,该值不是 ATC_RAT_YAW_D,通常为 0,而是 ATC_RAT_YAW_FLTE 的值,即正在变化。

任何时候,当这个过程被飞行员摇杆的移动打断时,就会出现这个信息:

09:09:38       AUTOTUNE: pilot overrides active

如果你在自动调优模式下停止调优并加锁,并且一个轴的调优已经完成,你将得到一条消息,显示该轴的新增益已经被保存。如果没有这样的信息,但认为你至少完成了一个轴,那么你可能在没有进入自动调优模式时加锁,实际上并没有保存它们。

09:19:48       AutoTune: Saved gains for Pitch

Tip

如果你不小心在非自动调优状态下加锁了一个会话的自动调优值,你可以检查它在调优过程中发送的 GCS 信息的数据闪存日志,并在工作台手动设置它们。


http://www.niftyadmin.cn/n/424245.html

相关文章

SIMD加速矩阵运算

一、SIMD指令简介 SIMD的全称叫做,单指令集多数据(Single Instruction Multiple Data)。最直观的理解就是,向量计算。比如一个加法指令周期只能算一组数(一维向量相加),使用SIMD的话&#xff0…

Dockerfile创建镜像

一、Docker镜像的创建 创建镜像有三种方法,分别为【基于已有镜像创建】、【基于本地模板创建】以及【基于Dockerfile创建】。 1.1 基于现有镜像创建 (1)首先启动一个镜像,在容器里做修改docker run -it centos:7 /bin/bash …

仿交易猫链接 跳转APP功能

最新仿交易猫假链接,带有跳转APP功能 下载程序:https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

MapReduce基础

函数式编程概念MapReduce程序是设计用来并行计算大规模海量数据的,这需要把工作流分划到大量的机器上去,如果组件(component)之间可以任意的共享数据,那这个模型就没法扩展到大规模集群上去了(数百或数千个节点)&#…

pyecharts使用案例二——全国疫情可视化地图开发

代码 import json from pyecharts.charts import Map from pyecharts.options import *f open("./疫情.txt", "r", encoding"UTF-8") data f.read()f.close()# 取到各省份数据 # 将json字符串转为python字典,反序列化 data_dict json.loads(…

5.Java内存模型之JMM

Java内存模型之JMM 5.1 先从大场面试开始 你知道什么是Java内存模型JMM吗? JMM和volatile他们两个之间的关系? JMM没有那些特征或者它的三大特征是什么? 为什么要有JMM,它为什么出现?作用和功能是什么? hap…

NLP学习笔记六-lstm模型

NLP学习笔记六-lstm模型 上一篇我们讲的是simple RNN模型,那么其实lstm模型更像是simple RNN模型的改进或者变种。 对于lstm模型,我们先看下面一张图: 其实lstm模型的思想是建立在simple RNN模型上的,但是要更加贴近于显示&…

spring中使用retry进行接口重试

spring中使用retry进行接口重试 需求依赖org.springframework.retry.annotation.Retryable注解详解方法中使用 需求 由于之前生产系统多服务不定时的重启(服务都是集群,所有生产环境的业务还能正常进行),导致系统中的业务状态同步…