ardupilot开发 --- 安装与调参篇
很好的中文参考文档,必看!!!
https://doc.cuav.net/tutorial/copter
解不了锁?电机发出滴滴声?
安全开关是否禁用?
BRD_SAFETY_DEFLT = 0 to disable the switch for systems not equipped.(BRD_SAFETYENABLE in older firmware versions)
https://ardupilot.org/copter/docs/common-safety-switch-pixhawk.html
解锁电机前的安全检查 Pre-arm Safety Checks
安全检查包括:是否未校准、配置或传感器数据是否正确等等,某一项不通过则不允许解锁电机;
目的:防止炸机;
如何禁用这些安全检查?配置 ARMING_CHECK;
在标准参数Tab menu中,或直接配置ARMING_CHECK;
安全检查失败和修复
LED flashing yellow;
地面站的控制台会提示:The first cause of the Pre-Arm Check failure will be displayed in red on the HUD window;
常见的失败提示和原因:
AHRS: waiting for home :GPS信号弱,室内?
EKF3 Roll/Pitch inconsistent by X degs :室内?
EKF3 Yaw inconsistent by x degs :罗盘有金属靠近?
AHRS: not using configured AHRS type:AHRS_EKF_TYPE配置不正确?
EKF3 waiting for GPS config data:GPS未连接或未正确配置?
其他安全检查失败:
Any failsafe (RC, Battery, GCS,etc.) will display a message and prevent arming
请参考https://ardupilot.org/copter/docs/common-prearm-safety-checks.html
解锁电机 Arming the motors
解锁电机,让电机开始运转,油门在中位值时是空转;
- 先启动遥控器,地面站;
- 接通飞机电源,等待陀螺仪校正完成(蓝灯,红灯闪烁);
- 飞控进行安全检查,若有失败项目则黄灯闪烁;
- 检查当前飞行模式是否是Stabilize, ACRO, AltHold, Loiter, or PosHold 其一;
- 如果有安全开关,长按安全开关直到指示灯长亮;
- 如果是自动模式或需要GPS信号的模式,则等待GPS锁定;
- 解锁电机(油门杆右下推?);
如何上锁电机??
在任何飞行模式下?油门杆拉到最小值15秒;
在有的,模式下是解锁不了电机的:

几点注意事项
- 确保桨叶旋转方向;
- 确保陀螺仪能正常检查倾斜;
- 确保故障保护已经正确配置,radio, battery, and ekf/gps.
- auto模式下,确保GPS锁定;
- loiter前确保Stabilize正常,RTL前确保loiter正常,auto前确保RTL正常;
- 如果在其他模式飞行时出现意外或故障,要迅速切换到Stabilize或Acro 模式;
- 要保证电池高于80%再飞行;
- 上电前要保持飞机水平放置,以进行上电后的陀螺仪校准;
- 不要设置Radio Trim;
- 飞控会在电机解锁时将当前位置作为Home点;
- 配置一个RC通道作为电机的紧急停机开关;
- 其他;
调参
根据桨叶尺寸配置MOT_THST_EXPO
要保证控制品质,就必须保证电机推理曲线的线性;
引起电机推力曲线非线性的原因主要有:
- 油门增加,电压下降;
- ESCs 的 PWM range 配置不合理;
- 螺旋桨、ESC和电机组合产生的推力非线性
thrust expo是啥?
MOT_THST_EXPO决定了推力(拉力)曲线的形状,是直线(线性)还是曲线(非线性),如下图:
- MOT_THST_EXPO为0表示推力曲线是直线;
- MOT_THST_EXPO为1推力曲线是最弯曲;
- 默认值一般为0.5; 不要相信制造商的推力曲线数据,因为它们经常不准确;
注意:Some ESCs have built-in linearizing curves and the default EXPO value of “0.65” will cause stability issues, requiring thrust stand measurements to adjust the EXPO. Typically, values of “0” to “0.2” will result.
thrust stand:译为推力测量台;

说明:
横坐标应该是推力,纵坐标是pwm;before0、0.5、1三条曲线是相同的,为了对比弯曲程度而已; 不要相信制造商的推力曲线数据,因为它们经常不准确;
MOT_THST_EXPO与螺旋桨叶尺寸的关系,下图可以作为参考,不一定准确,如果想要更准确请使用推力推量仪器进行具体测量:

总结:根据螺旋桨尺寸来配置MOT_THST_EXPO,默认取0.5;
Motors 参数
MOT_PWM_MAX: Check ESC manual for fixed range or 2000us
MOT_PWM_MIN: Check ESC manual for fixed range or 1000us
MOT_SPIN_ARM: use the motor test feature to determine a value which will reliably start the motors spinning at a low rpm as an indication of the armed state.
MOT_SPIN_MAX: 0.95
MOT_SPIN_MIN: use the motor test feature and motor test data, if available, to set the lower range of linear thrust. The default value is usually adequate for hobby uses.
MOT_THST_HOVER: 0.25 or below the expected actual hover thrust percentage (lower is safe)
限幅参数,滤波器参数(起飞前)
- INS_ACCEL_FILTER
用于加速度计的低通滤波器的剪切频率
10Hz - INS_GYRO_FILTER
用于陀螺仪的低通滤波器的剪切频率
80Hz for 5 inch props, 40Hz for 10 inch props, 20Hz for 20 inch props (or larger) - ATC_ACCEL_P_MAX:
pitch通道允许的角加速度最大值
110000 for 10 inch props, 50000 for 20 inch props, 20000 for 30 inch - ATC_ACCEL_R_MAX
110000 for 10 inch props, 50000 for 20 inch props, 20000 for 30 inch props - ATC_ACCEL_Y_MAX
27000 for 10 inch props, 18000 for 20 inch props, 9000 for 30 inch props - ATC_RAT_PIT_FLTD: INS_GYRO_FILTER / 2
Pitch axis rate controller derivative frequency in Hz - ATC_RAT_PIT_FLTT: INS_GYRO_FILTER / 2
Pitch axis rate controller target frequency in Hz - ATC_RAT_RLL_FLTD: INS_GYRO_FILTER / 2
- ATC_RAT_RLL_FLTT: INS_GYRO_FILTER / 2
- ATC_RAT_YAW_FLTE: 2
Yaw axis rate controller error frequency in Hz - ATC_RAT_YAW_FLTT: INS_GYRO_FILTER / 2
Yaw axis rate controller target frequency in Hz
以上参数的配置可以在:SETUP/Mandatory Hardware/Initial Parameter Setup
测试自稳,调节参数
以自稳模式尝试推动油门起飞;
如果飞机左右摇晃很厉害则尝试减小以下角速度环的参数50%:
- ATC_RAT_PIT_P
- ATC_RAT_PIT_I
- ATC_RAT_PIT_D
- ATC_RAT_RLL_P
- ATC_RAT_RLL_I
- ATC_RAT_RLL_D
减小到不来回震荡为止;
测试定高,调节参数
确保MOT_HOVER_LEARN为2;
以自稳模式起飞并保持在5m左右的高度;
让高度控制器持续作用30秒左右直到飞机高度稳定,飞机稳定后MOT_THST_HOVER参数会被自动设置???
将飞机Land,然后调节一下参数:
- PSC_ACCZ_I :2 * MOT_THST_HOVER
- PSC_ACCZ_P :MOT_THST_HOVER
调节后如果飞机在定高模式下仍然上下起伏很明显,尝试调小一下参数50%,持续调小直到稳定: - PSC_POSZ_P
- PSC_VELZ_P

陷波滤波参数
自稳,定高模式都没问题后,尝试调节陷波滤波参数以获得更好的飞行性能:
不同于上节提到的低通滤波器;
在配置如何配置陷波滤波前,先要测量那种频率的信号需要被滤除?一般哟啊滤除的是电机引起的震动信号,那如何测量这些震动信号的频率?
See the Measuring Vibration with IMU Batch Sampler page
Throttle Based Dynamic Notch Setup
测量震动噪声的频率 震动测量
IMU BatchSampler:用于记录IMU的高频数据到log中;
这些数据可用于FFT分析;
INS_FAST_SAMPLE:选择哪个IMU作为采样源;Bit 0 First IMU、 1 Second IMU 、2 Third IMU;
INS_GYRO_RATE:设置采样频率;Bit 0 1kHz 、1 2kHz、 2 4kHz、 3 8kHz;
pre and post-filter :进行滤波前和滤波后1KHz采样;
起飞前的log配置:
INS_LOG_BAT_OPT:采样哪些?什么时候?

INS_LOG_BAT_MASK:从哪个IMU采样?

INS_LOG_BAT_LGIN:批采样之间的间隙,一般不需要更改;
LOG_BITMASK:一般不做改动,保持默认值;

