苏晚在凌晨三点十七分推开仓库铁门的时候,廊灯感应到她的脚步声,一盏接一盏亮起来,像某种迟钝的欢迎仪式。
五百架无人机整整齐齐码在充电柜里,每一架都比她的手掌大不了多少,四片桨叶收拢着,指示灯沉默地亮着幽绿色的点。远看像五百只被关进抽屉的萤火虫。
她径直走到三号控制台前,唤醒屏幕,调出今早刚收到的固件版本号。
V4。2。7。
她记得很清楚,三天前她离开这个仓库的时候,控制台上显示的还是V4。2。6。没有人通知她升级。项目经理没有,技术总监没有,供应商的对接群里也没有人发过一条消息。
苏晚拉开椅子坐下来,把固件更新日志从头到尾翻了一遍。官方的说明写得很体面:优化起飞序列稳定性,调整默认安全参数,修复若干已知问题。
“默认安全参数。”
她的手指停在触控板上。
做这一行第六年,她学会了一件事:所有被藏在“若干”和“默认”之间的东西,都值得用最笨的办法翻出来看。她打开参数比对工具,把新旧两个版本的配置文件拖进去。屏幕上的差异行一条一条往下滚,大部分是无关紧要的注释和日志格式调整。滚到第七十三条的时候,她停住了。
Geofence_Margin_Default:5。0m。
她的后背贴着椅背凉了一下。公司运行手册上写得很清楚,硬地理围栏与观众区之间的安全余量不得小于一米。这是奥兰多那件事之后,整个行业用一场事故换来的数字。苏晚在入职培训的第一天就被要求把那份事故报告逐字读过一遍,读到“498500”和“7°”的时候,培训师让她停下来,问她看出了什么。
她当时说:“选机数量不一致,航向没有复核。”
培训师说:“你只看到了表面。真正的问题是,没有任何一个人在起飞前问过另一个人:‘你确定吗?’”
现在,新固件把那个默认值变成了五米。
苏晚看了一眼时间。距离跨年夜表演的第一次全流程彩排还有不到二十个小时。距离正式起飞,四十八小时出头。
她拿起手机,翻到项目经理方远的对话框。最后一条消息是方远昨天下午发的:“场地那边确认了,观众区比原计划往东扩了十五米,你编程的时候把那块让出来。”她回了“收到”。再往上翻,是三天前她提交的空域报备回执截图,方远回了一个竖大拇指的动画表情。
苏晚打了几个字:“新固件你看到了吗?”删掉。又打:“围栏默认值被改了。”删掉。最后她发出去的是:“方经理,明天彩排前我需要跟你碰一下参数。”
发完她把手机扣在桌上,重新看向屏幕。
五米。如果按这个默认值起飞,硬围栏的位置会比她设计的航线向外推四米。四米是什么概念?观众区前排到起飞阵列的最近距离是十二米,推出去四米,安全余量就只剩下八米。八米在纸面上不算小,但当五百架无人机以每秒三米的速度在五十米高度做交叉换位的时候,任何一架因为通信延迟晚零点三秒响应,它的实际位置就会比预设位置偏出将近一米。一串偏差叠在一起,八米可以在一瞬间变成零。
她闭上眼睛。
奥兰多的那个晚上,一个七岁的男孩被一架失控坠落的无人机击中。调查报告里写,主飞手在起飞前没有独立核对展演中心坐标,航向被旋转了七度,展演位置整体偏移了十八米。十八米。苏晚在脑子里算了无数遍:十八米在五百架飞机的编队里,就是一条航线从“从观众头顶掠过”变成“扎进观众席”的距离。
她重新睁开眼,在控制台的备忘栏里敲下一行字:起飞前必须由第二人独立核对围栏参数、航向、选机数量。逐项签字。