APM常用参数设置方法(持续更新)

无人机调试问题,飞控硬件定制,固件修改,log日志分析,飞控驱动添加
请QQ联系:3500985284

经过三个月的制作,我的《无人机飞控固件开发教程》系列视频终于在“网易云课堂”上线了,本教程基于APM固件和Pixhawk硬件,讲述如何搭建飞控固件开发环境、如何编译烧写固件、如何修改固件、如何建立飞控仿真环境、如何添加自定义信息、自定义日志、如何添加外设驱动程序、如何使用OpenMV图像识别设备引导飞机飞行等,敬请支持。

https://study.163.com/course/introduction/1209568864.htm?share=1&shareId=1448054983

一、设置自动航线下的机头转向动作

 WP_YAW_BEHAVIOR:自动航线下航向行为

  0:永不转头,飞机航向保持进入自动航线时的航向;

  1:朝向下一个航点;

  2:除了RTL,朝向下一个航点;

  3:朝向GPS的航迹方向。

二、设置飞控的安装方向

 AHRS_ORIENTATION:姿态旋转

 具体旋转方法在MissionPlanner中该参数之后有注释,如果实在搞不明白,就穷举法一个个尝试吧。

三、设置自动锁定时间长短

 DISARM_DELAY:锁定延时,自动锁定前的时间

 单位:秒。

四、设置飞翼混控输出

 SERVOx_FUNCTION:输出通道x的功能。

 其中,77:Elevon left,指的是左侧升降舵副翼混控,78:Elevon right,指的是右侧升降舵副翼混控。

五、设置解锁后点击怠速旋转的速度

 MOT_SPIN_ARM:0:很低;0.15:中等;0.3:很高。

 注意,这个值不能大于MOT_SPAIN_MIN。
 

六、减小刹车距离,定点模式下摇杆回中让飞机更快地停下

   1、对于Copter-3.6(含)以上的固件:

         LOIT_ACC_MAX:最大加速度,较大的值会让飞机更快地加减速;

         LOIT_BRK_ACCEL:最大刹车加速度(遥控器摇杆回中时),较大的值会让飞机刹车更猛;

         LOIT_BRK_DELAY:遥控器摇杆回中后,延时这个值确定的秒数后,飞机开始刹车,为了更快刹车,调小这个值;

         LOIT_BRK_JERK:刹车时最大“加加速度”(也就是加速度的加速度),增大这个值,刹车更猛。

   2、 对于Copter-3.5(含)以下的固件:

         WPNAV_LOIT_MAXA:最大加速度,较大的值会让飞机更快地加减速;

         WPNAV_LOIT_MINA:最小加速度,较大的值会让飞机在摇杆回中后更快地停下来,但是会导致飞机停止时猛地抖动;

         WPNAV_LOIT_JERK:刹车时最大“加加速度”(也就是加速度的加速度),增大这个值,刹车更猛。

七、Loiter、Auto模式下的转头速度

 APM默认参数下,loiter模式下打航向摇杆,飞机转头速度很大,而我们很多时候不需要这么大的转头速度,这个转头速度是由ACRO_YAW_P这个参数控制的,默认值为4.5,我们可以将它调小,比如2.2。从飞控代码中可以看出,这个值是用来将遥控器航向摇杆的量,线性地转换为目标航向角速度,通过将此值减小,相同杆量的情况下,目标角度就变小了。

 对于Auto模式,最大转头速度是由ATC_SLEW_YAW控制的,调小这个值的话自动转头的速度就会减小。

八、锁定下记录日志

 有时候我们为了方便在室内测试飞机的新功能,希望能够在飞机未解锁的情况下记录日志以便分析问题,可以将LOG_DISARMED参数设置为1即可。

