小型固定翼的自动着陆,一直是开源飞控圈子里一个又迷人又折磨人的话题。我自己的飞场测试里,见过太多次这样的场面:飞机转四边、切进下滑道、一切都还像模像样,结果到了离地几米的关键时刻,飞控像突然“瞎了”一样,没有按预期拉飘,而是带着过大的下沉率直接砸向跑道,弹起来再砸下去,运气好是断个起落架,运气不好就是整机报废。这就是圈内常说的“耀斑”降落——不是天文耀斑,而是固定翼着陆术语里的 flare 阶段失控。
这个问题的根源,绝大多数时候不在控制算法,而在高度感知。传统自动着陆依赖气压计高度,但气压计在低空的精度和稳定性,根本撑不起最后那几米的精准判断。我之前也被这个问题折腾了很久,直到把激光测距仪接入 PX4 的高度估计链路,才真正把自动着陆从“能落”变成“落得稳”。这篇文章,我就把这套方案的原理、选型、接线、PX4 配置、参数整定和实飞调试一整套流程完整讲清楚,希望能帮被 flare 折磨过的朋友少走几个月的弯路。
1. 自动着陆的难点:什么是“耀斑”降落,为什么总在最后几米出问题
1.1 一次标准的固定翼自动着陆到底经历什么
要理解“耀斑”为什么让人头疼,得先看固定翼自动着陆的完整流程。基本上可以分为五个阶段:进近下滑、拉飘(flare)、触地、滑跑、停机。前三个阶段的动作质量,直接决定起落架寿命和飞机完整性。
进近下滑阶段,飞控按照设定的下滑角,从进近点一路下滑到跑道入口附近。这个阶段对高度的要求没那么苛刻,误差个一两米问题不大,反正离地还有几十米。真正考验人的是拉飘阶段:飞控必须在某个离地高度上,主动把机头抬起、减小发动机推力或收油,让飞机的下沉率从每秒一两米,降到每秒零点二到零点三米,然后以合适的姿态和速度让主轮先接地。
这个“提前拉、拉多少、什么时候拉完”的过程,就是 flare。它的本质是能量转换:把飞机的垂直速度动能,转换成水平速度和一定的爬升能量储备。如果拉得太早、拉得太多,飞机可能在空中停滞甚至失速,然后重重掉下来;如果拉得太晚、拉得太少,就是带着全速下沉率砸跑道。所谓“耀斑降落”,就是这种拉飘失效的失控状态被拍下来后,围观者的吐槽——飞机像个失控的烟花一样在地上弹跳。
1.2 气压计为什么撑不住最后几米
问题的核心在于:传统的自动着陆,高度信息来源是气压计,个别方案还会加 GPS。这两个传感器在高空够用,但到了低空,各自的短板就暴露无遗。
先说气压计。它的测量原理是感知大气压强变化换算高度。听起来很直接,但实际使用中坑很多:
- 分辨率和噪声:常见的气压计模块,分辨率在 10cm 左右,但叠加传感器噪声和风扰后,滤波后的高度抖动普遍在 0.3m 到 0.5m。也就是说,飞控觉得自己在 2m 高度,实际可能在 1.5m 到 2.5m 之间浮动。
- 静压孔误差:飞机在低空飞行时,机身周围气流变化剧烈,静压孔感受到的压力和真实大气压有偏差。尤其进场时往往带油门、开襟翼、姿态变化大,这个偏差会更明显。
- 基准修正滞后:气压高度是相对标准大气换算的,要得到离地高度,必须知道起飞场的气压修正值。飞场气压稍微变个变化,整个高度基准就漂移了。
GPS 高度更不用说了,垂直精度通常在正负两三米到四米,纯靠它做 flare 触发,跟闭着眼睛开车差不多。所以在没有额外传感器的情况下,PX4 的 flare 逻辑即使代码写得再完美,执行时也是在一个“漂移的高度坐标系”里工作。3m 的触发高度,实际可能在 4m 或者 1.5m 处触发,结果就是要么提前拉飘要么直接砸地。
1.3 激光测距仪解决的是“最后一公里的感知精度”
激光测距仪(LiDAR rangefinder / laser rangefinder)从根本上换了一种高度获取方式:它不测气压,不靠卫星,而是直接向地面发射激光脉冲,通过测量光脉冲往返飞行时间,算出传感器到地面的真实物理距离。
这意味着它给出的是最直接、最真实的“离地高度”,而不是通过气压或卫星坐标换算出来的间接高度。精度上,好的 ToF(飞行时间)激光传感器在几十米量程内能做到正负 1cm 到 3cm 的重复精度,更新频率 100Hz 以上。激光测距仪的引入,让飞控在最后那几米不再是“盲人摸象”,而是有了实打实的“眼睛”。
只要把激光高度数据正确地融合进 PX4 的高度估计链路,flate 触发高度就是真实可信的 2m、3m,拉飘动作自然就稳了。
2. 传感器选型对比:为什么激光是固定翼着陆的最优解
2.1 常见低空测距方案横评
在固定翼上做近地测距,可选方案不止激光一种。我在选型时把主流的几种都试过或调研过,这里给个直观的对比。
| 技术路线 | 典型量程 | 精度 | 更新率 | 主要短板 |
|---|---|---|---|---|
| 气压计 | 无限 | 低(0.3m~1m 漂移) | 50~100Hz | 漂移、受气流干扰 |
| 超声波 | 0.2~8m | 中等(mm~cm级,但受环境影响大) | 20~50Hz | 波束锥体大、受温度和风影响、量程短 |
| 毫米波雷达 | 几十米 | 中高 | 10~30Hz | 贵、重、多径干扰处理复杂 |
| 激光 ToF | 0.1~40m(常见 12m) | 高(±1cm~3cm) | 100Hz 以上 | 受地面反光率、阳光、雨雾影响 |
超声波的问题在于波束角太大了,常见的探头半角都有 30°到 60°,在 3m 高度波束覆盖的地面范围会宽到好几米,跑道边线、道肩的草、附近的车都可能混进读数里,数据噪声大。毫米波雷达在小目标、静止目标的处理上优势不明显,而且消费级可用方案的体积、重量、价格都不太友好。激光 ToF 是平衡性最好的方案,量程覆盖着陆场景,精度高,更新快,重量轻,价格在几十到几百元不等。
2.2 激光 ToF 测距原理:光速做尺子的实际玩法
激光测距仪的核心原理不复杂:发射一个激光脉冲,遇到地面反射回来,传感器测量发射和接收的时间差,乘以光速再除以二,就得到单程距离。
实际产品里,消费级 ToF 传感器多数不是用一个脉冲测一次,而是一次发射“一串”编码后的激光脉冲,通过相关运算来提高信噪比和抗干扰能力。这也是为什么好的 ToF 传感器在有阳光干扰、复杂地面反射时还能保持测距稳定的原因。
型号方面,我用过和了解过比较典型的几个,列出来供参考:
| 型号 | 量程 | 更新率 | 接口 | 重量 | 定位 |
|---|---|---|---|---|---|
| Benewake TFmini Plus | 0.1m~12m | 100Hz | UART / I2C | 约 5g | 入门首选,社区资料多 |
| Benewake TF02 Pro | 0.05m~40m | 1000Hz(实际控制循环按需取用) | UART | 约 60g | 量程大,适合想早期修正高度 |
| Lightware SF11/C | 0~120m | 100Hz | UART / I2C | 约 30g | 高性能航测机常用 |
| Garmin Lidar-Lite v3 | 0~40m | 100Hz 左右 | I2C / PWM | 约 22g | 老牌方案,注意 PWM 兼容性 |
2.3 选激光传感器的三个硬指标
不要只看量程和价格,固定翼着陆场景下,有三个指标直接影响控制效果,我踩过坑才明白。
第一是波束角。这决定了传感器在地面上“看到”的干涉区域有多大。TFmini 系列的波束角大约 2°到 3°,在 3m 高度,光斑直径才 10cm 左右,能精准对准跑道面。有些便宜模块波束角做到十几度甚至二十几度,在低空测出来的可能就是“一片区域的混合距离”,高度数据波动极大。
第二是量程和盲区。着陆场景里,flare 触发高度一般设在 2m 到 5m,但实际上我更推荐量程能做到 20m 以上的传感器。原因很简单:在下滑段就可以开始把激光高度纳入融合,这样可以提前纠正进入下滑道之前的气压漂移,而不是等到最后几米才突然修正。同时要注意盲区,TFmini 系列有 0.1m 盲区,正常情况下不影响,但如果你把传感器装在机腹下方且起落架离传感器太近,盲区问题会被放大。
第三是更新率和延迟。100Hz 更新率已经完全够用,但延迟要尽量小且稳定。PX4 的 EKF2 里有专门的延迟补偿参数(后面会讲),如果延迟不稳定,补偿效果会打折扣。选购时尽量选有明确延迟指标或社区测过延迟的型号。
3. 硬件接线与安装:这个环节比想象中更决定成败
3.1 通信接口选择:我为什么优先选 UART
激光测距仪常见的接口无非 UART、I2C 和 PWM。PX4 对这三种都有支持,但我实际体验下来,固定翼上优先选 UART。
I2C 的好处是接线少(SDA、SCL 两根线),但有个问题:多个设备挂同一总线上,地址冲突要处理,总线本身的抗干扰能力不如串口。PWM 接口最简单,但拿 PWM 去测高度,信号的更新率和精度都受限。UART 反而是最稳的:点对点通信、波特率固定、数据格式透明,调试时一根串口线就能在电脑上直接看原始输出。
TFmini Plus 这类传感器用 UART 时,只需要四根线:5V、GND、TX、RX。接到飞控的空闲串口即可。注意接线要交叉:传感器的 TX 接飞控 RX,传感器的 RX 接飞控 TX,别接成直连。
3.2 安装位置和朝向:正下装还是前倾装?
安装位置直接决定了测出来的是不是“真实的离地高度”,这个坑非常隐蔽。
先说位置。传感器装在机腹靠近重心的位置,尽量避开螺旋桨滑流、机身气流分离区,还要远离排气管、油污喷射路径。同时要检查一个很实际的点:激光束不能被起落架、机轮、尾轮或挂架遮挡,否则你永远在测量“机轮到地面”的距离,而飞控把这个当成机身到地面的高度,拉飘决策就全错了。我的办法很简单:装好之后,把飞机放在跑道上,从传感器镜头前方近距离观察光斑打在哪个位置,确保它打在干净的地面上。
再说朝向。正下装(传感器垂直朝地面)的优点是安装简单,但有隐患:flare 拉飘时机头抬高,机体会有一个明显的仰角,垂直朝下的激光束其实已经指向机头前方了——你测量的是机头前方几米的地面距离,不是机腹正下方的离地高度。这个误差在拉飘高度本来就只剩两三米时,会被明显放大。
解决方式有两种:一是传感器向前倾一个固定角度(比如 10° 到 15°),使它在典型巡航姿态下接近垂直朝下;二是保持垂直安装,但在参数里做补偿。两种方式都需要你明确传感器相对机体的安装角,并在SENS_LIDAR_ROT参数里准确配置。实飞前一定要做一次地面校准:把飞机放平,分别记录姿态角为零和抬头 5°、10° 时传感器读数与实测高度的偏差,确认角度补偿后误差可控。
3.3 供电和抗振:别忽略的稳定性细节
激光测距仪的工作电流看起来不大,TFmini Plus 大约 140mA,但瞬间启动电流和异常情况下的电流会更高。飞控的 5V 输出一般能带得动,但一定要确保供电线足够粗,尽量从飞控的独立 5V 输出取电。如果你从外部 BEC 单独供电,千万别忘了和飞控共地——不共地的串口通信是灾难。
我之前遇到过一次奇怪故障:飞行中激光高度数据周期性丢失,但地面测试完全正常。后来查了半天,发现是舵机在高负载动作时,5V 母线电压瞬间跌落,把激光模块打到了复位状态。从那以后我把飞控、距离传感器和舵机的供电彻底分开,问题再也没有出现。
振动也是一大坑。固定翼的机翼、机腹在高速飞行时会有高频振动,如果激光模块是硬连接,ToF 读数在高频振动下会出现抖毛刺。我的处理方式是在模块和安装支架之间垫一层薄的橡胶减震垫片,成本一块钱,效果立竿见影。注意别垫得太软,否则模块自身的晃动又会产生低频误差。
4. PX4 软件配置:从驱动到 EKF 融合的完整链路
4.1 固件里启用激光测距仪驱动
PX4 对主流距离传感器驱动支持得比较全,TFmini、Lightware、Lidar-Lite 等都有现成驱动。但“默认支持”和“默认启用”是两回事,你需要确认自己的固件配置文件里打开了对应驱动。
如果从源码编译,重点检查boards/px4/fmu-v5/default.px4board或你自己平台的 board 文件,是否包含了对应的驱动定义。比如 TFmini 的驱动名是drivers/distance_sensor/tfmini,Lightware 对应的是drivers/distance_sensor/lightware_laser。如果没找到,在 board 文件里加一行,重新编译烧录即可。
I2C 连接的传感器,通常设置SENS_EN_LIDAR = 1后重启,驱动就会自动检测并启动。UART 连接的传感器,需要在启动脚本里手动指定串口和波特率。以 TFmini Plus 接到飞控的 TELEM2(在 Pixhawk 1 上通常是/dev/ttyS2)为例,启动命令类似:
# 在启动脚本(rc.txt 或 extra 脚本)中加入 tfmini start -d /dev/ttyS2 -b 115200注意:不同飞控硬件的串口编号不一样,一定要先确认你用的那个 UART 对应的设备名。直接在 QGC 的 MAVLink Console 里执行list、ls /dev查看可用的 tty 设备,再对应自己的接线。
启动后,在 MAVLink Console 里执行:
listener distance_sensor如果能持续刷出数据,说明驱动已经跑通了。
4.2 关键参数逐项讲清楚
PX4 里和距离传感器相关的参数不少,下面这些是我实际配置中最关键的,按功能分组说明。
传感器本身参数
SENS_EN_LIDAR:使能距离传感器的总开关。I2C 型号设 1 后重启生效。SENS_LIDAR_ROT:传感器安装朝向。正下装需要设置为对应向下朝向的枚举值;前倾安装需要根据实际角度设置。这个参数直接影响距离数据如何转换到机体坐标系,设错了,EKF 融合出的高度值会带着系统性误差。SENS_LIDAR_MIN/SENS_LIDAR_MAX:传感器的有效量程,超出这个范围的数据会被滤除。设置不当会导致大量异常值进入融合或反之导致有效数据被丢弃。
EKF2 融合参数
EKF2_RNG_AID:是否允许距离传感器辅助高度估算。设 1 才能让激光数据真正参与高度修正。EKF2_RNG_USE_HGT:是否把距离传感器作为主高度源。这个参数名字很直观,但要慎用。我建议设 1 时搭配合理的量程和高度切换逻辑(见 4.4)。EKF2_RNG_QLTY:距离传感器数据的最低质量阈值。激光数据偶尔会丢掉或返回异常值,低于这个质量的数据不会被采信。EKF2_RNG_GATE:融合时的创新门限(innovation gate)。定义距离传感器数据与预测值偏差多大才算“异常”。想激光高度在低空快速修正误差,这个门限要设置得相对宽松,但不能松到把异常数据放进来的程度。EKF2_RNG_DELAY:传感器的相对延迟补偿。传感器从测量到输出的延迟如果不补,EKF 会把一段时间前的距离当成当前距离去融合,在下降率 1m/s 的情况下,100ms 的延迟就带来 10cm 的相位差,在 flare 阶段影响不小。EKF2_RNG_POS_X/_Y/_Z:传感器在机体坐标系下相对重心的位置。装在哪、偏移多少,填准它。
4.3 数据质量验证:起飞之前花十分钟做这一步
参数配置完,先别急着飞。在 QGC 上打开 MAVLink Inspector,找到DISTANCE_SENSOR消息,看里面的current_distance字段。然后把飞机放在已知高度处(比如桌子上垫到 1m),对比显示值是否吻合。再多测几个高度,比如手持抬高到 2m、3m,确认数据随高度线性变化,没有跳变。
命令行里也可以用listener distance_sensor直接看原始数据频率和质量。如果发现数据丢帧严重或频繁跳变,先查接线、供电和安装朝向,别急着调 EKF 参数——传感器本身的数据质量是融合的上限,脏数据进融合逻辑再聪明也白搭。
4.4 高度源切换策略:别让激光数据在 100m 高空捣乱
这里要特别强调一个设计上的取舍:激光测距仪是有量程上限的。TFmini Plus 只有 12m,高空飞行时根本测不到地面,返回的可能是无效值或噪声。如果你把激光直接设成主高度源,高空就会出大问题。
正确的做法是“分高度段信任”:高空靠气压计和 GPS,低空(进入下滑道后)让 EKF 逐渐把高度估计的权重转移到激光测距仪上。PX4 的 EKF2 处理这种多源高度融合时,会自动根据传感器的质量和创新值动态调权重,但前提是你给它的参数是对的。
我个人的配置思路是:
- 保持气压计作为整个飞行过程的基本高度源。
EKF2_RNG_USE_HGT启用距离传感器作为主高度源,但同时设好量程范围,让传感器在超出量程时不产生可用数据。- 放松
EKF2_RNG_GATE,允许激光高度在下滑道阶段就把气压计积累的低空偏差快速“拉回来”。 - 如果实在担心切换逻辑不稳,可以保守一点:
EKF2_RNG_USE_HGT = 0,仅靠EKF2_RNG_AID = 1让距离传感器做辅助修正。实践下来,辅助修正也能解决大部分低空高度漂移的问题,只是“拉回”速度会慢一些。
这个配置没有绝对的最优,跟你用的传感器量程、飞机气动、下滑速度都有关系。建议拿日志说话,落地后看vehicle_local_position.dist_bottom和vehicle_local_position.z的对比,确认低空两者收敛良好。
5. 自动着陆参数整定:把拉飘做到像老手一样稳
5.1 下滑段参数:高速进近的轨迹基础
激光测距解决了高度感知问题之后,还要把 PX4 的自动着陆控制参数整定好。自动着陆参数的核心都在FIXED_WING_*和FW_LND*前缀下,QGC 参数页里直接搜LND就能过滤出来。
先看下滑段。FW_LND_ANG是下滑角,默认值通常是 15 度。这个角度对于一般小型固定翼是可以用的,但 15 度意味着约 26% 的下滑坡度,在进近速度 18m/s 时,垂直速度大概 1m/s 左右。如果你觉得这个下沉率偏大,可以把角度调小到 10 度到 12 度,代价是进近路径拉长,需要的跑道长度更长。
下滑段的空速同样关键。PX4 固定翼在着陆时会把目标空速切换到略高于失速速度的安全裕度,通常由FW_AIRSPD_MIN和着陆空速系数共同决定。空速过低,flare 时容易失速;空速过高,接地速度大,滑跑距离长。具体机型差异很大,我习惯先手动飞几次慢速进近,记录稳定进近时的空速,再把这个值附近作为自动着陆的目标空速。
5.2 flare 段参数:拉飘什么时候开始、拉多少
Flare 是整套方案的核心,参数主要有三个最值得反复调:
FW_LND_FLALT:flare 触发高度。这个高度不是拍脑袋定的,它是进近下沉率、拉飘过程中预期消耗的时间和你预留的安全裕度共同决定的。一个简化的估算方式:触发高度 ≈ 下沉率 × 拉飘时间 + 裕度。举例,下沉率 1.2m/s,期望用 2.5s 完成拉飘,预留 0.5m,那触发高度就是 3.5m 左右。这里激光测距仪的价值就体现出来了——没有它,这个 3.5m 可能是实际 4.5m 或 2.5m。FW_LND_FL_PIT:flare 期间的目标俯仰角。这个角度决定了拉飘时抬机头的幅度。要查自己机型的失速迎角,留出余量。一般小型固定翼在 8° 到 15° 之间起步,慢慢加。拉飘角度太大,阻力剧增,容易进入失速边界;太小,下沉率降不下来。FW_LND_FL_TO:flare 超时保护。如果到了设定时间还没有完成触地判定,飞控会强制执行下一步动作,避免长时间“飘在空中不落地”。超时时间设得太短,会在拉飘还没到位时就强制触地;太长,则失去保护意义。
另外还有一个增效参数,具体名称看固件版本,但思路是:flare 不只是控制俯仰姿态,还涉及油门控制。进入 flare 后飞控应该把油门收到怠速或维持小油门,减少剩余推力对下沉率衰减的影响。这部分和具体机型动力系统有关,要在日志里重点观察。
5.3 触地判定与滑跑控制
PX4 的触地判定逻辑综合了下沉率、垂直加速度、轮速等条件。参数设置不合理会出现两种情况:一种是触地后飞控没反应过来,仍然输出拉飘控制,导致因为机制混乱而失控;另一种是离地还有半米时误判触地,直接切到滑跑控制,翼面自由,主轮还没接地就先折腾起来。
我的调试经验是,先看日志里landing triggered的实际触发点,对比下载曲线,确认触发发生在主轮真正接地后的几毫秒到几十毫秒内。如果触发明显偏早或偏晚,再去动触地阈值数据,并且要配合滑跑方向的航向稳定控制参数一起看。
5.4 调参方法论:一次只动一个变量
整定自动着陆参数,最忌讳贪多。我的流程是这样的:
先在 SITL 仿真环境里,用不同的风速、风向下反复试,把参数从“能落”调到“落得稳”。SITL 里的激光数据是理想化的,它能帮你验证控制逻辑是否合理,但无法暴露传感器安装和数据噪声问题。
然后实飞,每次只改一个参数。比如这轮只把FW_LND_FLALT从 3.0 改到 3.5,保持其他参数不变。落地后立刻导日志,看高度曲线、俯仰角曲线、下沉率曲线,确认这个变量的影响是否符合预期。不要一次改三个参数,否则出了问题你根本猜不到是哪颗老鼠屎坏了一锅汤。
6. 实飞调试与踩坑实录
6.1 先让 SITL 帮你还清“逻辑债”
实飞前务必跑通 SITL 仿真验证。PX4 的 SITL 支持 Gazebo,里面可以挂载距离传感器模型,能模拟出传感器数据,即使模拟数据过分“干净”,至少能把整套控制链路从头到尾跑通,验证自动着陆模式的切换、flare 的触发、触地判定和滑跑逻辑是否正常。
如果你用的是固定翼机型,建议在仿真里多试几种进近速度和下沉率组合,把自动着陆参数扫几轮,找到一个鲁棒性较好的区间,再带着这个“先验”区实飞。省下来的真是真金白银——炸一次机的成本够买好多传感器了。
6.2 首飞前的安全检查清单
激光测距仪的引入,让着陆安全上了一个台阶,但也带来新的风险。我给自己列了一份首飞 checklist,每次都不跳过:
- 跑道周边有没有反光率过高或过低的物体?沥青吸收光,白色跑道线反光强,都会影响激光数据质量。先做一次地面滑跑测试,确认距离传感器读数在整个滑跑过程中稳定。
- 激光镜头有没有被泥土、油污、水雾遮挡?起飞前擦干净。
- 起飞滑跑阶段,传感器距离数据会不会因为地面颠簸产生跳变?如果会,可能需要把融合逻辑里的低空地面干扰过滤条件加强。
- 手动 RC 接管要一直准备着,自动着陆全程把切回手动的开关放在指尖。激光高度融合再准,也只是提高了概率,不是消除了风险。
- 确认距离传感器在飞行日志里有完整记录,方便落地后复盘。日志里
distance_sensor主题和 EKF 的高度创新序列都要打开。
6.3 两个典型故障的完整排查链路
第一个故障:传感器有数据,但高度估计完全不理它。
现象是listener distance_sensor能看到连续稳定的激光距离,但看vehicle_local_position.z感觉不到任何激光数据的影响。排查链路我建议这样走:
先看EKF2_RNG_AID是不是 1,很多人第一步就栽在这,默认 0 时距离传感器只做地形跟随辅助,不参与高度修正。再看EKF2_RNG_USE_HGT的设定是否符合你的预期高度切换策略。然后打开日志看 EKF 的 range innovation(激光高度与预测高度的差值)。如果 innovation 巨大且有规律,很可能是EKF2_RNG_DELAY没校准,导致融合的是滞后的数据,被创新门限判定为异常而丢弃。逐层排查,很容易定位。
第二个故障:flare 触发点飘忽不定,有时早有时晚。
现象是日志里FW_LND_FLALT设的是 3m,但实际触发时刻的高度在 2m 到 5m 之间乱跳。这种问题大概率不是 flare 控制参数的问题,而是高度估计本身不稳。我当时查到最后,发现是气压计在低空地效区有系统性偏差,而EKF2_RNG_USE_HGT没启用,所以激光只是“辅助”而不是“主高度源”,EKF 的高度估计仍然被气压计主导。
解决办法是把EKF2_RNG_USE_HGT设为 1,同时在传感器量程外高度段让 EKF 自动切回气压计。这样进入激光量程后,高度估计会快速切换到以激光为主,flare 触发高度就稳定了。
6.4 激光传感器的日常维护
激光测距仪不是装上就能一劳永逸的。固定翼每次起降都可能扬起沙土,镜头很容易脏。脏镜头带来的直接后果是测距数据衰减或跳变,而且这种衰减在日志里看起来很像“传感器偶尔丢包”,极易被误判为软件问题。
我的习惯是:每次飞行前擦一下镜头,顺便检查安装支架有没有松动;每飞二十到三十个起落后,把传感器拆下来做一次静态多高度标定,确认精度没有劣化。飞行日志里如果发现同一高度的激光读数开始周期性波动,优先怀疑镜头污染和连接器氧化,别一上来就找软件和参数的茬。
最后再分享一个我个人的体会:把这套方案调通之后,最大的收获其实不是“自动着陆成功率从七成变成九成五”,而是我终于理解了每一个参数背后的物理意义。激光测距仪不是魔法,它只是把高度感知这个基础环节做扎实了,让飞控终于有时间在当前高度上做出正确响应。回想我早期盲目调FW_LND_FLALT、FW_LND_FL_PIT,其实都是在为一个本身就不准的高度系统打补丁。传感器精度到位,控制参数自然就有了意义。希望这篇文章能帮你在自动着陆这条路上少走几个来回的弯路。