25B无人直升机调试(Tuning)

要知道的直升机原理
首先要掌握的5个飞行模式 本文首先调试自稳模式
Stabilize 自稳模式
Alt Hold 定高模式
Loiter (& OF_loiter) 悬停模式
RTL (Return-to-Launch) 返航模式
Auto 自动模式

Acro 特技模式
Sport 运动模式
Drift 漂移模式
Guided 导引模式
Circle 绕圈模式
Position 定点模式
Land 着陆模式
Follow Me 跟随模式
Simple and Super Simple 简单(超简)模式


从零开始你的无人直升机:

1.安装mission planner地面站
2.下载、编译、烧写Ardupilot源码 (一)(二),pixhawk飞控出到2代了,用源码编译上传时别传错版本,或者直接下载固件(用AC3.6.4 AP3.9.4,AC3.67 AP3.9.7,AC3.6.6 别的版本heli setup page是灰的)
3.确定使用的硬件,雷迅m8n GPS+罗盘模块,XBee电台microhard PICO900(P900)电台FUTABA CGY750陀螺仪,无线电遥控,减震器等等,并正确连线
4. 校准硬件
5. 调参
6. 日志分析官方教程
7. 自动调参


25B直升机参数
机体参数

长/宽/高(mm)1778/508/711
主旋翼直径:2146mm
尾旋翼长:403mm
净重:16.12kg
引擎参数
引擎模式:日本ZENOAH风冷双缸水平对置发动机
排气量:80cc
输出功率:7匹
启动方式:外置电启动器
使用燃料:汽油+润滑油混合
性能参数

续航时间:50-55分钟
最大燃料容量:3.84升(可随载荷情况自行改装)
最大有效载荷:11.5kg(满3.84L油料情况下)
飞行速度:0~80km/h
飞行高度:2400m(注意法定限高)

航模直升机按尺寸分级
450级最受欢迎,抗风性和价格都是最合适的,机长65cm,旋翼直径70cm。
700级是竞技机,机长140cm,旋翼直径150cm。


  • Ardupilot从3.4开始参数名和代码规模发生了改变,旧版本调试文档
  • 如果使用者要设置传统直升机的参数,请务必使用gcs中的全部参数表,不要使用为多旋翼准备的基本、扩展、高级调优界面, 这些界面会对直升机设置进行不必要的更改
  • 改完记得保存

调试顺序:
调试之前确定你的斜盘是水平的

  • 设置默认值(官网Tuning中已给出,或者看本文表格)
  • 调尾舵,将直升机悬停在离地面不超过0.25米的高度,将ATC_RAT_YAW_VFF设置成0.05,尾部不能稳定保持增大ATC_RAT_YAW_P(不建议高于0.38),发生快速振动时减小ATC_ANG_YAW_P(不建议低于3.5)
  • ATC_RAT_RLL/PIT_VFF(初值一般设0.15)和 ATC_ACCEL_P/R_MAX(根据直升机大小调)800-900级机器通常在36000-52000范围内;较小的450-500级机器通常在90000-110000范围内。stability模式悬停,比较日志中P.des与P(期望与实际值),R.des与R两对信号,如果实际速率大于期望速率,则需要降低VFF,如果是小於则增加VFF,如果你得到匹配的速率,并且他们觉得他们太快了,那么减少ATC_ACCEL_MAX参数。有副翼的直升机从0.22 VFF 开始。
  • 调D和P增益,先调D再调P。先在遥控器上改参数,调整遥控旋钮直到ATC_RAT_PIT/RLL_D增益为0.001,roll轴给大输入,每次增加0.001,直到开始抖动将其减半作为最终值。
    ATC_RAT_PIT/RLL_P初值0.05,每次加0.01,开始抖动减半。
  • 调 I 增益以及IMAX、ILMI,让ATC_RAT_PIT/RLL_IATC_RAT_PIT/RLL_VFF相等,IMAX初值0.4。相对地速小于5m/s时应该减小这个值。要修改时使IMAX = 1,以最大期望速度飞行飞机。拉出日志,查看PIDP消息中的最大 I 值是多少。将IMAX设置为高于最大值0.1。您可以对滚动轴做同样的操作,但通常0.4就足够了。ILMI设置为您希望在悬停时保留的最大积分器值,以帮助保持姿态。建议该值不大于0.1。
  • 微调AHRS_TRIM_X,AHTS_TRIM_Y
    此步骤是为了在stability模式下,飞手脱杆直升机能够差不多的悬停。
    修改AHRS_TRIM_X调整飞机前后,修改AHRS_TRIM_Y调整飞机左右。

  飞机的控制率是一种跟随的算法模型,这种模型会把飞手输入的量转化为姿态控制(自稳模式)或速度控制(特技模式)以便能够实现期望量的输出。而软件根据飞手或自动驾驶仪的输入来跟踪或预测飞机在空间中的位置(即俯仰和横摇姿态)。它有两个控制器(姿态和速度)一起工作,以确保实际飞机实现软件预测的俯仰翻滚速度以及飞机姿态。

  无人机可以完全由飞手用遥控控制来保持平稳,也有傻瓜模式(自稳模式)飞机平衡由飞控控制,飞手只需控制飞机的飞行方向。