九、设置Pixhawk的各个通道输出功能

 在APM固件的参数中,BRD_PWM_COUNT是用来设置MAIN OUT的前几个是有PWM输出的,默认四轴模式下此值默认是4,,六轴为6,八轴为8,我们也可以根据自己的需要调整;另外,SERVOx_FUNCTION是用来设置第x个输出通道功能的,可以用来将该通道设置为多旋翼的某个电机控制输出,也可以设置为遥控器某个通道的直接输出,还可以设置为飞翼的舵面控制输出等。其中SERVO1_FUNCTION ~ SERVO8_FUNCTION对用Main输出的通道1~8,SERVO9_FUNCTION ~ SERVO14_FUNCTION对应AUX输出的1~6。

 以将AUX1输出设置为遥控器通道6的输入为例,将SERVO9_FUNCTION设置为56(RCIN6)即可,这样,飞控AUX1将直接输出遥控器第6通道的输入,这时如果将一个舵机插到AUX1上,等效于将直接插到遥控器接收机的第6通道上。

 SERVOx_FUNCTION具体数值的意义,可以参考MissionPlanner全部参数列表中对应参数的注释,非常详细。这里列举出几个比较生僻的英文缩写:

 1、RCPassThru:RC pass through,遥控器直通输出,(疑似指的是遥控器第x通道直接输出到飞控的第x通道,这个功能我也没有用过);

 27:Parachute:降落伞,这个通道将用来控制打开降落伞;

 29:LandingGear:起落架控制;

 51、RCIN1: RC in 1,遥控器第1通道的值,指的是将遥控器第一通道的输入直接通过这个飞控通道输出出去。

关于此类参数的更加详细的解释,请看如下链接:http://www.nufeichuiyun.com/?p=1432

十、飞控串口设置

 对于Pixhawk飞控,有5个可用串口,这个5个串口是完全对等关系的,任何一个串口都可以设置为连接数传电台、GPS、串口接口的定高设备、串口接口的图像识别模块等等。只需要将SERIALx_PROTOCOL设置为对应功能即可,另外,对应的SERIALx_BAUD用来设置该串口的波特率,不要漏掉(x:1~5)。这两个参数是重启后生效。

 “SERIAL”这个单词对应硬件里的“UART”、“USART”,都是“串口”的意思。比如,SERIAL3_PROTOCOL,意思指的是“串口3 的通信协议”,看到这些单词不要怕,请常用“金山词霸”、“有道词典”之类的词典查一下,这些偏专业的词汇,就是需要大家一点一点地学习记忆的,其实也没有多少。

 SERIALx_PROTOCOL的各个数字对应的功能如下:

  • -1:无用,关闭该串口;
  • 1:Mavlink 1,用来连接地面站(gcs),但是不局限于地面站,任何走Mavlink协议的外设都可以接这个接口;
  • 5:GPS
  • 9:串口接口的定高传感器(超声波、雷达)
  • 18:光流设备

 以将串口3设置为数传电台为例,参数设置如下:

  • SERIAL3_PROTOCOL:1 (1:Mavlink,指的就是用来连接地面站的数传电台);
  • SERIAL3_BAUD:57 (57:57600,一般情况下,我们会将数传电台的波特率设置为57600,注意,这个值不是绝对的,如果你的数传电台收发端配置的都是115200,那么此处应该设置为115);
  • SERIAL3_OPTIONS:0 ( 对于4.0.0以后版本的固件,参数中增加了SERIALx_OPTIONS这个参数,这是用来设置串口的一些硬件属性的,比如交换TX与RX、半双工模式等等,绝大部分情况下我们都是用不到的,设置为0即可。 )。

 关于波特率,我再强调一下,对于飞控的一个连接数传电台的串口,其实整个系统中总共有4处与之相关的波特率:

  1. 飞控该串口的波特率(通过刚才讲的飞控参数设置);
  2. 与该串口连接的天空端数传电台的波特率,通过数传电台专用设置软件修改,不同家的不一样,请联系电台卖家索要;
  3. 地面端数传电台的波特率, 通过数传电台专用设置软件修改,不同家的不一样,请联系电台卖家索要;
  4. 地面站软件波特率,如MissionPlanner右上角“连接”按钮左边的那个波特率设置下拉列表。

 请注意,要想连通,这四个波特率必须是一样的。

十一、磁罗盘、GPS失控保护

 从多旋翼3.3版本固件以后,磁罗盘、GPS的失控保护被统一整合到了EKF的失控保护里了,在需要用到位置信息的模式下(如Loiter、POSHold、Auto、RTL、Guided)EKF失控保护会生效,而在一些不需要位置信息的模式下(如Stablize、AltHold、Acro)EKF失控保护是不会被触发的。相关参数如下:

  • FS_EKF_ACTION:触发EKF失控保护后执行的动作,默认是1,降落(Land),注意此时由于位置信息已经丢失,这里的降落是手动控制的那种降落,需要飞手手动控制俯仰和横滚来维持水平位置;
  • FS_EKF_THRESH:用来设置EKF失控保护触发的敏感度。此值设为0来关闭EKF失控保护,此值越大,EKF触发概率越小,反之越大;0.8~1.0之间的值时,EKF失控保护触发的概率会较小,此时如果GPS或者磁罗盘出现问题,飞机会先飘一会,然后才可能触发EKF失控保护;低至0.6的值,EKF触发会更迅速一点,但是可能导致你在较大的机动性操作时也误触发EKF失控保护,因此请谨慎选择此值。

