ArduPilot—ArduCopter 飞行模式

本文转载自:https://blog.csdn.net/xiaoshuai537/article/details/60465851


ArduPilot官方Tutorial PDF(2017.2): http://download.csdn.net/download/xiaoshuai537/10262086


ArduPilot中有14种常用的模式:

  • 依赖GPS的模式有:Auto、Circle、Drift、Follow Me、Guided、Loiter、PosHold、RTL和Throw;
  • 不依赖GPS的有:Acro、Alt Hold、Land、Sport和Stabilize模式。

1. Acro(特技模式

直接用摇杆控制飞行器的角速度,松开摇杆飞行器将保持原有的姿态。常用于特技表演。

2. Alt Hold(定高模式)

在Alt Hold模式下,飞行器保持高度不变,可以操作俯仰、滚转和偏航。Alt Hold模式是很多模式的基础,例如Loiter和Sport。Alt Hold采用气压计测高、如果高度低于约8m,可以自动使用声呐定高。

2.1 用油门控制飞行器的升降速度:

  • 油门在40-60%(死区)会保持现有高度;
  • 超出上述范围,根据摇杆拨动幅度,升降速度会不同,油门为0时,下降速度为2.5m/s,油门100%,上升速度为2.5m/s,该数值可以通过PILOT_VELZ_MAX调整;
  • 死区的范围可以通过THR_DZ调整,调整范围为0-400,0表示死区为0,400表示死区为(50-40)%~(50+40)%,即10-90%。

2.2 PID调试


  • Altitude Hold中的P将高度偏差转化为升降速度偏差,P越大,保持高度稳定的趋势越强,但是P值过大会导致不平稳;
  • Throttle Rate中PD用于将升降速度转化为升降加速度;
  • Throttle Accelerate中PID用于将加速度偏差转化到电机输出,P:I=1:2,其值不能增加,但是对于动力强劲的飞行器,将其值减小(如P=0.5,I=1)可能会得到更好的响应;

2.3 用日志验证效果

下载日志,比较气压计高度(BarAlt)、目标高度(DelAlt)和内部导航估计的高度(Alt)。


2.3 常见问题

  • 强烈震动导致飞行器突然爬升;
  • 飞行器升降缓慢,这是由于油门不在中位,通常发生在从手动模式(如Stabilize)切换到AltHold模式时;
  • 刚切换到AltHold模式时,电机可以短时停转,这是由于在快速爬升时切换到该模式;
  • 空气压力改变时可能导致飞行器高度波动;
  • 飞行器高速飞行后会出现短暂掉高(1-2m),这是由于空气动力学的影响,飞行器顶部压力降低,飞控因为飞行器高度增加了;
  • 接近地面时,气压计测量变得不准确;
  • 光直射会导致高度变化

2.4 充足的动力

理想情况下降,50%油门时能够飞行是比较合适的,超过70%会比较危险。

如果你在遥控器中设置了油门曲线expo,死区范围将会增大。

3. Auto(自动模式)

将执行预编程指令,包括导航命令和DO命令。

3.1 控制

  • 从地面起飞时,油门大于0时开始执行任务;如果在空中开启Auto模式,会跳过自动跳过TakeOff(起飞)命令。
  • 任何时候Auto模式都可以切换到其他模式,当再次回到Auto模式时,从头开始执行任务。
  • Auto模式飞行过程中,roll、pitch和throttle操作都会被忽略,但是可以通过遥控器控制yaw,这允许飞行过程中飞行器以一定指向前进;在经过下一个航点时,飞控会尝试重新获取yaw的控制权。
  • 飞行任务指令可以通过【飞行计划】进行修改。

3.2 调试

Auto模式融合了AltHold模式的高度控制和Loiter模式的位置控制。


最大水平速度可以在上图SPEED中设置,一般多旋翼飞行器飞行速度可达10-13m/s。高度方向最大速度可以通过Speed Up和Speed Dn设置。与航点距离小于Radius设定值时,任务认为完成了,这个只有当航点设置有延时时才应用。

4. Brake(刹车模式)

这个模式将尽快停止飞行器,该模式使用了Loiter,需要GPS的支持,一旦启用,该模式不接受飞行操控信号。

5. Circle(绕圈模式)

绕圈模式会以兴趣点为中心,机头朝兴趣点旋转,旋转半径可以通过CIRCLE_RADIUS控制。如果半径为0,则飞行器原地不动,缓慢旋转。飞行速度可以通过CIRCLE_RATE修改,正表示顺时针旋转。当旋转时产生的中心加速度超过限制(WPNAV_ACCEL)时,旋转速度会被限制。

roll和pitch对该模式无效,但是throttle可以控制飞行高度,遥控器可以控制yaw,调整机头方向,并且重启该模式前,该模式不会尝试重新获取yaw控制权。

在mission planner中,LOITER_TURNS包含了CIRCLE模式。

6. Drift(漂移模式)

  • 漂移模式允许像固定翼一样操控多旋翼,其设置了自动的坐标系转换。
  • 用户直接控制yaw和pitch,但是roll由飞行器控制;
  • 与stabilize相同的方式控制throttle

7. Follow Me(跟随模式)

需要使用数传、地面站以及蓝牙或USB GPS模块。

飞行器每2s执行Fly to here命令。

8. Guided(引导模式)

该模式利用数传好地面站,实时引导飞行器位置。引导模式不是一个基本模式,是在其他几种模式中切换形成的。当飞行器到达目标点后,会在目标点上方悬停。

Guided_NoGPS模式不需要GPS,他接受姿态目标而非速度和位置目标。

9. Land(着陆模式)

10m以上采用AltHold模式中设置的下降速度:


10m以下采用LAND_SPEED中设置的下降速度,默认0.5m/s;

落地后,会自动停止电机转动,如果油门处于最低位置会上锁;

油门最低、升降速度小于0.2m/s超过1s,并且高度不超过home高度10m,即认为着陆;

如果着陆时飞行器反弹,尝试降低LAND_SPEED中下降速度;

如果飞行器有GPS锁,则采用Loiter模式控制飞行器;如果飞行器无GPS,则采用Stabilize模式。

10. Loiter(悬停模式)

悬停模式会保持飞行器当前的高度、位置和航向。

10.1 控制

  • 可以通过roll和pitch控制飞行器位置,默认水平最大速度为5m/s;
  • 高度可以通过throttle控制,如同AltHold模式;
  • 航向可以通过yaw控制;
  • 只有在GPS 3D 锁定并且HODP小于2.0时才能在Loiter模式下解锁。

10.2 调试


  • WPNAV_LOIT_SPEED:最大水平速度(默认5m/s),默认最大加速度数值为其一半(默认2.5m/s2);
  • WPNAV_LOIT_MAXA:最大加速度(cm/s2),值越大,加速和停止性能越好;
  • WPNAV_LOIT_MINA:最小加速度,值越大,摇杆回中时停止越快,但是可能导致动作不平滑;
  • WPNAV_LOIT_JERK:加速度的改变(cm/s3),越大响应越快,越小越平滑;
  • POS_XY_P(上图中Loiter PID中的P):将位置差转换为合适的移动速度;
  • VEL_XY_P(上图中Rate Loiter PID):将速度转换为加速度,加速度随后转换为倾斜角度,传送给Stabilize模式处理。

10.3 常见问题

  • 摇杆回中后,稳定得非常慢可以增加WPNAV_LOIT_MAXA(例如到500)、WPNAV_LOIT_MINA(例如到100)和WPNAV_LOT_JERK(例如到4000);
  • 飞行器转圈,这通常是磁罗盘问题,最可能的原因是电池电缆的影响,可以进行磁罗盘补偿(http://ardupilot.org/copter/docs/common-compass-setup-advanced.html#common-compass-setup-advanced-compassmot-compensation-for-interference-from-the-power-wires-escs-and-motors)或者采用外置磁罗盘;磁罗盘校准过程出现问题也可能导致该现象;
  • 悬停模式一启用,飞行器朝错误方向飞,这个 问题原因同上,不同之处在于偏差角度大于90度;
  • 悬停正常,突然像错误方向移动,这通常是GPS失灵导致。因此需要随时准备手动接管,此外,起飞前保证良好的HDOP、以及减小GPSGLIPTCH_RADIUS和GPSGLIPTCH_ACCEL以加强失灵检测也是有利的;

10.4 HDOP显示

双击【飞行数据】左下角【快速】中某显示数值,可以改为显示HDOP。

10.5 通过日志验证悬停性能

查看NTUN中DesVelX和VelX,以及DesVelY和VelY。


高度信息查看如同AltHold。

11. PosHold(悬停角度控制模式)

PosHold模式和Loiter模式类似,都是保持当前高度、位置和航向。不同的是PosHold模式的摇杆直接控制飞行器偏转的角度。

最大的刹车角度可以通过PHLD_BRAKE_ANGLE设置(3000表示30°)。

飞行器旋转到最大角度的速度可以通过PHLD_BRAKE_RATE设置(8表示8°/s)。

12. Position(位置模式)

与Loiter模式类似,保持当前位置和航向,不同之处在于手动控制油门以升降飞行器。

GPS锁定的LED灯显示:

  • APM上蓝色LED灯稳定;
  • GPS上蓝色LED灯稳定;
  • GPS+COMPASS上蓝色LED灯闪烁。

13. RTL(返程模式)

RTL模式将引导飞行器飞回HOME上方。

13.1 概述

当飞行器高度高于RTL_ALT时将保持原有高度,反之则按RTL_ALT高度飞行,默认值为15m。

对于旋翼飞行器,RTL将返回至GPS定位后解锁的地方。

RTL模式使用气压计测量高度,6m以下可以采用声呐定高。

13.2 选项

(1)RTL_ALT:返回的最低高度

  • 设为0表示在当前高度返回;
  • 返回高度0.01~8m;
  • 默认返回高度为15m;

(2)RTL_ALT_FINAL:完成任务或RTL最后阶段的高度

  • 设为0将自动着陆;
  • 最终高度0.01~10m;

(3)RTL_LOIT_TIME:停在HOME上方的时间(ms),时间0~60s

(4)WP_YAW_BEHAVIOR:设置任务和RTL中的偏航角度

  • 0表示不改变yaw;
  • 1表示面向下一个航点或RTL时面向家的方向;
  • 2表示面向下一个航点,RTL时保持最终航向不变;

(5)LAND_SPEED:最终阶段下降的速度(0.2~2m/s)

(6)RTL_CLIMB_MIN:RTL初始阶段最低爬升高度(cm),默认为0

(7)RTL_SPEED:返回时的水平速度(cm/s),默认为0,表示使用WPNAV_SPEED

(8)RTL_CONE_SLOPE:定义当返回点离家很近时的爬升斜率

13.3 注意事项

  • WPNAV_ACCEL、WPNAV_SPEED_DN和WPNAV_SPEED_UP也会影响RTL模式;
  • 需要GPS定位;
  • 降落和重新解锁将会重新定义HOME的位置;
  • 如果飞行中GPS定位,HOME将设在此处;
  • 如果设置RTL_ALT为非0,返回时将保持该高度;
  • RTL使用WPNAV_SPEED来定义飞行速度;
  • 飞行器到达HOME上方时将暂停RTL_LOIT_TIME、AUTO_LAND的时间,然后降落。

14. Simple(简单模式)和Super Simper(超简模式)

这两种模式可以使用户不用关心飞行器的朝向。

  • 这两种模式可 以叠加到几乎所有模式下(除了Acro和Drift);
  • 简单模式的朝向以起飞时朝向为参考方向定义坐标系、只需要磁罗盘;
  • 超简模式定义飞行器与家的方向为参考方向定义坐标系,需要GPS定位;
  • 两个模式可以与普通模式之间通过遥控器上CH7/CH8切换。

超简模式下,无论飞行器在任何位置,往回拉pitch将试飞行器往家的方向走;但是在离家10m范围内,方向不会更新,因此不宜在家附近飞。


15. SPORT(运动模式)

  • roll、pitch和yaw控制飞行器的转动速率,因此当摇杆归位时,飞行器将保持当前姿态;
  • 最大角度为45°(可以通过ANGLE_MAX设置);
  • 高度采用AltHold控制方法,因此油门中间10%范围内油门摇杆将不起作用,升降速度为2.5m/s(通过PILOT_VELZ_MAX设置)

16. Stabilize(自稳模式)

  • 自稳模式会自动平衡roll轴和pitch轴。
  • roll和pitch输入控制飞行器的倾斜角度,当松开roll和pitch摇杆时飞行器自动平衡;
  • 飞行器需要周期性roll和pitch来保持位置,因为有风的影响;
  • 当松开yaw杆时保持当前朝向;
  • 油门控制电机的平均速度,如果油门波到最低其转速回达到最低值MOT_SPIN_ARMED;
  • 油门输出到电机的大小是由飞行器的倾斜角度自动分配的。

16.1 调试

  • ANGLE_MAX控制最大倾斜角,默认为45°;
  • ANGLE_RATE_MAX控制最大的旋转速度,默认为180°/s;
  • ACRO_YAW_P控制根据yaw的输入,飞行器旋转速度,默认的4.5控制当摇杆到最大值时转速为200°/s,越大转速越快;
  • 自稳模式roll/pitch的P控制飞行器响应输入差值的速度,默认4.5会在1°偏差时以4.5°/s旋转,7或者8会使飞行器产生更强的反应来抵抗风的影响;若P较低,会导致旋转缓慢,可能使抗风能力降低,甚至导致坠机。如果想使飞行更平滑,首先应先尝试降低RC_Feel的值;
  • Rate Roll/Pitch P, I和D根据理想的转速控制电机的输出。这些项通常与负载能力与重量比有关,比值越高,PID值越小。例如高负载飞行器的P值可低至0.08,而低负载的飞行器P值可到0.18甚至更高;
        (1)P值是调试飞行器最重要的参数;

        (2)P值越高,响应越快;

(3)默认P为0.15;

(4)I用于补偿使飞行器长时间不能保持理想速度的外力;

(5)I越高维持理想速度的响应越快,并且会快速下降来避免超调;

(6)D用于抑制飞行器加速到理想点的响应,D值高可能会导致不寻常的震动和记忆效应(响应慢),合适的D为0.011;

(7)根据飞行器的不同,值可以在0.001~0.02范围内变化;

16.2 利用日志验证效果

 比较ATT中Roll-In/DesRoll(理想值)和Roll(实际值),以及Pitch-In/DesPitch和Pitch。

16.3 常见问题

  • 新飞行器起飞时弹跳,这通常是由于电机顺序不对或者桨不对;
  • 飞行器绕roll/pitch轴摇摆,这通常表示 Rate P不对;
  • 飞行器下降较快时摇摆,这是由于桨的自洗导致,这不太可能调整好,但是提高Rate Roll/Pitch P可能会有帮助;
  • 飞行器起飞时左或者右转15°,这是由于一些电机可能不是线性的或者ESC没有校准好;
  • 即使在无风环境下,飞行器也偏向于向一方飞行,尝试SavTrim或AutoTrim来使飞行器水平;
  • 飞行器高度保持不好,这是由于自稳模式是手动模式,需要摇杆控制稳定;
  • 有时roll和pitch抽动,正常情况下是由接收机受到某种干扰引起的或者是ESC问题,解决方法是重新校准;
  • 飞行过程中突然弹跳,这可能是电机或者ESC的机械故障;

17. Throw(抛飞模式)

抛飞模式存在危险性,该模式允许飞行器抛向空中来启动电机,当在空中时,该模式不在接受任何输入信息,这个模式需要GPS。

17.1 使用方法

(1)飞行器上锁;

(2)切换到抛飞模式;

(3)检查GPS是否定位;

(4)解锁飞行器,飞行器蜂鸣时处于待命状态,电机默认情况下不旋转;

(5)将飞行器抛出(爬升速度达到0.5m/s,速度达到5m/s);

(6)飞行器停止时,切换到其他模式重新获得控制权;

电机将在飞行器达到顶点时启动,电机启动后会首先稳住机身(保持水平和停止旋转),然后停止掉高,最红水平方向也停止移动。

17.2 设置

  • THROW_TYPE:0表示往上扔飞行器,1表示往下扔,如果是往下扔,高度至少10m;
  • THROW_MOT_START:控制电机在待机时是不转还是缓慢旋转(0不转、1缓慢旋转),默认为0;
  • THROW_NEXTMODE:设置飞行器停止后的下一个飞行模式(Auto、Guided、RTL、Land和Brake模式均支持),设置为Throw(默认)便保持在该模式等待手动切换到其他模式。

17.3 日志分析

下图为成功抛飞的日志,垂直速度大于0.5m/s,总速度大于5m/s。



猜你喜欢

转载自blog.csdn.net/u012814946/article/details/79671728