使用的硬件
1、电脑安装地面站、X6飞控、OnePMU电源模块、RM3100罗盘、GPS定位模块(或者RTK定位模块)、SBUS接收机(数传)、遥控器

接线–GPS+指南针
- GPS的接线非常简单,将GPS接入飞控(比如:x6飞控)的(CAN1\CAN2)口通道即可,即插即用
- type-c线接飞控到电脑。GPS1_TYPE 设置为9,将GPS1的通信类型设置成DroneCAN。
- MP地面站在室内显示未定位即可。注意:室内显示未定位是正常的,室外显示3D定位(一定要在空旷地区,正上方都不要有任何遮挡物)
接线-SBUS接收机
- 使用X6飞控包装中的SBUS IN线材,将SBUS接收机连接至X6飞控的SBUS IN接口即可
设置–地面站
- MissionPlanner地面站下载
https://firmware.ardupilot.org/Tools/MissionPlanner
MP地面站
- 最新版本的Mission Planner 1.3.83存在日志下载错误
- 使用1.3.81或从帮助页面应用Beta更新!

设置–机架类型
- 初始配置>必要硬件>机架类型
- 机架类型>四轴旋翼

设置-初始配置调参
- 初始配置>必要硬件>Initial Tune Paramet
1、设置螺旋桨尺寸,电池节数,电压,点calculate initial paramer,会生成以下列表,use一列不勾选的表示不使用,点write to FC(将勾选的参数写入到飞控里)
MOT_THST_EXPO: 油门推力曲线,这个只是大概的参考数值,和电机和电调也有关系。5英寸螺旋桨为0.55,10英寸螺旋桨为0.65,20英寸道螺旋桨(或更大)为0.75。该参数应通过推力台测量得出,以获得最佳结果。
建议设置的数值比推荐的数值小0.2,如20英寸螺旋桨设置0.55.如果悬停油门小于0.3,该数值还可以减少0.1.
MOT_THST_hover 先用默认的0.2
- 电池的S数(几s电池)
- 电池的类型(锂电LiPo、高压电池Lihv)
- 勾选 4.0及以上版本的设置建议

设置-飞控方向/机头朝向
- 配置调试>全部参数表> AHRS_ORIENTATION
- 只有当飞控方向与机头方向不同时,才需要更改此设置(否则不需要)

设置-加速度计校准
- 初始配置>必要硬件>加速校准
- 将飞控依次校准放置位置为:水平、右侧、左侧、机头朝下、机头向上和背面。
- 校准加速度计,完成时点击。
- 重新启动!
- 校准水平:水平放置飞控即可。完成时点击

设置–磁罗盘
- 已零一飞行的罗盘为例:先启用罗盘。打开MissionPlanner,进入配置->全部参数表。连接到CAN1接口:CAN_P1_DRIVER = 1连接到CAN2接口:CAN_P2_DRIVER = 1
- 初始配置>必要硬件>指南针
- 磁罗盘校准>开始
- 拿着飞机绕8字,各个方向旋转,直到进度条走完(*如果接了GPS,要跟飞控同步旋转)
- A:磁力计信息栏,对于OneCompass RM3100,BUS类型为UAVCAN,Externa(外置)。
B:可通过点击上下箭头调整罗盘排序,排序第一个为优先级最高的。
C:选择哪些磁力计需要参与校准(不勾选则不使用也不参与校准)。
D:当调整了磁力计排序后,需要点击Reboot,重启控制器。
E:点击开始执行罗盘校准。(如下图2) - - 校准全程必须远离磁干扰,否则会导致指南针数据不准,影响飞行定位
- 若校准失败(提示错误),检查是否有干扰源,重新找空旷无金属区域重试
- 更换飞控安装位置或飞机结构后,建议重新校准指南针 - 重新启动飞控

设置-遥控器校准
- 初始配置>必要硬件>遥控器校准
- 校准遥控器:接收机接飞控
- 检查:俯仰、偏航、油门、升降、方向通道是否正确
- 最大/最小值校准:
依次将每个摇杆推到最大、最小位置并保持
对于有开关的通道(如飞行模式),也需要拨到所有位置 - 中点校准:所有摇杆回中,开关保持在中位