飞手的指令可以被限幅
ATC_ACCEL_P_MAX 和 ATC_ACCEL_R_MAX分别限制pitch和roll方向的加速度
飞机对飞手的输入灵敏度/响应速度(crispness 快/sluggishness 慢)由ATC_INPUT_TC(3.5及之前版本叫RC_FEEL)控制
这些量会反馈给 rate controller

attitude controller作用是使真实姿态跟随预测姿态,ATC_ANG_PIT_P 和 ATC_ANG_RLL_P 两个参数分别控制pitch和roll的rate,这两个参数反馈给rate controller

rate controller接收飞手输入和从attitude controller的到的rate的和。rate controller使用PID和前馈控制使飞机跟随输入。前馈控制使用输入的rate,并将ATC_RAT_PIT_VFF 和 ATC_RAT_RLL_VFF 两个增益作用到pitch和roll上来控制斜盘(swashplate ),PID通过输入rate和真实rate的差来控制斜盘,然后PID做和去控制伺服。

初始调试使用VFF增益使requested rates 和 actual rates 大致一样,然后使用PD增益抗扰,但PD增益不能保持他们的匹配,然后引入I(积分)增益,用ATC_RAT_RLL_IMAX 和 ATC_RAT_PIT_IMAX 参数限制roll和pitch。
当ground speed(地速:飞机相对于地面的速度)慢于5m/s时,积分增益降低,ATC_RAT_RLL_ILMI 和 ATC_RAT_PIT_ILMI 限制最多降低多少,如果ILMI参数是0则积分器不会增长,最终姿态不会跟上预测姿态。如果不是0或者足够大,直升机会陷入低俗速或盘旋最后跟上预测姿态(就是跟踪速度慢),在飞机前进时需要大量积分器,而在盘旋或者起落时大量积分器会让直升机在一侧翻转,所以要保持一定的积分器,又不能让他在一侧翻转。

以下是pitch和roll的默认参数,将VFF设成0.15pitch和rool,尾桨yaw需要自己调