十二、设置自动返航(RTL)的默认高度

 APM固件中使用如下两个参数设置自动返航(RTL)时的默认高度:

  • RTL_ALT:返航最低高度,单位:厘米。切自动返航模式时(或者AUTO模式走到RTL航点时),飞控首先比较当前高度与RTL_ALT值的大小:如果飞机当前的高度高于RTL_ALT,则飞机自动以当前高度水平移动到Home点(一般是起飞点)的上空,然后自动降落;如果飞机当前高度低于RTL_ALT,则飞机先爬升到RTL_ALT,然后以RTL_ALT高度水平移动到Home点的上空,然后再自动降落。这是一种保护机制,防止在较低高度下飞机直接返航时撞到障碍物;
  • RTL_ALT_FINAL:这个参数用来设置自动返航后最终飞机要保持的高度,单位:厘米。如果这个值设置为0,则自动返航后会自动降落;如果这个值不为零,则飞机会保持在Home上空这个参数定义的高度处并悬停。一般情况下,我们都将这个值设置为0。

十三、禁用安全开关

 一般情况下,多旋翼飞机不需要安装安全开关,但是APM固件默认是启用安全开关的,我们可以通过参数禁用安全开关,参数设置方法如下:

  • BRD_SAFETYENABLE:设置为0即可,注意,飞控重新上电后生效。

十四、修改Loiter、Auto、RTL、Land模式下的飞行速度

  • WPNAV_SPEED:自动航线飞行(Auto模式)时的最大水平飞行速度,单位cm/s,比如500指的是最大水平飞行速度为500cm/s = 5m/s;
  • WPNAV_SPEED_DN:自动航线飞行(Auto模式)时的最大下降速度,单位cm/s,比如150指的是最大下降速度为150cm/s = 1.5m/s;这里面的“DN”是英文单词“down”的简称;
  • WPNAV_SPEED_UP:自动航线飞行(Auto模式)时的最大上升速度,单位cm/s,比如250指的是最大上升速度为250cm/s = 2.5m/s;
  • LOIT_SPEED:定点模式(Loiter)下的最大水平飞行速度,单位cm/s,比如1250指的是最大水平飞行速度为1250cm/s = 12.5m/s;
  • PILOT_SPEED_UP:定点模式(Loiter)下最大上升速度,单位cm/s,比如250指的是最大上升速度为250cm/s = 2.5m/s;
  • PILOT_SPEED_DN:定点模式(Loiter)下最大下降速度,单位cm/s,比如50指的是最大下降速度为50cm/s = 0.5m/s;如果此值设为0,则飞控内部会认为最大下降速度等同于最大上升速度,比如:PILOT_SPEED_UP=250,PILOT_SPEED_DN=0,则定点模式下最大上升速度和最大下降速度都为2.5m/s;
  • RTL_SPEED:RTL模式下的最大水平速度,单位cm/s,如果此值设置为0,则RTL时最大水平速度由上面讲的“WPNAV_SPEED”参数决定;
  • LAND_SPEED:自动降落(Land)时,当高度低于“LAND_ALT_LOW”这个参数定义的高度时,飞机的最大下降速度,单位cm/s;
  • LAND_SPEED_HIGH:自动降落(Land)时,当高度高于“LAND_ALT_LOW”这个参数定义的高度时,飞机的最大下降速度,单位cm/s;如果此值设置为0,则飞控在此阶段默认使用“WPNAV_SPEED_DN”的值代替它;这是APM在自动降落时的安全策略,比如:LAND_SPEED=50,LAND_SPEED_HIGH=200,LAND_ALT_LOW=1000,则在自动降落时,如果高度高于10米,则飞机以2m/s的速度快速下降,当高度低于10米时,立即将下降速度降低为0.5m/s开始缓慢下降。

 注意,上述参数中,Loiter模式和POSHold模式使用的是相同的参数,效果一样。Stablize模式下对于飞控来讲根本就没有速度这个概念,因此完全没有任何速度限制,上述参数与之无关。

十五、修改固定翼飞行时的转弯半径

  • LIM_ROLL_CD:转弯时最大横滚角,单位:厘度(1度=100厘度)。增大这个值后,转弯会更快一点。