初始配置-Servo Outuput
- 初始配置>必要硬件> Servo Outuput
- 将伺服输出(Servo out)1-4设置为电机输出1-4:设置选项motor1、motor2、motor3、motor4
- 正确的伺服编号和电机编号不匹配,简单来说就是电机ABCD和1234并不是一样的顺序
- 这将在稍后的电机测试中解决

设置-电调校准
选择 ESC Calibration(电调校准)选择要校准的电调(全部或单个)
执行校准:
1. 点击 “Start” 开始
2. 按提示将油门推到最高位置(遥控器)
3. 点击 “Beep” 或等待飞控向电调发出信号
4. 电调会发出“哔哔”声,确认进入校准模式
5. 按提示将油门拉到最低位置
6. 电调再次发出确认音,表示校准完成
不要单击校准ESC,这可能会使您的FC陷入循环,并导致不支持PWM协议的数字ESC出现问题
将ESC类型设置为DShot300
解锁时旋转->0.05至0.1
旋转最小值->0.1至0.15
旋转最大值->1.0

设置-飞行模式
- 设置飞行模式开关(调试的时候用哪种,分别设置最常用的是姿态:Stabilize,定高:Aithold,悬停:loiter)
- 可以更改遥控器上控制飞行模式的频道
- 初始配置-必要硬件-飞行模式
- 配置>全部参数列表>FLTMODE_CH将完成此操作


设置-故障保护
- 一般来说,你的故障保护应该是RTL(返回起飞点):没电了自己返回起飞点。
- LOW Battery:最低电压(达到最低电压就会自动返航)。LOW Timer:最低时间。Reserved MAH:电流保留
- 默认值通常很好,但请检查电池电压和时间是否低

设置电流计-以OnePMU为例
- 初始配置>可选硬件>DroneCAN
- PWR:电源灯常亮红色
CAN通信:绿色灯,快闪表示未和飞控通信,一秒闪一次表示通信正常
SYS:三色灯,显示电池大概电量状态
绿灯亮:电池单节电芯电压 大于4.0V
黄灯亮:电池单节电芯电压低于4.0V高于3.7V
红灯亮:电池单节电芯电压低于3.5v(已OnePMU为例哦) - 电流计默认参数适合监测6S标压lipro电池,其他节数的电池需要修改参数,操作如下:
地面站显示出电池电压后,在初始设置>>可选硬件>>DroneCAN/UAVCAN界面,点击MAVLINK-CAN1,将显示出UAVCAN通信设备列表。在列表里找到Name为org.ZeroOne.PMU,点击[menu],再点击paramters,将显示出电流计的参数列表 - 可更改的参数如下:
- BAT_CELL_NUM 电池节数,默认6节电芯
BAT_FULL_VOLTAGE 单节电芯满电电压,4200表示4.2V
BAT_LOW_VOLTAGE 单节电芯最低电压
CAN_NODE_ID CAN通信节点ID,默认0表示飞控给电流计自动分配id,用户可手动分配id范围在1~255.
修改参数点击写入参数,即完成配置。


设置-电机测试
- 初始配置>可选硬件>电机测试
- 一定要移除桨叶!!!!
- 您必须测试并检查电机是否正确旋转,以及它是否按照您的图表以正确的方向旋转
- 1. 选择要测试的电机(A、B、C、D)
2. 将油门滑块缓慢推到 10%~30%(不要太高)
3. 观察电机转向、转速是否正常
4. 依次测试每个电机,确认工作状态一致
5. 测试完毕,将油门滑块拉回 0% - 注意事项:
严禁带桨测试,防止伤害
测试时手不要接触旋转部件
如发现电机异常(异响、抖动、不转),立即停止测试并检查接线
避免长时间高转速空转,防止电机过热 - 仔细检查,否则起飞时会发生大事故!
- 电机ABCD和1234并不是一样的顺序!请看下图

设置–日志记录
- 初始设置>可选硬件>FFT设置
- 正确的日志设置对于调优至关重要
- 样本计数=1024或2048
- 通常,最好只记录IMU1,以避免过载和记录遗漏
- 日志位掩码应按所示设置
- 这捕获了调优过程所需的所有数据

- 配置\调试>全部参数表
- INS_LOG_BAT_OPT = 5

