文章目录
[25.1.1 测试传感器](#25.1.1 测试传感器)
[25.1.2 校准传感器](#25.1.2 校准传感器)
[25.1.3 测距传感器检查](#25.1.3 测距传感器检查)
[25.1.4 预解锁检查](#25.1.4 预解锁检查)
[25.1.5 首次飞行](#25.1.5 首次飞行)
[25.1.6 第二次飞行](#25.1.6 第二次飞行)
[25.1.7 正常操作设置](#25.1.7 正常操作设置)
[25.1.8 视频示例(Copter-3.4)](#25.1.8 视频示例(Copter-3.4))
[25.1.9 空中校准](#25.1.9 空中校准)
25.1.1 测试传感器
将传感器连接至自动驾驶仪后,使用 Mission Planner 连接至自动驾驶仪并打开"飞行数据"屏幕的"状态 "选项卡。如果传感器正在运行,你将看到 opt_m_x、opt_m_y 和 opt_qua 值均不为零。
25.1.2 校准传感器
1. 连接自动驾驶仪,并将 LOG_DISARMED 设置为 1,确保启用加锁时的日志记录功能。
2. 找一个表面有纹理、光线充足(自然光或强烈的白炽灯)的地方。
3. 拆除螺旋桨(安全第一)。
4. 接通飞行器电源,将水平仪放在远离身体和眼睛的位置。
5. 在大约一秒钟的时间内,围绕横滚轴的飞行器旋转 -15 至 +15 度,然后再返回。重复 5 到 10 次。在旋转过程中,闭上一只眼睛,就能使传感器中心与背景保持静止。
6. 围绕飞行器俯仰轴重复。
7. 下载数据闪存日志,绘制 OF.flowX、OF.bodyX 和 IMU.GyrX 数据。它应该是这样的。
8. 如果 OF.flowX 大于或小于 OF.bodyX,则可以通过更改 FLOW_FXSCALER 参数来进行调整。
9. 如果 OF.bodyX 与 IMU.GyrX 不相关或符号相反,则可能是 FLOW_ORIENT_YAW 参数设置错误或流量传感器未朝向下方。
10. 绘制 OF.flowY、OF.bodyYband 和 IMU.GyrY 数据。它应该是这样的。
11. 如果 OF.flowY 大于或小于 OF.bodyY,则可以通过更改 FLOW_FYSCALER 参数进行调整。
12. 如果 OF.bodyY 与 IMU.GyrY 不相关或符号相反,则 FLOW_ORIENT_YAW 参数可能设置错误,或者流量传感器没有朝下。
25.1.3 测距传感器检查
检查流量传感器校准测试闪存日志中的 EKF5.meaRng 信息。检查以下内容:
1. 可进行连续量程测量。
2. 它在地面上输出的距离是预期值的 10cm(请记住,在车辆横滚或俯仰时,测得的距离会增加,因为激光是在斜面上测量的)。
25.1.4 预解锁检查
要允许在没有 GPS 的情况下在 Loiter 解锁和起飞,应关闭 GPS 解锁检查,如下图所示。取消选中"全部"和"GPS",并选中所有其他选项。
由于启用光流时需要声纳/测距仪数据良好,因此需要执行额外的解锁前检查。
在飞行器加锁时,应将飞行器直升至至少 50cm 但不超过 2m 的高度(如果测距仪显示距离超过 2m,则需要重新启动自动驾驶仪)。
当解锁检查失败时,错误信息为"PreArm: check range finder(预解锁:检查测距仪)"。
可以通过取消选中"参数/声纳"解锁检查来禁用该检查。
25.1.5 首次飞行
1. 对于 EKF2,设置 EK2_GPS_TYPE = 0;对于 EKF3,设置 EK3_SRC1_VELXY = 0(我们不希望 EKF 在此阶段使用光流)。
2. 在 50cm至 3m 的高度范围内,以小倾角在 STABILIZE 或 AltHold 条件下悬停(旋翼),或在 QSTABILIZE 或 QHOVER 条件下悬停(四旋固定翼)。
3. 下载闪存日志,并在 Mission Planner 中绘制以下内容。
4. EKF5.meaRng 应与飞行器高度变化相关联。
5. OF.flowX 和 OF.flowY 应该是变化的。
6. OF.bodyX 和 OF.bodyY 应与 IMU.GyrX 和 IMU.GyrY 一致。
25.1.6 第二次飞行
! Warning
要安全地完成这次飞行,飞行器周围至少需要 15m 的净空。如果光流速度估计不准确,你将几乎没有预警,飞行器可能会很快倾斜到最大倾斜角。
1. 对于 EKF2,设置 EK2_GPS_TYPE = 3;对于 EKF3,设置 EK3_SRC1_VELXY = 5 和 EK3_SRC1_POSXY = 0,以使 EKF 忽略 GPS 并使用流量传感器。
2. 确保发射机上有可用的 Loiter 和悬停模式。
3. 在地面控制站地图上设置"EKF 原点"。在 Mission Planner 中单击右键,选择"在此设置Home点",并选择设置"在此设置 EKF 原点"。
4. 在 Loiter 状态下起飞,将旋翼飞机/四翼飞机升至约 1m 的高度。
5. 如果飞行器开始加速离开或出现不稳定的俯仰或横滚运动,则切换到悬停和着陆。你需要下载日志文件并在论坛(the forums)上分享,以了解原因。
6. 如果它能保持位置不变,那么恭喜你,你成功了,现在可以开始尝试改变高度,并在 Loiter 模式下移动它了。
25.1.7 正常操作设置
For EKF2:
1. 验证 EK2_ENABLE = 1,启用 EKF2。
2. 根据光学流量传感器设置 EK2_FLOW_DELAY。
3. 要只使用光流量传感器而不使用 GPS,请将 EK2_GPS_TYPE 设置为 3;要与光流量传感器一起使用 GPS,请将其设置为 0。
For EKF3:
! Note
ArduPilot 固件 4.1 及更高版本默认启用并使用 EKF3。
1. 验证 EK3_ENABLE = 1,启用 EKF3。
2. 设置 AHRS_EKF_TYPE = 3 以使用 EKF3。
3. 设置 EK3_SRC_OPTIONS = 0 可禁用 FuseAllVelocities。
4. 根据光学流量传感器设置 EK3_FLOW_DELAY。
5. 设置 EK3_SRC1_POSXY = 3(来自 GPS 的主水平位置,设置为 0 时只使用光流量传感器)。
6. 设置 EK3_SRC1_VELXY = 5(来自 OpticalFlow 的主要水平速度)。
7. 设置 EK3_SRC1_POSZ = 1(来自气压计的主垂直位置)。
8. 设置 EK3_SRC1_VELZ = 0(无主垂直速度传感器)。
9. 设置 EK3_SRC1_YAW = 1(来自罗盘的主偏航/航向)。
- 此外,GPS 还可以使用 EKF 光源切换功能与 OpticalFlow 协同工作。
- 有关 EKF 信号源切换的信息,请参阅 GPS / Non-GPS Transitions。
! Note
当旋翼飞机启用了光流传感器(以及测距仪)并将其指定为唯一的水平位置源(例如,`EK3_SRCx_VELXY``=OpticalFlow 和`EK3_SRCx_POSXY``=None),且飞行器以需要位置估计的飞行员控制模式飞行(即 Loiter 或 PosHold)时,飞行器将不会爬升到测距仪在 `RNGFNDx_MAX_CM 中指定的最大高度之上。这是一种安全机制,否则当飞行器飞出测距仪范围时就会触发 EKF 故障安全。
25.1.8 视频示例(Copter-3.4)
25.1.9 空中校准
Copter-4.2.0 包含飞行校准程序:
1. 设置 RCx_OPTION = 158(光流校准)以允许从辅助开关(auxiliary switch)启动校准。
2. 将 EKF3 设置为使用 GPS(默认值)。
- EK3_SRC1_POSXY = 3 (GPS)
- EK3_SRC1_POSZ = 1 (Baro)
- EK3_SRC1_VELXY = 3 (GPS)
- EK3_SRC1_VELZ = 3 (GPS)
- EK3_SRC1_YAW = 1 (Compass)
- EK3_SRC_OPTIONS = 0 (Disable FuseAllVelocities)
3. 在 Loiter 模式下将飞行器飞行至少 10m(越高越好,但要在测距仪的限制范围内)。
4. 将辅助开关拉高以启动校准。
5. 使用横滚杆和俯仰杆来回摇摆飞行器的横滚和俯仰方向。
6. 检查 GCS "信息"选项卡是否有如下确认校准完成的输出结果。
FlowCal: Started
FlowCal: x:0% y:0%
FlowCal: x:66% y:6%
FlowCal: x:100% y:74%
FlowCal: samples collected
FlowCal: scalarx:0.976 fit: 0.10 <-- lower "fit" values are better
FlowCal: scalary:0.858 fit: 0.04
FlowCal: FLOW_FXSCALER=30.00000, FLOW_FYSCALER=171.0000
7. 降落飞行器并设置 EKF3 以使用 OpticalFlow。
- EK3_SRC1_POSXY = 0 (None)
- EK3_SRC1_VELXY = 5 (Optical Flow)
- EK3_SRC1_POSZ = 1 (Baro)
- EK3_SRC1_VELZ = 0 (None)
- EK3_SRC1_YAW = 1 (Compass)
- EK3_SRC_OPTIONS = 0 (Disable FuseAllVelocities)
8. 再次试飞飞行器以检查性能。
另一种方法可以避免在校准和测试之间降落和更改 EKF3 参数,即设置 GPS/Non-GPS 转换(GPS/Non-GPS transitions),以便飞行员在飞行中手动在 GPS 和光流之间切换。假设飞行员使用遥控输入 8(2 位开关)启动校准,并使用遥控输入 9(3 位开关)在 GPS 和光流之间切换,则完整的参数列表如下:
- RC8_OPTION = 158 (Optflow Calibration)
- RC9_OPTION = 90 (EKF Pos Source) low is GPS, middle is OpticalFlow, high is unused
- EK3_SRC1_POSXY = 3 (GPS)
- EK3_SRC1_POSZ = 1 (Baro)
- EK3_SRC1_VELXY = 3 (GPS)
- EK3_SRC1_VELZ = 3 (GPS)
- EK3_SRC1_YAW = 1 (Compass)
- EK3_SRC2_POSXY = 0 (None)
- EK3_SRC2_VELXY = 5 (Optical Flow)
- EK3_SRC2_POSZ = 1 (Baro)
- EK3_SRC2_VELZ = 0 (None)
- EK3_SRC2_YAW = 1 (Compass)
- EK3_SRC_OPTIONS = 0 (Disable FuseAllVelocities)
! Note
要使用飞行校准,必须启用 EKF3。这是 ArduPilot 4.1 及更高版本的默认设置。