玩无人机的朋友,是不是遇到过这种情况:明明操作杆推过去了,无人机却迟半秒才反应,差点撞树?特别是用 UDP 通讯的时候,延迟稍微大一点,就可能出危险。为啥 UDP 在无人机控制里这么容易延迟?有没有办法把延迟压到最低?小编带过几次无人机航拍团队,刚开始总因为延迟问题炸机,后来试了好几种方法,总算把延迟控制住了。今天就聊聊 UDP 通讯在无人机控制中的延迟控制方法,新手看完,操控能稳不少。
先明白:无人机控制为啥非 UDP 不可?延迟的危害有多大?
无人机和遥控器之间的通讯,基本都用 UDP,这和它的特点分不开:
UDP 快啊!无人机需要实时响应操控指令,比如上升、转向,指令从遥控器传到无人机,晚 0.1 秒就可能偏离航线。TCP 虽然稳,但发指令前要 “握手” 确认,太耽误时间,根本满足不了无人机的实时性要求。小编之前试过用 TCP 控制无人机,延迟能到 300 毫秒,操控起来像喝了酒,晃晃悠悠的,换成 UDP 后,延迟直接降到 50 毫秒以内。
但 UDP 的延迟要是没控制好,危害可不小:低空飞行时,延迟超 100 毫秒,躲避障碍物就来不及;高速飞行时,一点延迟就可能导致姿态失控,小编团队就有过一次,延迟太大,无人机直接撞墙,修了两千多块。
延迟从哪儿来?这几个地方是 “重灾区”,新手别忽略
想控制延迟,得先知道它是从哪儿冒出来的,无人机场景里这几个原因最常见:
1. 数据包太大,传输路上 “走得慢”无人机的控制指令(比如油门、俯仰角)其实不需要太多数据,但要是顺便发了高清图传数据,或者加了太多冗余信息,数据包就会变大。大数据包在空气里传输,就像大货车在路上跑,肯定比小轿车慢。小编测过,一个 100 字节的指令包,传输延迟 50 毫秒;加了 500 字节的图传预览,延迟直接涨到 150 毫秒。
2. 传输频率太高,“堵车” 了
有些新手觉得 “发得越勤越保险”,每秒发 100 个控制包,结果无人机的接收模块处理不过来,就像快递员一天收 100 个包裹,根本来不及送,只能堆在门口,延迟自然就大了。小编试过每秒发 30 个包,和每秒发 100 个包,实际控制效果差不多,但后者延迟高了 30%。
3. 信号干扰,数据 “绕路” 走
无人机飞的时候,遇到高楼、高压线,或者其他无线电设备(比如对讲机),信号会被干扰。干扰一来,数据就可能绕路走,多走几百米,延迟就上去了。小编在城市高楼区飞,延迟比空旷场地高 2-3 倍,就是这个原因。
实测有效的延迟控制方法,照着做准没错
针对上面的原因,这几个方法在无人机控制里特别管用,小编团队亲测有效:
1. 给数据包 “瘦身”,只传关键信息
控制指令里,只保留油门(0-100)、俯仰角(-30 到 30)、偏航角(-180 到 180)这些必要数据,用数字代替文字,比如 “油门 50” 写成 “T:50”,一个包控制在 50-100 字节以内。小编改完后,单个包的传输时间从 20 毫秒降到 8 毫秒,效果立竿见影。
2. 控制传输频率,别给接收端添堵
根据无人机的响应速度定频率,一般每秒 10-30 个包就够。比如手动操控时,每秒 20 个包;自动巡航时,每秒 10 个包就行。小编团队的无人机,用这个频率,接收模块 CPU 占用率从 80% 降到 30%,延迟明显降低。
3. 选对通讯模块,避开干扰源
别用普通 WiFi 模块,换 5.8GHz 的图传模块(比如大疆的 O4 数字图传),抗干扰能力强,延迟能压到 20 毫秒以内。飞行时,尽量避开高压线、基站,天线朝无人机方向,别被机身挡住。小编之前用 2.4GHz 模块,换 5.8GHz 后,干扰导致的延迟减少了 60%。
4. 加个 “优先级”,关键指令先走
把指令分优先级:紧急指令(比如刹车、返航)设为最高级,普通指令(比如微调方向)设为低级。接收端先处理高级指令,低级指令稍微等一下没关系。小编在程序里加了这个逻辑,紧急刹车的响应时间从 50 毫秒降到 20 毫秒,好几次避免了炸机。
不同场景延迟控制对比,选对方法更高效
不同飞行场景,适合的方法不一样,看这个表更清楚:
场景 | 推荐方法 | 延迟控制目标 | 注意事项 |
---|---|---|---|
低空穿越 | 瘦身数据包 + 高优先级指令 | <50 毫秒 | 避开障碍物,减少信号遮挡 |
高空巡航 | 控制频率 + 抗干扰模块 | <100 毫秒 | 天线朝向无人机,保持信号稳定 |
城市复杂环境 | 5.8GHz 模块 + 优先级划分 | <150 毫秒 | 远离基站、高压线等干扰源 |
小编在低空穿越时,严格按 “瘦身 + 优先级” 来,延迟基本稳定在 30-40 毫秒,操控很跟手;高空巡航时,放宽到 80-100 毫秒,也足够安全。
自问自答:这些问题你可能也遇到过
问:延迟是不是越低越好?太低会不会有问题?
答:不是越低越好,够用就行。比如每秒 10 个包能满足控制,硬要提到每秒 50 个,反而增加接收端负担。小编试过把延迟压到 10 毫秒以内,结果无人机有点 “过于灵敏”,轻微碰一下摇杆就猛动,不好控制。
问:用了这些方法,还是延迟高,咋办?
答:检查硬件是不是拖后腿。比如遥控器的通讯模块太旧,或者无人机的接收天线接触不良。小编之前换了个新的 5G 图传模块,延迟直接从 200 毫秒降到 30 毫秒,比软件优化效果还明显。
问:室外风大,会不会影响 UDP 延迟?
答:风大主要影响无人机的飞行姿态,不直接影响 UDP 延迟。但风大时无人机晃动厉害,可能导致天线角度变化,间接增加延迟。这时候可以手动调整天线方向,尽量对准无人机。
小编觉得,UDP 通讯在无人机控制里的延迟控制,核心是 “够用就好”,不用追求极致低延迟,而是要稳定在安全范围内。新手别一开始就堆复杂算法,先把数据包瘦身、控制好频率、选个好模块,这三点做好,80% 的延迟问题都能解决。
其实啊,飞无人机多了就会发现,延迟控制就像开车,不是开得越快越好,而是要稳,能按自己的意图走。希望这些方法能帮你飞得更稳、更安全,少炸机,多拍好东西。