悬停测试
- 在自稳模式下(Stablize)进行悬停测试
- 如果您的俯仰轴是颠倒的,请设置参数RC2_REVERSED=1以解决此问题
下载日志
- 您可以在任务规划器>数据>DataFlash日志中下载日志
- 日志空间有限,因此除非您有一个大SD卡,否则会定期清理日志
- 下载日志后,您可以在任务规划器中查看它
- 记下日志的保存位置。通常\文档\任务计划\日志\ QUADROOR\ 1

PID调试
背景
- Ardupilot使用一系列PID控制器来控制无人机
- 为了获得良好的自主飞行性能,需要对每个PID回路进行调整
- 我们将从底层开始,一路向上
Ardupilot自动调试
- Ardupilot有几个自动调谐功能,可以为速率和角度控制器找到良好的PID值
- 这些工具可以产生适合在小型无人机上业余使用的曲调
- 他们将在更大的无人机上挣扎,并产生次优的曲调,这些曲调可能会危险地无法飞行!
- 有条不紊的手动调整方法将更安全地产生更好的结果
- 这就是我们将在本指南中介绍的内容
PID-FF-DFF控制器
- Ardupilot的PID-FF-DFF控制器由五个主要部分组成
- P是比例项
- I是整数项
- D是衍生项
- FF是前馈术语
- DFF是导数前馈项
P:I 平衡和D->P->I->DFF->FF调谐方法
- 正如D项阻止P项振荡一样,P项阻止I项振荡
- 因此,控制器有一个理想的P:I比,允许最大I项没有振荡
- 这给出了指导调谐过程的关系D->P->I->DFF->FF:首先是D项,然后是P项、I项、DFF,最后是FF

Ardupilot有3个速率控制器
- 横滚、俯仰和偏航各一个
- 它们都以同样的方式工作
- 然而,偏航轴上的导数项通常设置为0,因为偏航轴上缺乏权威意味着它通常过度阻尼,不需要额外的导数项
调整航班提示
- PID整定飞行由所有3轴上的剧烈摆动组成
- 当你做急转弯动作时,一定要抓住棍子,让它回到中心
- 如果你松开操纵杆,它们会在弹回时绕中心反弹,这会使四边形摆动(当你没有摆动时,可能会让你觉得P增益太大)
- 您可以在“稳定”或“高度保持”模式下进行这些快速移动(但不能在“Loiter”模式下)
PID审查—加载日志
- 在ArduPilot WebTools PID Review中打开您的日志:https://firmware.ardupilot.org/Tools/WebTools/PIDReview/
- 检查飞行数据图是否正确,是否没有间隙(记录遗漏)
- 选择PID ROLL、PITCH或YAW进行查看

PID审查——读取时间序列数据
- 在默认缩放级别下,时域数据不可读
- 放大日志中您在选定轴上摆动无人机的部分

- 在这个缩放级别,我们可以看到各个动作
- 目标是让实际线和目标线完美地相互重叠
- 仅使用时间序列数据就可以调整P:D平衡
- 这很有用,因为对于某些控制器,我们只能轻松访问时间序列

调整P:D平衡
如果没有DFF,实际值将始终落后于目标值,目前还可以

- 也可以使用PIDReview中的阶跃响应进行此分析
- 您可能会发现此视图更容易,但信息是相同的

- 重要的是P:D比,而不是单个值
- 我建议在P:D平衡调整的这个阶段只更改P项,以保持简单
- 您可以在任务规划器>配置>扩展调优中执行此操作
- 除非你有一个对称的无人机,否则解锁俯仰和横滚值,并分别调整每个轴
-
速率P,I 和 D(ATC_RAT_xxx_x)项根据来自ATC_ANG_xxx_P(即角度)控制器的所需旋转速率控制到电机的输出。这通常与飞机的功率、重量、动力配置相关。例如,具有高推力的飞机可能具有 0.08 的速率滚动/俯仰 P数,而较低推力的飞机可能使用 0.18甚至更高。
· P越高,电机响应越高,以达到所需的转速。
· p过高的表现:高频振荡抖动;
· p过低表现:缓慢响应遥控器的输入,需要不断输入遥控控制平衡,有外力干扰(风吹)晃动更加厉害。
· 速率I用于补偿外力,使你的飞机能长时间保持所需的速度 ,高 I 项将快速上升以保持所需的速率,并将快速减速以避免过冲。一般和P等大,结构刚度低,轴距较大的机子i值可以稍微比p大一点。
· I增益太高:会看到缓慢的振荡
· I增益太低:打杆飞行姿态回中延时会增加。
· D 用于抑制飞机对加速度到所需设定点的响应。
· 较高的 D 会导致非常不寻常的振动,噪声会被放大,表现在电机会震动(或者金属啸叫声,发热严重)和“记 忆”效应,其中打杆控制感觉无人机反应很慢或没有反应。
· 较低D,阶跃输入后会出现过冲