pitch,roll参数
手飞时P,R方向加速度限制,
根据直升机大小确定
ATC_ACCEL_P_MAX 110000
ATC_ACCEL_R_MAX 110000
姿态控制器P参数 ATC_ANG_PIT_P 4.5
ATC_ANG_RLL_P 4.5
飞机悬停设0.001,在roll输入一些大动作,
如果没震动加大0.001,调到震动时减小一半
ATC_RAT_PIT_D 0
ATC_RAT_PIT_FILT 20
和ATC_RAT_PIT_VFF相同 ATC_RAT_PIT_I 0
ATC_RAT_PIT_ILMI 0
ATC_RAT_PIT_IMAX 0.40
设0.05,每次增加0.01调到振动减小一半,P值会跟飞机动力有关系,
动力大合适的P值可能较小,反之可能较大
ATC_RAT_PIT_P 0
前馈P ATC_RAT_PIT_VFF 0.15
ATC_RAT_RLL_D 0
ATC_RAT_RLL_FILT 20
ATC_RAT_RLL_I 0
如果ILMI或积分器减小到最小值为零,那么积分器将不允许增加,
并且不会控制姿态与飞控预测的姿态完全匹配建议不大于0.1
ATC_RAT_RLL_ILMI 0
地速小于5m/s时减小 ATC_RAT_RLL_IMAX 0.40
ATC_RAT_RLL_P 0
前馈R ATC_RAT_RLL_VFF 0.15
ATC_INPUT_TC 0.15

在这里插入图片描述

调试yaw

调pitch和roll之前建议先保持尾桨(yaw)正常
**重要提醒:**无人直升机和运动直升机不同,通常headspeed较低并且会有higher disc loading(桨盘负载),对于机械驱动的尾桨也意味着较低的转速和权重,如果直升机符合这些描述,在悬停实验前将 ATC_RAT_YAW_VFF 参数设为 0.05。

悬停实验:
将飞机悬停在离地面0.25米左右,如果尾巴(yaw)方向不能保持将 ATC_RAT_YAW_P 调大,如果快速来回摆动降低ATC_ANG_YAW_P

在所有情况下,不建议将ATC_ANG_YAW_P 调到3.5以下或将 ATC_RAT_YAW_P 调到0.38以上,如果直升机尾部在这些限幅内还是不稳定可能是出现了机械问题:
either excessive “slop” or play in the linkage, binding of the linkage or a servo problem

将上述参数调完之后再对pitch和roll参数精调

以下是yaw的默认参数

尾桨参数
ATC_ACCEL_Y_MAX 27000
不建议低于3.5 ATC_ANG_YAW_P 4.5
ATC_RAT_YAW_D 0.003
ATC_RAT_YAW_FILT 20
ATC_RAT_YAW_I 0.12
ATC_RAT_YAW_ILMI 0
ATC_RAT_YAW_IMAX 0.33
“松了”增大,快速振动减小 ATC_RAT_YAW_P 0.18
第一次悬停建议设0.05 ATC_RAT_YAW_VFF 0.024

设置pitch和roll的 VFF 和 ACCEL_MAX
先将VFF设成0.15,起飞自稳模式盘旋,在pitch和roll轴上给一些 sharp stick 输入,拿下飞机上的SD卡在地面站上看日志,比较P.des(pitch Desired Rate)和P(pitch actual Rate)以及 R.des 和 R 如果 actual rate 高于 desired rate 就降低VFF,如果低就增加VFF。
If the desired and actual rates are offset by some amount it means that your swash was not properly leveled in the setup(斜盘没放平) or the CG(这玩意儿是啥???) is not right.
这种情况只要保持rate真实值和期望值相似就行,如果觉得这两个rate match的太快就减小 ATC_ACCEL_MAX 并重复上面步骤去match desired and actual rates

如果调VFF飞机开始摆动,减小该轴对应的ATC_ANG_xxx_P 值,直到摆动停止,对大多数直升机上述推荐值不会出现这种情况。

With a flybar(平衡翼???) head 推荐开始pitch和roll VFF 为0.22,你有可能需要更高的 0.22 VFF值。But for a flybarless head,不要高于0.22,unless you have really really slow servos or slow linkage rate。

最后根据直升机大小设置 ATC_ACCEL_MAX 参数,大的800-900级直升机设在36000-52000之间,小的450-500级直升机设为90000-110000之间,ATC_INPUT_TC 值建议设在0.15-0.25之间(for RC_FEEL with AC 3.5 or earlier, the recommended range was 25 to 50)

