简介:《匿名光流传感器使用手册》是匿名科创 ANO TC 团队为 V3.10 版本光流模块编写的官方用户手册,面向无人机开发者、飞控调试人员及低空悬停应用爱好者,帮助解决光流数据解耦、测距抗干扰与模块配置等实际问题。资源包内含 1 个 PDF 文件,约 1.2MB,内容涵盖模块概述、硬件安装方法、上位机参数配置与数据输出设置等章节,结构完整、图文对照,便于按需查阅。手册重点讲解融合设计、模块级数据融合、激光 TOF 测距与掉电不丢失的配置模式,并给出镜头朝向、串口线序、减震安装等关键注意事项,可帮助读者快速完成模块接线、参数调节与故障排查。目前已有 1989 人学习下载,适合需要系统掌握匿名光流传感器使用与调试的飞控开发者参考。
1. 匿名光流传感器使用手册:从悬停漂移到定点稳如磐石
如果你玩过四轴,大概率经历过这种场景:飞机在室内悬停,你双手离杆,它却像喝多了似的往一个方向慢慢飘,十秒不到就撞墙。GPS 在室内没信号,气压计只能定高,水平方向靠什么?答案就是光流。匿名光流传感器使用手册这个标题,说的正是这套让室内定点成为可能的小模块。它本质上是一个向下看的摄像头加一颗处理芯片,通过追踪地面纹理的移动来反推飞机自身的水平位移速度。适合谁?所有需要在无 GPS 环境下做定点、悬停、低速航线的人。这篇笔记不讲虚的,从接线、参数、调参到翻车排查,一步步把光流用起来。
2. 光流模块怎么选、怎么接、怎么让它开口说话
光流这东西,原理不复杂,但落地时第一步就卡住的人不在少数。要么买回来不知道怎么接,要么接上了飞控却读不到数据。这一章把选型逻辑和硬件链路讲透,让你少走弯路。
2.1 为什么常见方案是「摄像头 + 超声波」组合
光流传感器测的是水平位移,但它有个致命前提:必须知道离地高度。因为摄像头看到的是像素移动,像素移动换算成实际位移,需要乘以高度系数。同一个像素位移,在 1 米高和 3 米高对应的实际距离差三倍。所以光流模块必须配合一个测高传感器,最常见的就是超声波。
常见做法是光流和超声波做在同一块板子上,比如匿名光流就是这种形态。它通过串口把水平速度(单位通常是厘米每秒或米每秒)和高度一起发给飞控。飞控拿到这两个数据,才能做水平位置和速度的闭环控制。
选型时看三个点:一是接口,串口最通用,I2C 也有但速率受限;二是输出速率,至少 50Hz 以上,低了飞控融合会滞后;三是有效高度范围,超声波一般 0.2 到 3 米比较稳,再高就跳变。别指望几十块的模块能上 10 米,物理规律摆在那。
2.2 接线:四根线里藏着两个坑
匿名光流模块对外一般就四根线:VCC、GND、TX、RX。看起来简单,但坑就在这四根里。
第一坑:供电电压。模块标称 5V,但有些飞控的 5V 输出带不动,尤其同时挂了接收机和 GPS 的时候。现象是模块灯亮但数据时有时无。解决方法是单独从电源模块取一路 5V,或者加个电容。
第二坑:TX 和 RX 交叉。模块的 TX 要接飞控的 RX,模块的 RX 接飞控的 TX。很多人按颜色接,结果收不到数据。记住一句话:发对收,收对发。
下面是一个典型的接线示意,用文字描述清楚:
# 匿名光流模块 <-> 飞控 串口 模块 VCC -> 飞控 5V 模块 GND -> 飞控 GND 模块 TX -> 飞控 RX (比如 TELEM2 的 RX) 模块 RX -> 飞控 TX (比如 TELEM2 的 TX)接好后,模块上电应该有指示灯闪烁,说明它在输出数据。如果灯不亮,先查供电;灯亮但飞控没数据,查线序和串口配置。
2.3 飞控端配置:让数据流进融合算法
以常见的开源飞控为例,光流数据要进飞控,需要做三件事:配置串口、选择光流类型、设置融合源。
第一步,找到你接的那个串口,比如 TELEM2,把它的协议设成光流对应的协议号。不同飞控固件协议号不同,常见的是 18 或 21,具体查你所用固件的文档。
第二步,设置光流类型参数。一般有 0 到 4 几个选项,0 是关闭,1 是通用光流,2 是特定型号。匿名光流通常选 1 或 2,选错会导致数据解析失败。
第三步,设置水平位置融合源。把光流和超声波都打开,让扩展卡尔曼滤波器同时使用它们。如果只开光流不开超声波,高度数据缺失,光流速度无法正确换算,飞控会拒绝使用。
# 以某开源飞控参数为例,仅示意参数名 SERIAL2_PROTOCOL = 18 # 串口2协议设为光流 FLOW_TYPE = 1 # 光流类型,通用 EK3_SRC1_POSXY = 3 # 水平位置源用光流 EK3_SRC1_VELXY = 3 # 水平速度源用光流 EK3_SRC1_POSZ = 1 # 高度源用超声波或气压 RNGFND_TYPE = 2 # 超声波类型参数说明:SERIAL2_PROTOCOL 告诉飞控这个串口上挂的是光流;FLOW_TYPE 决定解析格式;EK3_SRC1_POSXY 和 VELXY 设为 3 表示使用光流;POSZ 设为 1 表示高度用测距仪。改完重启飞控,在状态里看光流数据有没有跳动。用手在模块下方左右移动,速度值应该跟着变。
3. 调参不是玄学:把光流和超声波拧成一股绳
硬件通了,数据有了,接下来才是真正的活。光流和超声波各自有脾气,融合不好,飞机要么飘,要么抖。这一章讲清楚每个参数在干什么,以及怎么用地面站看曲线判断好坏。
3.1 光流缩放系数:一个让很多人翻车的参数
光流模块输出的速度是原始像素位移换算来的,但不同镜头、不同高度,换算系数不一样。飞控里有个参数叫 FLOW_FXSCALER 和 FLOW_FYSCALER,分别对应 X 和 Y 方向的缩放。默认值通常是 0,表示不缩放,但很多模块需要手动校准。
校准方法:把飞机放在一个已知距离上,比如 1 米高,然后水平匀速移动 1 米,看飞控记录的光流位移和实际位移差多少。如果光流显示 0.8 米,实际 1 米,那缩放系数就要调大 25%。
# 校准光流缩放系数的思路 # 实际移动 1 米,光流积分得到 0.8 米 # 缩放系数 = 实际 / 光流 = 1 / 0.8 = 1.25 # 如果参数范围是 -1 到 1,则设为 0.25 表示放大 25% FLOW_FXSCALER = 0.25 FLOW_FYSCALER = 0.25注意:缩放系数不要一次调太多,每次加 0.1,飞一次看效果。调过头会导致飞机对位移过度敏感,一有风吹草动就猛推杆。
3.2 超声波滤波:别让跳变带偏高度
超声波测高有个通病:地面不平或者有斜坡时,回波会跳。比如从 1 米突然跳到 2 米再跳回来。飞控如果直接用这个高度去换算光流速度,水平速度就会瞬间翻倍,飞机猛地一窜。
解决办法是给超声波加滤波。飞控里通常有 RNGFND_FILT 参数,单位是赫兹,表示低通滤波截止频率。设得太高,跳变滤不掉;设得太低,高度响应慢,飞机定高会飘。
我一般从 5Hz 开始试。如果高度曲线还有毛刺,降到 3Hz;如果定高反应迟钝,升到 8Hz。同时看光流速度曲线,如果速度曲线和高度曲线同步跳,那就是超声波的问题,不是光流的问题。
3.3 用地面站看三条曲线判断融合质量
调参不能靠感觉,要看数据。地面站里至少看三条曲线:光流原始速度、超声波高度、融合后的水平速度。
理想状态:光流原始速度平滑,超声波高度稳定,融合速度紧跟光流但更干净。如果融合速度滞后光流很多,说明滤波太重;如果融合速度和光流一样毛糙,说明滤波太轻。
还有一个技巧:把飞机拿在手里,水平晃动,看融合速度能不能跟上你的手。如果手停了,速度还半天不归零,那就是融合参数太保守。如果手停了速度立刻归零但飞机在空中会抖,那就是太激进。找到那个中间点,就是你的机器的最佳值。
4. 避坑与排查:光流翻车的五种典型现场
光流这东西,装好了是神器,装不好是炸弹。下面这五种情况我全遇到过,每一种都对应一个明确的排查方向。
4.1 现象:起飞就往一个方向猛飘,越飘越快
原因:光流方向装反了,或者飞控里光流朝向参数没设对。模块有前后左右,装的时候如果转了 180 度,飞控以为往前飞,实际是往后,闭环变成正反馈,直接失控。
解决:检查模块上的箭头方向是否和机头一致。如果不一致,改飞控里的 FLOW_ORIENT_YAW 参数,把偏航角补回来。补的角度是模块箭头相对机头的顺时针角度。
4.2 现象:悬停时高频抖动,像抽筋
原因:光流数据噪声太大,或者缩放系数调过头。光流在纹理差的地面(比如纯色地砖)上噪声会明显增大,飞控把噪声当成真实速度去修正,就会抖。
解决:先换一个有纹理的地面测试,比如地毯或木地板。如果换了地面就不抖,说明是地面纹理问题,不是参数问题。如果还抖,把 FLOW_FXSCALER 和 FLOW_FYSCALER 往 0 的方向调,减小光流权重。
4.3 现象:定高忽上忽下,光流速度跟着跳
原因:超声波被地面反射干扰,或者超声波探头附近有障碍物。超声波有锥角,如果旁边有墙或桌子腿,回波会乱。
解决:把超声波探头周围清空,至少留出 30 厘米无遮挡。如果还跳,降低 RNGFND_FILT 的值,加强滤波。实在不行,换用激光测距,但激光在室外强光下会失效,室内更稳。
4.4 现象:飞控状态里光流数据一直是零
原因:串口协议不对,或者模块根本没输出。先看模块灯,灯不亮查供电;灯亮查线序;线序对查协议号。
解决:用串口助手直接接模块的 TX 和 GND,看有没有数据吐出来。如果有数据但飞控收不到,就是飞控串口配置问题。如果没有数据,模块坏了或者波特率不对。匿名光流常见波特率是 115200,少数是 57600。
4.5 现象:室内定点还行,一开室外模式就切不回光流
原因:飞控的模式切换逻辑里,光流和 GPS 的优先级没设对。很多飞控默认有 GPS 就用 GPS,GPS 信号弱才切光流。但切换瞬间会有跳变。
解决:在模式配置里,把光流定点模式单独设一个飞行模式开关,手动切。不要依赖自动切换。切之前先确认光流数据健康,也就是地面站里光流速度有正常跳动。
5. 把光流用出花:从定点到低速航线的进阶技巧
光流不只是用来悬停的。当你把基础调稳之后,可以拿它做更多事。这一章讲几个我实际用过的进阶玩法,以及怎么验证你的光流到底调好了没有。
5.1 用光流做低速航线:速度环和位置环的配合
定点模式用的是位置环,飞机目标是一个点。如果你想让它沿一条直线慢速飞,比如 0.5 米每秒,那就需要速度环。飞控里通常有 LOIT_SPEED 参数控制最大速度,但光流模式下,速度环的反馈源就是光流。
做法:切到定高模式,用遥控器打一个小杆量,让飞机慢慢往前。看地面站里光流速度是不是稳定在 0.5 左右。如果速度忽大忽小,说明光流噪声还是大,回去调滤波。如果速度稳定但飞机实际速度不对,回去调缩放系数。
这个玩法适合室内巡检、低速跟线。前提是地面纹理要够,纯白墙面地面不行。
5.2 验证光流好坏的三个硬指标
调完之后怎么知道调好了?看三个指标。
第一,悬停漂移速度。双手离杆十秒,飞机水平漂移不超过 0.5 米,算合格。超过 1 米,回去查。
第二,速度跟随延迟。用手水平推飞机,光流速度曲线应该在 0.2 秒内跟上。如果超过 0.5 秒,滤波太重。
第三,高度变化时的速度稳定性。让飞机从 0.5 米升到 1.5 米,光流速度不应该因为高度变化而跳变。如果跳了,说明高度补偿没做好,检查超声波和光流的同步。
5.3 一个容易被忽略的细节:光流模块的安装减震
光流模块里有摄像头,摄像头对振动敏感。如果模块硬装在机架上,电机振动传过去,图像会糊,光流数据会烂。现象是地面站里光流速度一直有小幅高频跳动,飞机悬停时也有细微抖动。
解决:用减震棉或者橡胶垫把模块和机架隔开。但注意,减震不能太软,否则模块会晃,光流会以为飞机在动。我一般用 2 毫米厚的减震胶,四角螺丝不要拧死,留一点弹性。
5.4 光流和视觉定位的边界在哪
光流本质是稀疏光流,它只追踪几个特征点的移动,不构建地图。所以它适合短时间、小范围的定位,时间长了会有累积误差。如果你需要长时间定点,比如 10 分钟以上,光流会慢慢漂。这时候要么加一个绝对参考,比如 AprilTag 或者 UWB,要么定期手动修正。
别指望光流能替代 GPS。它的优势是室内、低成本、低延迟。劣势是依赖地面纹理、高度受限、有累积误差。想清楚你的场景,再决定用不用。
我自己的习惯是:每次换场地,先拿手推一遍飞机,看光流速度跟不跟手。跟手了再起飞,不跟手就查地面纹理和超声波。这个习惯帮我省了至少五次炸机。希望帮到你。
本文还有配套的精品资源,点击获取