振荡故障排除
- 如果你正遭受着当你减少P项时没有改善的振荡,这可能是两件事:
- D项振荡:高D增益可以独立于P项自振荡,为了解决这个问题,可以将D和P项以10%的步长减少
- 过大的滤波器延迟也会导致振荡,请仔细检查是否无法改进陀螺仪滤波器设置

绝对PID增益调整
PID增益调整
- 一旦找到无人机的P:D平衡,我们想增加整体PID增益以减少PID误差
- 他们的方法是将P、I和D增加相同的倍数
- 这使得P:D和P:I的比率保持不变
- 继续增加,直到你开始看到日志中的振荡,然后回落10-20%
- 每个轴应单独调整

在许多情况下,通过增加整体PID增益,您将看到飞行性能的显著改善

P:I平衡调整
- I term通常具有较宽的调整窗口
- 并不总是需要直接调整I项(作为整体PID增益调整的一部分除外)
- 然而,理论上增加I项可以改善目标跟踪
- I项应增加,直到日志中有I项振荡的证据,然后回落10-20%
- 每个轴应单独调整

偏航轴
- 对于典型的多旋翼机,偏航轴通常不需要D项
- 这意味着只需要调整P:I平衡和整体收益
- 在增加P和I增益之前,考虑减少较小四边形的偏航误差滤波

速率PID调整
- 在这个阶段,您应该对无人机进行出色的速率PID调整
- 如果速率调整良好,那么调整更高级别的控制器将很简单
- 希望你已经看到所有模式下的飞行行为都有了很大的改善
-
网上流传的PID整定口诀
· 参数整定找最佳,从大到小顺序查。先是比例后积分,最后再把微分加
· 曲线振荡很频繁,比例度盘要放大;曲线漂浮绕大湾,比例度盘往小扳
· 曲线偏离回复慢,积分时间往下降;曲线波动周期长,积分时间再加长
· 曲线振荡频率快,先把微分降下来;动差大来波动慢。微分时间应加长
· 理想曲线两个波,前高后低 4 比 1。一看二调多分析,调节质量不会低
· 注:以上可为调试提供一些参考,简单解析下:比例度盘放大即地面站里降低速率p,积分时间下降即i数值增加,微分降下来即D值降低。
姿态(稳定)控制调谐
姿态控制器背景
- 姿态控制器控制无人机俯仰和横滚轴相对于地面的角度以及偏航轴相对于北方的角度
- 这些是简单的比例控制器
- 期望角度和实际角度之间的差值乘以一个系数,得出目标旋转速率
姿态控制器调谐
- 您可以在“扩展调整”选项卡中调整这些控制器的P项
- 较大的值将对态度错误做出更积极的反应
- 逐渐增加该值,直到开始出现振荡,然后回落20%左右以确保稳定性

姿态记录
- 您可以在ATT日志部分查看期望角度与实际角度
- 在这里,您可以在增加姿态P增益时检查振荡或过冲
- 分别调整每个轴

姿态最大加速度
- Ardupilot为姿态控制器要求的最大角加速度提供了限制
- 这些应该根据无人机的能力进行设置
-
飞机处于stablized模式
1、确认解锁和上锁功能正常,飞机解锁后立即打杆上锁。
2、确认电机紧急锁定功能,解锁后切换到电机锁定,飞控会立即上锁。
3、飞机解锁,缓慢增加油门,使机子离地,寻找是否振荡
4、飞机一离开地面,立即将飞机尽可能轻轻地放下
5、评估您观察到的情况,以确定是否需要调整参数或是否可以安全再次起飞。
6、进行初始飞机调谐