起飞飞机(保证有SD卡),并保持悬停至少30 second;
下载日志:参考log篇;
分析:
配置陷波滤波器参数
只针对陀螺仪?只有陀螺仪有陷波滤波?谐波陷波滤波?harmonic notch filter?
震动频率的来源:电机的旋转频率以及该旋转频率的谐波(2次3次?);
如果存在多个震动来源,并且震动频率不同,可以考虑启用多个陷波滤波器,但是每个滤波器就会占用一定cpu资源,要慎重启用;如INS_HNTCH_ENABLE = 1 启用滤波器1,INS_HNTC2_ENABLE = 1启用滤波器2;
关于陷波滤波器的参数:
-
设置模式为Throttle Based Dynamic Notch
INS_HNTCH_MODE = 1. -
开启陷波滤波器
INS_HNTCH_ENABLE = 1 -
INS_HNTCH_REF = hover_thrust
频率的放大系数,这个参数决定了陷波频率随着油门变化而变化的程度;mode为1时一般将其设置为0;
设为0时为静态陷波滤波器;mode不同该参数的设法不同,请参考文档;
hover_thrust如何获取?先将INS_HNTCH_REF设为0,在自稳模式下悬停30秒,日志回放:

-
INS_HNTCH_FREQ
陷波滤波器的中心频率,即设置为要滤除的频率; -
INS_HNTCH_BW
陷波滤波器的带宽,一般设置为中心频率的一半,即 INS_HNTCH_FREQ / 2 -
INS_HNTCH_FM_RAT
???
保持默认值; -
INS_HNTCH_HMNCS
要滤除的谐波,以INS_HNTCH_FREQ 为基波;例如INS_HNTCH_HMNCS设为3,则要滤除的信号包括:基波、1次2次3次4次谐波??保持默认值一般不改;
陷波滤波器调好后将INS_LOG_BAT_MASK 设置回0,以减少log数据,降低内存开支;
开启多个陷波滤波(当有多个震动来源时)
当有不同频率的震动来源时可能需要启用多个陷波滤波器,但是会占用更多的CPU资源,要谨慎考虑;
启用方法:
INS_HNTCH2_ENABLE = 1 其他参数 xxx_HNTCH2_xxx 的配置方法同上;
悬停油门配置 Setting Hover Throttle
为啥要配置这个值?有什么用?
在非手动、自动模式下,这个值 MOT_THST_HOVER 会作为油门的初始值,然后加上姿态控制高度控制的控制量油门映射;
设置方法:
- 手动配置:
自稳下悬停30秒,下载log数据并绘制:

MOT_THST_HOVER 设置为悬停时曲线的平均值
MOT_HOVER_LEARN:自动学习?

tirm 自稳模式的配平 使悬停
自动配平?参考文档;
手动配平?手动微调 AHRS_TRIM_X 和 AHRS_TRIM_Y 的值;
RC input 映射配置

RCMAP_x 只负责映射4个通道,一般配置为前4个;其他通道的映射靠 FLTMODE_CH和 RCx_OPTION。

非标准外设?
双GPS?
https://ardupilot.org/copter/docs/common-gps-blending.html#common-gps-blending
最好使用同一制造商的两个GPS;
- SERIAL4_PROTOCOL = 5 / “GPS”. Alternatively telemetry port 1 or 2 can be used by setting SERIAL1_PROTOCOL or SERIAL2_PROTOCOL to 5.
- GPS_TYPE2 = 1 / “AUTO” or the specific number corresponding to the type of GPS
- GPS_AUTO_SWITCH = 2 / “Blend”. Alternatively set to 1 / “UseBest” to only use the better GPS. The better GPS is decided based on the GPS’s self reported accuracy;

各串口的使用场景(以mro Pixhawk 为例):

- Serial 1 (Telem 1) and Serial 2 (Telem 2) Pins: 6 = GND, 5 = RTS, 4 = CTS, 3 = RX, 2 = TX, 1 = 5V.
- Serial 3 GPS port.
- SERIAL 4/5 port - due to space constraints two ports are on one connector.
地面站PID参数
Stabilize Mode
遥控器摇杆映射:
- roll杆:roll期望角;最大最小值可配置;
- pitch杆:pitch期望角;
- yaw杆:偏航角速度期望值;
- 油门杆:控制电机的转速;
- 串级PID相关的姿态控制器参数:

