前几天看到一条新闻:有人在山上航拍,无人机失控坠到崖壁上。他舍不得那台设备,一个人去爬百米悬崖想去捡他的无人机,结果脚下一滑掉了下去,幸亏被半空一根树杈接住了,消防员救了大半夜,幸好人平安没有什么事。
![]()
先说结论:无人机失控的第一秒,它已经替你做了一串决定。
而做这些决定的代码,正常情况下你一辈子都看不到它执行——这是这一行最反直觉的地方:最值钱的代码,是永远不执行的那几行。
我是朴林兄,写了十年C++。前三篇说了无人机的技术栈、飞控和图传,这篇说最后一层:兜底。
一、看门狗:谁不打卡就重启谁
飞控里有个东西叫看门狗。它做的事就很粗暴:每隔固定时间必须有人来"叫"它一次,谁不按时打卡,它直接把那一块重启掉,不给任何情面。
它不问原因,不看上下文,不讲情面。因为在天上,一个卡死的任务比一个重启的任务危险太多了。
![]()
二、失控保护:链路断了,清单自动执行
遥控信号丢了怎么办?不是现场决定,是起飞前就写好了一张清单。
电量多少、高度多少、风速多大、当前在不在禁飞区,每一个条件对应一个动作:原地悬停、自动返航、还是就近降落。
它的逻辑是:出事的那一刻,人是最不可靠的一环。所以决定必须提前做完。
三、传感器投票:宁可用坏的一个,也不用错的三个
姿态解算同时跑好几套惯性单元,结果放一起比。谁长期不合群,就被踢出去。
关键在最后半句——不是取平均,是要能识别出那个错的。三个都错还能接受,一个错了却没人发现,才是事故。
![]()
四、今年新出的那个国标,把兜底讲透了
民航局今年发了《民用无人驾驶航空器降落伞系统规范》,专管 150 公斤以下的伞降系统。我看完最服的是三条规定:
一是独立电源。整机断电了,这套系统还得能自己工作。否则就是"主系统一挂,安全系统跟着挂",等于没有。
二是先停桨、再开伞。不先切断电机把桨锁住,高速旋转的桨叶会直接把伞割破。
三是自动触发。不能等人反应。
你看,这已经不是配置清单了,这是"假设一切都会坏"的设计思路。
![]()
五、这套思路,我每天都在医疗仪器上写
我在生化分析仪上写质控判定的代码。
质控干的事,是给每个检测结果画一条线:连续两次超出 2 个标准差,或者一次超出 3 个标准差,就判"失控"。失控之后,机器本该锁住测试,不许再往下跑——因为那段时间出来的每一个结果都不可信。
但真正难的不是把规则写对,是另外半件事:失控的那一刻,系统有没有能力真的拦住后面的流程。判定写得再准,没人拦、或者拦了但界面上什么也不说,那等于没写。
一个数错了,不会有人当场发现。它只会在报告上安静地存在,直到有人照着它做了决定。
所以我给自己定了一条死规矩:任何"不可能出现"的数、任何"不该放行"的状态,必须当场拦住,宁可停机也不能放过。
飞控和医疗仪器,在我眼里是同一种系统:都要在没人盯着的时候,自己判断出"这件事不能继续"。
![]()
最后
兜底这件事有个很奇怪的性质:做得越好,越没人知道你做过。它最高光的时刻,是它一次都没被触发。
但如果哪天真失控了,那几行一辈子不跑的代码,会替你把这辈子的判断做完。
你有没有为了捡一台设备冒过险?或者见过最离谱的失控现场?评论区聊聊。
系列写了四篇,无人机这个题材先告一段落。下一篇,我们聊聊自己——一个 C++ 工程师,在 2026 年的处境。
![]()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.