下一章 上一章 目录 设置
44、可怕的行程 字面意义上 ...
-
佐伊的情况慢慢稳定起来。可日程表也慢慢变得可怕。
是真正的,字面意义上的可怕。
无人码头的二期工程全部在海外,硬件是beacon团队和海外团队联合做的,可联调结果不好。但是今年的施工必须赶在冬季大雪落地前前做完,留给技术部的时间窗口只剩下三个月。
佐伊原地变成一只陀螺。
她如果在总部,那就是一天从早到晚,五个会起步,早上八点到晚上八点半,几乎没有休息的时间。
倘若去出差,那基本和vital绑定,如果行程超过五天,查尔斯就要求加上康妮——vital只会冲咖啡,其他生活上的事情并不怎么靠谱。当他和佐伊这两个工作狂凑在一起,只会在解决问题的同时繁殖出更多工作量。按时吃饭睡觉这种事情…查尔斯自己知道自己都办不到,更妄谈这几个不要命的小孩。
佐伊飞阿姆斯特丹那次,是大病后首飞,那会儿她刚从ccu出来两个月零五天。临走,安东尼在三人群里发了佐伊的药单,问:药带够了?
佐伊回了一个猫猫点头的表情包,vital回复了一个立正敬礼的狗。
beacon内部论坛上,安东尼作为铲屎官的人设已经被规培和小护士们立起来了。vital和佐伊都没反对。
荷兰那边码头的工况和英国差异很大,海拔,海底地质环境,浪,风,温差……复合条件对硬件和软件都做出了很多调整要求。这些都是要建模放进系统里的东西。
但总有挂一漏万的事情,某个边界条件的疏忽,就能让整个系统的拥堵红到发紫。
两个小家伙带着助理和技术团队,在阿姆斯特丹忙了整整一周。
他们在阿姆斯特丹港的临时办公室是一间由集装箱改造的铁皮屋子,窗式空调嗡嗡作响,每隔二十分钟就有一架飞机从头顶低空掠过,轰鸣声能把马克笔从白板槽里震下来。Vital第一次来的时候站在门口愣了三秒,然后说:“这比机房还吵。”佐伊已经走进去,把工作站接上电源,头也没抬的开始看数据。
项目组的本地工程师团队一共七个人,加上佐伊从伦敦带来的两个助理,Vital带的三个硬件小兵,把一组集装箱临房挤得满满当当。
白板上画着港口的俯视图,泊位、堆场、AGV行驶路线、激光雷达的安装点位——每一个节点都标着参数,水位、风速、温度、湿度、盐雾浓度。
荷兰这边的码头和英国最大的不同,是潮差。北海的潮水每天两次涌进涌出,水位落差最大能达到四米。这意味着AGV在低潮位和高潮位时,激光雷达扫描到的岸桥轮廓是完全不一样的——差四米,在算法里就是两个完全不同的物体。佐伊在第二天傍晚发现了这个问题。
她蹲在码头边,看着一艘集装箱船正在卸货。夕阳把海面染成橘红色,AGV在堆场和泊位之间无声地穿梭,像一群在珊瑚礁间游弋的鱼。激光雷达装在AGV的顶端,每隔几毫秒旋转一圈,扫出周围环境的点云图。她在平板上把实时点云调出来,和高潮位时的点云叠加在一起。岸桥的支腿在低潮位时露出了更多的混凝土基座,点云里多出了一大块——算法把它识别成了障碍物,需要紧急刹车的那种阻碍。
“潮差。”她自言自语,手指在屏幕上划了一下,把两个点云叠在一起。Vital蹲在她旁边,海风把他的头发吹得乱七八糟。他眯着眼看了一会儿,然后叹了口气:“要重新训练模型?”“不止。”佐伊站起来,拍了拍膝盖上的灰,“还要加一个水位预测模块,把潮汐表和实时水位数据喂进去,让算法提前知道——接下来岸桥看起来会变成这样。”
Vital想了想,“潮汐表是公开数据。实时水位呢?”“港务局有。我去要。”她说完就往回走,步子不快,但很稳。Vital跟在她后面,看着她卫衣的帽子在海风里一鼓一鼓的。她没扎头发,灰白色的发丝从帽沿里跑出来,被夕阳照成淡金色。
那天晚上,他们拿到潮汐数据的时候已经九点多了。港务局的数据库接口文档是荷兰语写的,佐伊用翻译软件一行一行啃,Vital在旁边帮她翻,两个人对着屏幕连蒙带猜,终于在十二点前把数据流接进来了。
水位预测模块的训练持续了三天。集装箱里从早到晚都是键盘声、讨论声、白板笔摩擦板面的吱吱声。
Vital发现佐伊有个新习惯——她会突然停下来,低头看一眼手环,然后拿起杯子喝一口水。手环没震,心率也没超。但她还是会看。像一个人在开车时会下意识看一眼后视镜,不是因为有危险,是因为已经养成了确认自己状态的习惯。
联调前一晚,集装箱里的灯亮到了凌晨三点。佐伊在做最后的参数校验,Vital在测硬件的极限工况。其他人已经回酒店了,只剩下他们两个,还有窗式空调永不疲倦的嗡嗡声,和每隔二十分钟准时响起的飞机轰鸣。Vital从电脑后面抬起头,看见佐伊把PICC从背包里拿了出来,放在工作站的键盘旁边。橘色的虎斑猫玩偶安静地趴在一堆线缆和调试板中间,琥珀色的眼睛盯着屏幕,好像在监督代码质量。
“你把它带来了。”Vital说。佐伊没抬头,敲键盘的手指停了一下,然后继续敲。“它陪我睡。”她顿了顿,“酒店的床太软了。而且没有声音。”“什么声音?”“监护仪。还有你磨牙。”
Vital差点从椅子上弹起来,“我磨牙?”
“有时候。不是每天。累的时候会。你休息睡在那边躺椅上就开始磨牙。”
Vital张了张嘴,想辩解,又觉得没什么可辩的。他确实累,从早到晚连轴转,晚上回酒店倒头就睡,连梦都不做。他不知道自己工间小睡的时候在磨牙。
“你怎么不早说?”他问。
“说了你也改不了。”她把PICC的尾巴摆正了一点,让它的脸正对着屏幕。“而且,听着你磨牙,我知道你还活着。”
Vital愣在那里。空调嗡嗡地转。飞机从头顶掠过,轰鸣声从远到近,又从近到远。他低下头,继续测极限工况,什么都没说。但那天晚上他给安东尼发了一条消息,没有前因后果,只有一句:“佐伊把PICC带到荷兰了。”
安东尼那边是伦敦的凌晨,但他回得很快:“我知道。她问过我能不能带上飞机。”
系统联调那天,集装箱里挤了十几个人。佐伊站在白板前,手里拿着翻页笔,面前是满墙的波形和参数。水位预测模块在实时数据流里跑起来了——潮汐表的数据和港务局的实时水位,经过卡尔曼滤波器融合,喂进AGV的感知模型。高潮位时的点云,低潮位时的点云,中间所有过渡状态,全部被算法提前预判。岸桥还是那个岸桥,不是障碍物。AGV的路径规划平滑得像一条被风吹落的羽毛。
Vital站在人群后面,看着屏幕上那些绿色的小车一辆一辆地穿过交叉路口,没有拥堵,没有急刹,没有误判。他忽然想起很多年前,他在MIT的实验室里第一次跑通一个硬件加速模块时的感觉——不是成就感,是一种很安静的、像终于把拼图最后一块按进去的感觉。
联调顺利结束的时候,荷兰这边的项目负责人,一个叫汉克的中年男人,鼓着掌走到佐伊面前。“不可思议。”他用带着浓重口音的英语说,“你们的团队太厉害了。”佐伊握了握他的手,说了声谢谢。然后她转过身,看着Vital。“我们订明天上午的航班。”她说。
Vital愣了一下。“明天上午?你不停一天吗?阿姆斯特丹你还没逛过。”
佐伊想了想,看着窗外。阿姆斯特丹的傍晚,运河上的船屋亮起了灯,路灯的光落在水面上,被晚风揉成碎金。她看了几秒钟,然后转过头。“机场有巧克力卖。”
“那不算逛!”
“算。我讨厌这里大街上的叶子味。”
vital知道佐伊在说什么。没反驳。点了点头。
第二天一早,调试团队在史基浦机场候机。康妮去办行李托运,Vital在免税店买咖啡豆,佐伊坐在登机口旁边的椅子上,抱着PICC,看着落地窗外的飞机一架一架地滑行、加速、拉起。她掏出手机,打开三个人的群聊,发了一条消息:“登机了。下午到。”
安东尼秒回:“好。晚上想吃什么?”佐伊想了想,打了几个字,又删掉。最后发出去的是:“土豆泥。多放洋葱和黄油。还有鱼排。”
Vital在免税店那边看到了群消息,立刻追了一条:“我要双份鱼排!!!”安东尼回了一个猫猫掀桌的表情包。
佐伊把手机放在PICC的肚子上,让它的爪子搭在屏幕边缘。窗外的跑道尽头,一架飞机刚刚离地,起落架正在收回。阿姆斯特丹的晨雾还没散尽,机翼切开雾气,留下两道淡淡的白线。PICC安静地趴在她膝盖上,橘色的虎斑被机场的灯光照得有点发灰。
——
回到伦敦后的第三天,第二期硬件联调在英国三个港口同时铺开。佐伊的日程表彻底炸了。
周一费利克斯托,周二南安普顿,周三伦敦港,周四回总部开复盘会,周五和荷兰那边跨时区视频。晚上改代码,凌晨回邮件,早上七点被手环震醒,抓起能量棒边啃边往会议室跑。Vital的日程和她高度重叠,但他是硬件,需要在每个港口多蹲一两天,和本地工程师一起做现场校准。他们有时候在港口碰面,有时候在火车上擦肩而过——Vital从南安普顿回伦敦,佐伊正好从伦敦出发去费利克斯托,两个人在站台上遇见,他往她手里塞一包软糖,她往他包里丢一瓶防晒喷雾。然后各自上车。
八月中旬,南安普顿港的AGV在雨天再次出现延迟。不是水位预测的问题,是湿度。激光雷达在湿度超过85%的环境中,点云会出现散射,物体的边缘变得模糊,AGV会把一个集装箱看成两个。佐伊拿到现场数据的时候是晚上十一点,她刚洗完澡,头发还没吹干。她盯着屏幕看了十分钟,然后用毛巾把头发一裹,打开IDE,开始改滤波算法。凌晨三点,她把新的算法推送到测试环境,然后靠在椅背上,闭了一下眼睛。手环震了。心率122。她低头看了一眼,拿起手机,打开三个人的群聊。
“南安普顿的湿度问题我改了算法。明天让现场跑一下。”
Vital秒回:“你怎么还没睡?!”
佐伊回了一个猫猫拍桌子的表情包。
安东尼的消息紧跟着跳出来:“心率。”
佐伊:“122。”
安东尼:“躺下。闭眼。算法明天再跑。”
佐伊:“已经推送了。等结果。”
安东尼:“躺下。闭眼。”
佐伊盯着那行字看了一会儿,然后把PICC从枕边拿过来,抱在怀里,躺下了。过了一会儿,她拿起手机,又发了一条:“如果我明天早上醒来,算法没跑通,我就再改。”
安东尼:“你明天早上醒来,算法跑通了,你就不用改了。”
Vital:“如果没跑通,我帮你改。你快睡!!!”
佐伊看着这两条消息,嘴角弯了一下。她把手机扣在枕头,闭上眼睛。PICC的颗粒沙沉甸甸地压在她胸口,像一只真正的猫趴在那里,用触觉在告诉她:你还活着。