Altitude Hold Mod
遥控器摇杆映射:
- roll杆:roll期望角;最大最小值可配置;
- pitch杆:pitch期望角;
- yaw杆:偏航角速度期望值;
- 油门杆:上升/下降的速度期望值,上下限可以在 PILOT_SPEED_UP、PILOT_SPEED_DN 中配置;
什么时候上升?什么时候下降?
当油门杆超过中位值的 deadband (或称deadzone)区域时飞机上升,反之则下降,deadband 一般设置为油门杆 40% ~ 60%位置,根据自稳模式下飞机悬停时候的油门pwm位置而定,由THR_DZ 配置;
高度控制的3个串联PID结构示意图:

3个PID对应的参数:

注意:Throttle Accel PID 的参数,要保持I是P的两倍;
总结关于定高模式的重要参数:
- 3个串联PID的参数,在地面站中可以设置;注意:Throttle Accel PID 的参数,要保持I是P的两倍;
- PILOT_SPEED_UP 上升速度最大值
- PILOT_SPEED_DN 上升速度最小值,默认为0最好改一下;
- PILOT_ACCEL_Z 一般使用默认值;
- THR_DZ 油门中位值死区,用于判断上升或下降指令;
定点模式 Loiter Mode
Loitter Mode自动尝试保持当前位置、航向和高度。飞行员可以在Loiter模式下驾驶直升机,就像它在更手动的飞行模式下一样,但当松开操纵杆时,飞行器将减速至停止和保持位置。
遥控器摇杆映射:
- roll杆:水平速度 x 分量期望角;最大最小值可配置;当摇杆回归中位值时,会触发位置控制器,位置期望值是rol、pitch摇杆回归中位值时刻的位置量;
- pitch杆:水平速度 y 分量期望角;最大最小值可配置;
- yaw杆:偏航角速度期望值(与定高模式相同;);
- 油门杆:与定高模式相同;
先关参数总结:

地面站参数位置:

Auto Mode 任务模式、自动模式
什么是mission script?
mission script 包含航点指令、和其他指令(如拍照)等;
mission script被保存在Ardupilot的EEPROM中,在auto模式下被执行;
如何创建mission script?
请参考:Planning a mission with waypoints and events
mission script 支持哪些命令??
请参考:Mission Command List
AUTO(自动)模式在直线上的每个航路点之间导航,当它接近每个航路点时,每个航路点都沿着一条平滑的曲线走向下一个航路点(S曲线)。当它接近一个航路点时,它控制路径在每个航路点的WPNAV_RADIUS内。根据需要,将速度降低到WPNAV_speed以下,以将路径保持在设定的拐角横向加速度限制参数(WPNAV_ACCEL_C)内。

AUTO模式包含AltHold模式的高度控制和Loiter模式的位置控制,在这些模式运行良好之前不应尝试。
在进入AUTO(自动)模式之前,必须先解锁电机;AUTO_OPTIONS可以配置成不需要先解锁;
如何进入自动模式开始任务?
- 如果飞机从地面(未起飞)开始执行任务,应确保油门最低,然后切换到自动飞行模式,然后提高油门,当油门升到零度以上的那一刻,飞机就开始执行任务。
- 如果从空中开始执行任务,则飞行模式切换到自动的那一刻,任务将从第一个命令开始。如果任务中的第一个命令是起飞命令,但车辆已经高于起飞命令的高度,则起飞命令将被视为完成,车辆将移动到下一个航路点。
- 在任何时候,飞行员都可以通过将飞行模式开关返回到另一种飞行模式(如稳定或Loiter)来重新控制自动驾驶仪。如果飞行员随后再次切换到AUTO(自动),任务将从上一个命令恢复。
- 在执行任务期间,飞行员的滚转、俯仰和油门输入被忽略,但偏航操纵杆可以超越偏航。例如,这允许飞行员在直升机执行任务时瞄准直升机的机头(可能有一个硬装相机)。当飞机经过下一个航路点时,自动驾驶仪将尝试重新控制偏航。
如何结束任务?
任务通常应该有一个RTL作为他们的最终命令,以确保直升机在任务完成后返回。或者,最终命令可以是具有不同位置的LAND。如果没有最后的RTL或LAND命令,直升机将简单地停在最后的航路点,飞行员将需要用发射器重新控制。
当直升机在任务结束时着陆时,飞行器应自动解除武装,但偶尔飞行器可能感觉不到着陆,飞行员可能需要压低油门,以另一种模式起飞,如稳定或Loiter,然后手动解除飞行器的武装
参数?

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