十六、修改自动降落时自动减小下降速度的高度门限

 默认情况下,多旋翼在自动降落时,当高度低于10米后会自动以较小的速度下降,这是一种保护机制,这个高度是受LAND_ALT_LOW这个参数控制的,单位是厘米,默认值1000对应的就是10米。

十七、修改飞行模式的控制通道

 默认情况下,固定翼的飞行模式是由遥控器通道8控制的,这个与多旋翼不同(多旋翼默认是通道5),但是如果你就是想用遥控器通道5控制固定翼的飞行模式,修改“FLTMODE_CH”参数即可,其数值即为用遥控器的哪个通道控制飞行模式。同理,也可以通过此参数修改多旋翼的模式控制通道。

 注意,这个参数是“飞控重启”后生效!关于“重启飞控”这种操作,有一个潜在的大坑是:

有一种重启是“你以为你重启了,实际上你根本就没有重启!”比如,在整个系统使用电池供着电的情况下,你通过插拔USB来重启飞控,但是事实上飞控一直被电源模块供着电,重新插拔USB根本就没有导致飞控重启,于是诡异的事情就发生了:参数也修改了,飞控也“重启”了,可是就是不生效?!我把这段话“标红、加粗、加大”,希望你能看见,祝愿你每次重启飞控时都能避开这个坑!

十八、返航或者降落时使用地形高度

 TERRAIN_FOLLOW 设置为1.

十九、起飞高度

 PILOT_TKOFF_ALT,单位:厘米。当此值不为0时,解锁后油门摇杆推过50%后飞机会自动起飞到此高度并悬停,之后飞手可以手动控制飞机。

二十、多旋翼最大倾角

 ANGLE_MAX,单位:厘度(百分之一度),默认值:4500,即45度。这个默认值是一个比较大的值了,一般改为2000~3000之间即可(即20度~30度)。

二十一、设置遥测信息数据流的输出频率

 正常情况下,使用地面站软件通过USB或者数传电台连接飞控时,其内在的逻辑是:

 1、地面站打开串口(就是我们点击连接前选择的COM口);

 2、地面站从串口输出的数据中找心跳帧;

 3、找到心跳帧后开始依次从飞控中读取其所有的参数并保存在本地(打开“全部参数表”时就是列出这些参数);

 4、参数读取完成后,发送设置各种数据流下发频率的控制帧到飞控;

 5、飞控收到数据流控制帧后开始以控制帧规定的频率下发各种数据(飞机的姿态、位置、各个传感器的原始值、遥控器的输入值等等)。

 这些数据流中包含了不同的Mavlink帧,不同的Mavlink帧中包含了不同的信息,但是其中有些信息是同一类的(如磁罗盘1、磁罗盘2的原始值、加速度1的原始值等都是传感器的原始值,算作一类),因此,为了方便,APM固件将这些Mavlink帧按照功能分成了不同的数据流组,相同组的数据帧以相同的频率下发。

 当然,我们也可以直接通过修改飞控的参数来设置其各个数据流的下发频率,从而对于特定应用,可以直接通过解析飞控下发的数据来得到想要的信息,而不需要跟飞控你来我往地交互

 在“全部参数表”中,这些参数是以“SRx_xxxx”的形式存在的,其中“SR0_xxxx”对应USB的数据流频率,“SR1_xxxx”对应“Telem1”(也就是数传电台1)的数据流频率,后面的依次类推。后面的尾缀对应不同的信息组,具体如下:

  a、SRx_RAW_SENS:各个IMU、各个气压计的原始值和校准值;

  b、SRx_EXT_STAT:系统状态、电源状态、内存状态、当前航点号、地理围栏状态等各种状态;

  c、SRx_RC_CHAN:各个PWM输出通道的原始值、各个遥控器通道输入值的原始值;

  d、SRx_RAW_CTRL:归一化后的控制输入值;

  e、SRx_POSITION:飞机位置;

  f、SRx_EXTRA1:飞机姿态数据、AHRS数据;

  g、SRx_EXTRA2:空速、地速、航向、油门、高度、爬升速度等HUD信息;

  h、SRx_EXTRA3:AHRS、硬件状态、系统时间、测距仪数据、光流、震动值等;

  i、SRX_ADSB:ADSB模块数据;

  j、SRx_PARAMS:参数。

 注意,不同版本的飞控固件上述参数的数量和名称可能不同。

 对于多旋翼,上述参数可以在“ardupilot/ArduCopter/GCS_Mavlink.cpp”中找到(在该文件中搜索“ RAW_SENS ”即可找到对应的行)。