最大倾斜角度
计算最大倾斜角度
- 通常应设置最大倾斜角度,以确保无人机具有足够的推力,即使在最大倾斜角度下也能保持高度和控制
- 该方程可能给出45°或更大的角度
- 对于大多数应用,30°的最大角度就足够了,飞行员可能会考虑更大的角度!
· PID微调
o 以 30% 的步长增加D项,直到观察到振荡,振荡是很短促的
o 以 10% 的步长减小D项,直到振荡消失
o 将 D 项再减少25%
o 以 30% 的步长增加 P 项,直到观察到振荡(快速小幅度的振动)
o 以 10% 的步长减小 P 项,直到振荡消失
o 将 P 项再减少 25%
o Stablized模式悬停无振荡,抖动的情况后,遥控器打小杆量回中,Roll和pitch都试,观察状态:
§ 若打杆就振荡或者回杆后机子有快速的振荡,则减低p值
§ 若无振荡情况,则加大杆量输入。
一般来说,对于俯仰和滚转,P和I应相等,D应为1/10 P。对于偏航,在大多数情况下,I应为1/10 P,D=0。
最大倾斜角度
计算最大倾斜角度
- 通常应设置最大倾斜角度,以确保无人机具有足够的推力,即使在最大倾斜角度下也能保持高度和控制
- 该方程可能给出45°或更大的角度
- 对于大多数应用,30°的最大角度就足够了,飞行员可能会考虑更大的角度!

设置最大倾斜角度
- 一旦确定了最大倾斜角度,设置最大角度:
- ANGLE_MAX是所有模式下允许的最大角度
- PSC_ANGLE_MAX是位置保持模式下允许的最大角度(设置为0以使用ANGLE_MAX)
- LOIT_ANGLE_MAX是在巡航模式下允许的最大飞行员请求角度(设置为0,使用ANGLE_MAX的2/3)
- 我一般会推荐:
• ANGLE_MAX = 30
• PSC_ANGLE_MAX = 0 (与ANGLE_MAX相同)
• LOIT_ANGLE_MAX = 30(与ANGLE_MAX相同)

油门PID控制器
油门控制器背景
- 油门控制器控制无人机的高度
- 它将要求的垂直加速度转换为电机输出
- 它包括P-I-D-FF-DFF项,就像速率控制器一样,并以相同的方式进行调整
-
在STABILIZE起飞,并将高度增加到3米。切换到AltHold,遥控油门杆在中间,并准备好随时切换回STABILIZE。基本会有三种状态:
- 无人机稳定悬停,这样悬停30秒完成油门学习,降落即可.查看生成的悬停油门MOT_THST_HOVER数值,若是悬停油门数值小于0.3,将ATC_THR_MIX_MAX设置成0.9
- 若是stablized模式在非常低的油门机子可以悬停,定高模式下您可能会听到发动机中相当快的振荡,则说明超调了,需要切换回stablized,降落。PSC_ACCZ_I,PSC_ACCZ_P数值减低40%,再执行一样的操作,若是还是振荡再降低10%。
- Althold模式下,若是推油门上升回中后机子会晃一晃,下降回中时也晃一晃,PI需要加大。
- 若是上下振荡,位置和速度控制器可能需要减少30%。这些值为:PSC_POSZ_P和PSC_VELZ_P。
悬停无异常后,保持悬停至少30秒,使悬停油门参数收敛到正确值。降落。全部参数表查学习的悬停油门,再配置油门加速度
· 参数配置后再stblized起飞切althold看状态,悬停正常后可尝试慢慢上下飞行,降落上锁。再用althold模式起飞(需要油门到60后机子才会起飞的)。
· 测试loiter模式
需要注意,在althold模式下加入了gps锁定位置和罗盘方向锁定,相当于机子时刻在调整位置和姿态。前面调试的pid在loiter模式下姿态控制表现可能会差异明显。操作如下:
stblized/althold模式起飞到1米高,切loiter模式
悬停,观察无人机的状态,若是有抖动则在空中切换回althold
降低p数值后,althold起飞,切到loiter,观察无抖动情况后,小幅度打杆,正常再大幅度打杆。
其他参数
Ek3_alt_M_NSE 若是飞行时出现掉高的情况增加数值,最大可加到10
垂直速度控制
- 要调整垂直速度控制器,您可以使用以下数据
CTUN > DCRt(期望爬升率)
CTUN > CRt (爬升率) - 如果油门控制器调整得当,您可能根本不需要添加太多的D项
- 您通常不需要在此控制器中添加任何前馈(FF)或I项