下图是Rate Roll Desired 和 actual Rate Roll 的比较,峰相当于一个 rapid stick,两条曲线峰值相当,时间偏移不超过100毫秒(milliseconds)
在这里插入图片描述
Note on Tuning Flybar Helicopers
flybar is a mechanical version of the rate PID loop
所以flybar只用pitch和roll的VFF调,

调PD参数
把VFF参数调好后开始调PID参数,PID的作用是抗扰并让actual跟随 predicted rates

先调D,使用连接到遥控器通道6的ArduCopter的调优功能。进行以下参数更改。

name valude
TUNING 21
TUNING_LOW 0
TUNING_HIGH 30*

对于futaba收音机,这相当于旋钮的一个增量为0.001

调整遥控器6通道的旋钮,直到ATC_RAT_RLL_D和ATC_RAT_PIT_D增益为0.001。上升到悬停状态,并在roll方向做一些大动作。大多数直升机在看到俯仰振动之前都会先看到横摇振动。这就是为什么建议使用roll输入。如果没有震动,增加0.001,然后再试一次。在得到快速抖动的值处,将该值减半,并将其作为ATC_RAT_RLL_D和ATC_RAT_PIT_D的最终调优值输入。测试将直升机悬停在空中,并在俯仰和翻滚中做一些快速的运动,以确保它是稳定的。

接下来调整P增益,确保进行以下参数更改。

name value
TUNING 4
TUNING_LOW 0
TUNING_HIGH 300*

对于futaba遥控器,这相当于旋钮的一个增量为0.01

调整6通道旋钮,直到ATC_RAT_RLL_P和ATC_RAT_PIT_P增益为0.05。盘旋上升,从一边到另一边猛烈滚动。如果没有抖动,将增益增加0.01,然后重试。在得到快速摇晃的值时,将该值减半,并将其输入为ATC_RAT_RLL_P和ATC_RAT_PIT_P的最终调优值。测试悬停直升机,并在俯仰和滚转中进行一些快速的运动,以确保其稳定。

在调整了P增益和D增益后,飞机应该会感觉更平稳。

设置I增益以及IMAX、ILMI
建议将ATC_RAT_PIT_I增益设置为ATC_RAT_PIT_VFF增益,ATC_RAT_RLL_I增益设置为ATC_RAT_RLL_VFF增益,IMAX值限制了积分器误差的累积,积分项可以用来对抗较大的姿态扰动。在飞机的pitch轴上,当飞机高速前进时ATC_RAT_PIT_I能够保持飞机的姿态,初始值是0.4。要改这个值时使IMAX = 1,以最大期望速度飞行飞机。拉出日志,查看PIDP消息中的最大 I 值是多少。将IMAX设置为高于最大值0.1。您可以对滚动轴做同样的操作,但通常0.4就足够了。ILMI设置为您希望在悬停时保留的最大积分器值,以帮助保持姿态。建议该值不大于0.1。

下面是在ILMI参数设置为零,适当设置I-gain和IMAX参数的情况下,直升机在高速自主飞行中期望横摇姿态与实际横摇姿态的关系图,将使直升机在超过5m/s的速度下,以超过2秒的时间(我们称之为“动态飞行”)非常接近所期望的姿态。在动态飞行中,它应该在所需的1-2度误差范围内。在图的右边,飞手将直升机从悬停状态切换到稳定飞行模式。您将注意到实际滚动姿态和期望滚动姿态之间的差异,这是将ILMI设置为0的原因。ILMI可以被认为是悬停时的一种“自动配平”,当直升机不在动态飞行时,这种配平可以减少期望和实际俯仰和滚转姿态之间的差异。
在这里插入图片描述
悬停配平、悬停飞行模式和航路点飞行的高级调优
在这一点上,你应该有一架反应灵敏又稳定的直升机。但是我们需要修整直升机,这样它就可以在stability飞行模式下自由盘旋。在AUTO 飞行模式下调整I-增益,以便在飞机在全自动驾驶仪全部控制下正确跟踪姿态。