二十二、地理围栏(Fence)相关参数

 请尽量养成启用地理围栏的习惯,这是一种有效的提高飞机安全性的手段,相关参数如下:

 1、FENCE_ENABLE:0是关闭地理围栏功能,1是打开地理围栏功能;

 2、FENCE_TYPE:地理围栏的类型。注意这个是支持多选的,如下图所示,在全部参数表中,找到“ FENCE_TYPE ”,双击它后面的值,会自动打开一个选择用的小窗口,勾选你需要用到的类型即可。

  a、MAX altitude:最大高度限制,由 FENCE_ ALT_MAX参数定义最大高度,超过这个高度触发地理围栏保护逻辑;

  b、Circle:圆形地理围栏,以Home点(大部分情况下即起飞点)为圆心,FENCE_RADIUS为半径的圆,飞机飞出这个圆后触发保护;

  c、Polygon:多边形地理围栏,在地图中定义一个有“FENCE_TOTAL”个顶点的多边形,飞出这个多边形触发地理围栏;

  d、Min altitude:最低高度限制, 由 FENCE_ ALT_MIN参数定义最低高度,低于这个高度触发地理围栏保护逻辑。这个很不常用。

 3、FENCE_ACTION:超出地理围栏时飞机的动作,具体动作分类如下:

  0:只向地面站报告,无其他动作;

  1:返航(RTL);

  2:降落;

  3:智能返航(SmartRTL);

  4:悬停

 4、FENCE_MARGIN:围栏的内缩距离。比如我们定义围栏最大高度为10米,内缩为1米,那么当飞机高度超过10-1=9米的时候就执行触发围栏后的动作。同理,如果同时我们定义了围栏的最大半径为20米,那么水平方向飞机飞出去20-1=19米时也触发围栏动作。即这个值对高度和水平位置同时都生效。

 一般情况下,我们都会定义一个以起飞点为中心,一定半径、一定高度的立体圆桶型的地理围栏,对应参数设置如下:

  FENCE_ENABLE :1,打开地理围栏功能;

  FENCE_TYPE :3, MAX altitude 和 Circle ;

  FENCE_MARGIN :2,内缩2米(这个设为0也行,按需更改);

  FENCE_ ALT_MAX :100,限高100米( 按需更改 );

  FENCE_RADIUS :1000,最远距离1000米( 按需更改 );

   FENCE_TOTAL :0,由于没有启用多边形地理围栏,因此这个值不管设置为多少都行,实际不生效;

  FENCE_ ALT_MIN : 0,由于没有启用最低高度限制,因此这个值不管设置为多少都行,实际不生效;

  FENCE_ACTION :1,碰到围栏后立即返航( 按需更改 )。

二十三、设置切入“AUTO”模式时是从头执行任务还是继续执行未完成的任务

 有时候, 我们在AUTO模式下需要中断任务,切到某种手动控制模式后(Loiter模式、POSHold模式、Stablized模式、AltHold模式等等),操控飞机移动一定的距离,然后再切回AUTO模式,这时我们可能有两种不同的需求:

 1、从头执行航线任务,飞机飞向第一个航点(不管切手动之前执行到了哪个航点);

 2、继续刚才的任务,飞机飞向之前AUTO模式下正在飞向的航点(注意,这种情况只在本次上电过程中生效,如果中途给飞控重新上电了,则只会从头执行航线任务)。

 这两种切入方法由“MIS_RESTART”参数控制,其值为0时,飞机继续刚才的任务,其值为1时,则从头开始执行任务。

二十四、电机转速测量(RPM)

 飞控支持测量发动机转速(RPM)并发送给地面站,具体设置方法请参考APM官网说明文档:https://ardupilot.org/copter/docs/common-rpm.html?highlight=rpm


无人机调试问题,飞控硬件定制,固件修改,log日志分析,飞控驱动添加
请QQ联系:3500985284

经过三个月的制作,我的《无人机飞控固件开发教程》系列视频终于在“网易云课堂”上线了,本教程基于APM固件和Pixhawk硬件,讲述如何搭建飞控固件开发环境、如何编译烧写固件、如何修改固件、如何建立飞控仿真环境、如何添加自定义信息、自定义日志、如何添加外设驱动程序、如何使用OpenMV图像识别设备引导飞机飞行等,敬请支持。

https://study.163.com/course/introduction/1209568864.htm?share=1&shareId=1448054983

微信公众号:“怒飞垂云”,扫描下图添加

京ICP备19049723号   |   京公网安备 11010502039327号