垂直位置控制
- 位于垂直速度控制器上方的是垂直位置控制器
- 这将垂直位置的误差转换为目标垂直速度
- 这是简单的比例(P)控制器PSC_POSZ_P
- 要调整垂直速度控制器,您可以使用以下数据
• CTUN > DAlt(期望高度)
• CTUN > Alt(高度) - 唯一需要调整的参数是PSC_POSZ_P,增加它以更积极地跟踪所需的高度
- 注意过冲/振荡,这表明PSC_POSZ_P过高

Loiter控制
- 位于角度控制器上方的是巡航控制器
- 这将目标水平加速度转换为俯仰角和横滚角
- 它还包含几个参数,用于控制无人机在巡航模式下的运动
参数
- LOIT_ACC_MAX用于校正位置误差的最大加速度
- LOIT_ANG_MAX位置保持模式下的最大倾斜角度(通常设置为等于angle_MAX)
- LOIT_BRK_ACCEL操纵杆居中时的最大制动加速度
- LOIT_BRK_DELAY操纵杆居中时的制动延迟(通常最好设置为0)
- LOIT_SPEED在Loiter模式下的最大速度
- LOIT_BRK_JERK最大制动冲击
颠簸、加速度、最大速度
- LOIT_ACC_MAX用于校正位置误差的最大加速度
- LOIT_ANG_MAX位置保持模式下的最大倾斜角度(通常设置为等于angle_MAX)
- LOIT_BRK_ACCEL操纵杆居中时的最大制动加速度
- LOIT_BRK_DELAY操纵杆居中时的制动延迟(通常最好设置为0)
- LOIT_SPEED在Loiter模式下的最大速度
- LOIT_BRK_JERK最大制动急动度(增加此值可减少停车时的漂移)

水平速度控制
- 位于角度控制器上方的是水平速度控制器
- 这将目标水平速度转换为目标加速度
- 这是另一个PID控制器PSC_VELXY_P、I、D、FF、FLTE、FLTD
- 水平速度控制器中没有导数前馈或目标滤波
水平位置控制
- 水平速度控制器上方是水平位置控制器
- 这将水平位置的误差转换为目标水平速度
- 这是一个简单的比例(P)控制器PSC_PSCXY_P
- 然而,有许多参数限制了速度和加速度目标(运动路径)
调整水平运动参数
- 对水平移动影响最大的参数是LOIT_SPEED和PSC_JERK_XY
- LOIT_SPEED更明显,将其设置为合适的最大速度
- PSC_JERK_XY更微妙,增加此值可在巡航模式下对水平控制输入做出更快速的响应
- 将PSC_JERK_XY设置得太高可能会使无人机感觉太咄咄逼人

垂直位置控制器
- 位于垂直速度控制器上方的是垂直位置航点导航控制器
- 这将垂直位置的误差转换为目标垂直速度
- 这是一个简单的比例(P)控制器PSC_PSCZ_P
- 然而,有许多参数限制了速度和加速度目标(运动路径)
垂直运动路径

调整垂直运动参数
- PILOT_SPEED_UP、PILOT_SPEED_DN通常是爬坡时的最大速度高于下降时的速度
- PILOT_ACCEL_Z控制最大垂直加速度
- PSC_JERK_Z增加该值可以减少垂直杆输入的延迟,更快地达到最大垂直加速度
- 将PSC_JERK_Z设置得太高可能会使无人机在突然垂直移动时感觉过于激进

航点导航控制器
航路点导航控制器位于所有其他控制器之上,控制无人机在自主导航时的行为
航点导航参数
- 航路点导航参数可以在
- 任务规划器>配置>完整参数列表

水平航点运动学

水平航点运动学

垂直航点运动学