悬停调优
在俯仰和翻滚轴上调整直升机是防止飞机在stability和althold模式下漂移的一个重要步骤。翻滚轴的配平姿态受尾旋翼推力的影响。所有传统的带有扭矩补偿尾桨的单旋翼直升机,根据主旋翼转向的方式,要么右滑低,要么左滑低。ArduCopter软件有一个参数(ATC_HOVR_RLL_TRIM)来补偿这种现象。纵向重心位置将影响俯仰轴上的配平姿态。没有参数可以告诉飞行控制器飞机在俯仰姿态上漂移盘旋。它总是以飞行控制器测量的零度俯仰为目标。因此,飞机盘旋的实际俯仰姿态可能是5°机头高,但飞行控制器AHRS配平值被设置为使其认为姿态为零。

为了配平飞机,将ATC_HOVR_RLL_TRIM 参数设置为零。在飞行控制器的初始设置过程中,AHRS配平值是在加速计校准过程中的最后一步设置的,最后一步是使飞机水平。对于这个步骤,你应该确保轴在俯仰和滚动上是完全垂直的。对于此步骤,建议您检查并使用以下方法。

用数字螺距尺测量实际的节距和滚动角度(在垂直于主轴的框架部分)。通过MavLink连接到地面站软件,注意飞行控制器测量的俯仰和滚转角度。调整AHRS_TRIM_X和AHRS_TRIM_Y值,使飞行控制器匹配你用数字螺距尺测量的相同的框架角度。您可以使用地面站中的校准水平面功能,将直升机水平放置在实际高度。该功能将为您调整AHRS_TRIM。

以上是必要的,这样我们就可以精确地测量滚转角来设置ATC_HOVR_RLL_TRIM。飞行控制器现在“知道”主轴何时完全垂直。

给直升机装载其正常有效载荷,并在stability飞行模式无风条件下悬停直升机。着陆并查看日志,注意你必须保持的滚转角( noting the roll angle that you had to hold with the stick to keep the helicopter from drifting),以防止直升机漂移。以百分位数为单位,在ATC_HOVR_RLL_TRIM参数中输入该值。对于顺时针转动主电机,如果需要3.5度的右滚来补偿,输入350。负值适用于需要左滚进行补偿的逆时针转动主电机。

重要提醒 - do not use the radio trims at all. Make sure they are centered.

设置好ATC_HOVR_RLL_TRIM后,现在再次悬停直升机。如果仍然漂移,则对SERVO1_TRIM、SERVO2_TRIM和SERVO3_TRIM进行小的调整。使斜盘完全水平的机会非常低,需要这种动态调整来调整直升机。如果它需要与原始的SERVOx_TRIM值有较大的偏差,那么很可能是您的重心问题,或者您在调平斜盘时的初始设置不是很准确。

你的直升机现在调整好了。这种修整步骤使难以操纵的直升机与真正具有飞行品质和操纵能力的直升机有所不同。(This trimming procedure makes the difference between a helicopter that is difficult to handle vs one that flies with true scale quality and handling.)

高速自主飞行模式下的I增益的调整
用你的地面站软件准备一个任务,让直升机以6米/秒的速度左右转弯。执行此任务的直升机,从microSD卡中取出日志,查看动态飞行中所需的AHRS与实际俯仰、横摇和偏航姿态。他们误差应该在1-2度内。如果没有,则增加该轴的ATC_RAT_xxx_I值,直到满足。

现在,以9-10 m/s的更高速度执行同样的任务,并以同样的方式分析日志。根据需要进一步调整I增益和IMAX值,不同的直升机需要不同的值。但是0.25-0.38的I增益值在俯仰和滚转中很常见,在偏航中为0.18-0.30。0.40-0.45的IMAX值很常见,但是请参阅“设置I增益以及IMAX、ILMI”部分,了解如何确定IMAX值。

微调AHRS_TRIM_X,AHTS_TRIM_Y
此步骤是为了在stability模式下,飞手脱杆直升机能够差不多的悬停。

修改AHRS_TRIM_X调整飞机前后,修改AHRS_TRIM_Y调整飞机左右。

调整直升机在AltHold模式下悬停

param name value
PSC_POSZ_P 5
PSC_VELZ_P 1
PSC_ACCZ_P 0.5
PSC_ACCZ_FF 0
PSC_ACCZ_FILT 20
PSC_ACCZ_I 1
PSC_ACCZ_IMAX 800
PSC_ACCZ_D 0

PSC_POSZ_P用于将高度误差(期望高度和实际高度之间的差值)转换成期望的爬升率或下降率。更高的速率会使它更快速地试图保持高度,但如果设置得太高,会导致油门反应不稳。

PSC_VELZ_P(通常不需要调整)将期望的爬升或下降速度转换成期望的上升或下降加速度。

油门加速比例积分微分增益将加速度误差(即期望加速度和实际加速度之间的差值)转换为电机输出。如果修改这些参数,应该保持PSC_ACCZ_P:PSC_ACCZ_I=1:2。这些数值不应该增加,但是对于重量级的直升机来说,你可以通过减少PSC_ACCZ_P与PSC_ACCZ_I来获得更好的控制。

在日志中可以查看CTUN中Dalt(期待高度)与alt(实际高度)来分析高度控制的如何。

在这里插入图片描述

调整直升机在PosHold模式下悬停
这一步才是真正意义下了悬停,通过此步骤,飞机能够在poshold模式下定点。

此模式下的XY方向的控制率与高度Z方向的控制率有相同的规律。多调试,多看日志,多分析。

param name value
PSC_ACC_XY_FILT 2
PSC_POSXY_P 1
PSC_VELXY_D 0
PSC_VELXY_D_FILT 5
PSC_VELXY_FILT 5
PSC_VELXY_I 0.5
PSC_VELXY_IMAX 1000
PSC_VELXY_P 1

通过日志里的PSC可以看到位置控制,其中T开头的是期望值。
在这里插入图片描述
下面8个RC通道对应main out输出

RC Channel SERVO output
1 Aileron(副翼)
2 Elevator(升降舵)
3 Collective
4 Rudder(方向舵)
5 Flight Modes(飞行模式)
6 Tuning
7 Aux
8 Throttle(油门)

在这里插入图片描述
引脚连法:
Motor 1, which is normally the left front servo on your helicopter goes to pin 1. Motor 2, which is normally the right front servo goes to pin 2. Motor 3, which is normally the rear (elevator) servo goes to pin 3. Tail servo goes to pin 4.

If you are using a DDVP (Direct Drive Variable Pitch) tail rotor, the tail motor ESC connects to pin 7. The throttle servo or ESC for the main rotor motor connects to pin 8.

H_SW_TYPE参数用于斜盘选择,不同的value代表不同斜盘目前支持的斜盘
在这里插入图片描述

通用飞控法则

  有两个controller分别控制姿态attitude(Stabilize Mode) 和速度rate(Acro mode),就是两个跟随输入的模型,地面站会持续跟踪并预测飞机的空间位置。

飞控的指令会受加速度限制,可通过以下参数调节
ATC_ACCEL_P_MAX pitch的最大加速度
ATC_ACCEL_R_MAX roll的最大加速度
ATC_INPUT_TC 输入的(crispness/sluggishness) (不知道咋翻译,AC3.5或更早版本中叫RC_FEEL)
  初始输入和这些参数用于确定达到需求的相应速度,该速度会反馈到rate controller
  attitude controller用于确保实际姿态和飞控预测的姿态相同,将ATC_ANG_PIT_P和 ATC_ANG_RLL_P分别控制的pitch和roll的速率反馈给rate controller,来完成对预测的跟随。
   rate controller接收输入和attitude controller 的sum来控制swashplate,使用PID算法和前馈,前馈用输入ATC_RAT_PIT_VFF给pitch做增益,ATC_RAT_RLL_VFF给roll做增益。

ATC_RAT_RLL_IMAX roll的最大积分(I)增益
ATC_RAT_PIT_IMAX pitch的最大积分(I)增益

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章