陈砚舟把“低空工业巡检无人机任务系统框图”摊在桌上时,宿舍里还残留着泡面汤和焊锡混在一起的味道。图纸从左到右被分成飞行平台、任务载荷、地面站、通信链路、供电和失效保护六块,箭头互相交错,最右侧单独留了一栏:验证与记录。 许知夏用红笔把“自主航线重规划”圈了出来,随后把笔横放在纸面上:“你准备怎么验证?” 沈则蹲在床边翻工具箱,听见这句话抬头看了一眼:“你俩这是继续做毕业设计,还是已经开始做型号评审?”
“先回答她的问题。”陈砚舟没有抬头,“自主重规划分两层。第一版只做约束范围内的航点调整,限定区域、限定速度、限定任务阶段;复杂环境避障和大范围自主决策不写进本科项目。”
“那就别写‘自主’。”许知夏说,“改成半自主任务管理。你把词写大,答辩老师就会顺着词追问鲁棒性、传感器失效和边界条件,最后你只能用一套还没验证的承诺补洞。”
陈砚舟接过红笔,把标题里的词改掉。宿舍窗外传来毕业展板搬动的声音,楼道里有人在讨论答辩顺序。每个人都在赶最后的报告,只有他们的文件越来越像一个会把人拖进试验场的工程项目。 “你看起来不像在做一份让自己顺利毕业的方案。”许知夏说。 “我想做一份毕业以后还能继续用的方案。”
她没有被这句话打动,反而把图纸往前推了一点:“想法和工程之间隔着硬件。你的任务管理、数据链和失效保护都建立在传感器正常、执行机构按指令响应、电源不掉压的前提上。真实飞行不会给你这样的条件。”
陈砚舟把飞控部分单独放大:“所以要做边界。模型里默认传感器干净,实物会有陀螺漂移;模型里链路连续,山区和建筑之间会丢包;模型里电调温度不变,实际任务里电源和散热都会改变状态。第一版不追求飞得漂亮,只保证出现异常时能回到可控状态。”
许知夏的视线落到那几条边界上。她做的是纵向通道小扰动稳定控制,算法结构清楚,仿真曲线也漂亮。她当然知道模型和实物之间的距离,只是同龄学生很少愿意在方案最亮的地方先写上可能失败的条件。 “怎么验证?”她问。
陈砚舟从书包里抽出一张表。左边是功能项,右边是验证手段和失败判据:桌面仿真、传感器数据注入、地面联调、低速滑跑、低空短航线、任务中断恢复。每一项后面都留了“停止条件”和“记录位置”。
许知夏看得很慢。她没有先问陈砚舟从哪儿学来的模板,只用红笔在失联返航旁边写下:断链持续时间、剩余电量、飞行阶段、回滚版本。然后她抬头:“你准备让我做什么?” “飞控失效保护和地面站数据流程。” “我还没答应。” “我知道。”陈砚舟说,“所以先把接口和验证路径给你看。” 沈则在旁边嘀咕:“你们招一个人,条件怎么像签安全条款?”
许知夏没有理他,继续盯着陈砚舟:“第一,不能为了答辩展示增加未经验证的功能。第二,飞行试验要有保护边界,不能因为天气、围观和老师一句‘再飞一圈’就改变计划。第三,如果我判断某个飞控功能风险过高,你必须接受删减。” “可以。” “你答应得太快。”
“工程安全不是谈判筹码。”陈砚舟把责任表推过去,“功能的最终范围由验证结果决定。你对飞控安全有否决权,我对总体范围和系统接口负责。” 许知夏没有握手,只把红笔递还给他:“先把这句话写进责任表。”
陈砚舟照做。许知夏的名字落在飞控和安全策略一栏,后面紧跟着“独立提出停止试验的意见”。沈则看见自己的名字出现在结构接口和维护空间下面,立刻抗议:“我只是帮忙看结构,怎么也有责任?” “因为你刚才说了快拆接口。”陈砚舟说。 “我那是随口一说。” “随口说出来的方案,也要能承受装配和维护。”
沈则盯着表格看了一会儿,拿起笔在自己的名字后面补上“可更换、可检修、不得遮挡关键件”。写完他才反应过来:“我是不是被你们骗进项目了?” 许知夏终于露出一点笑意:“你可以退出。” 沈则把笔放下:“那不行,我倒想看看你们怎么把这堆东西飞起来。”
陈砚舟没有把这句话当成正式加入。真正的团队关系要经过共同的失误、返工和责任分配,现在只是三个同学在一张表上留下了名字。他把图纸重新分层,删掉“自主航线重规划”,把第一版任务收敛成一条预设航线巡检:按航点飞行,记录姿态、位置、电压、链路质量和载荷数据;短时断链进入预定状态,持续失联按飞行器端规则返航或降落。 “任务载荷是什么?”许知夏问。 “先用可替代的工业相机和固定安装架,重点验证时间戳与地面站记录。” “图像质量呢?” “先定最低可用线,再做优化。任务失败可以接受,飞行安全不能拿来换清晰度。” 许知夏在纸上补了一句:“载荷失效不能影响飞控。” “写进系统边界。” 她按住纸角,忽然问:“你为什么这么急?”
宿舍里的声音短暂停了下来。陈砚舟看着窗外的毕业展板和来回奔跑的人,想起前世许多被等待拖慢的工程:等预算、等批件、等供应商、等某个会议形成结论,最后等到机会窗口关闭。可这些话他不能说给眼前的人听。 “因为我不想只在答辩会上展示一段视频。”他回答,“我想让这套接口和记录能留下来,等项目继续时不用全部推倒重来。”
许知夏没有继续追问。她把飞控资料抽出一半:“我可以先帮你把飞控接口和状态机整理出来,但只做接口草案。你要是拿不出硬件、供电和测试条件,我不会替你把软件写成看起来会飞的样子。” “这就够了。” 沈则举起手:“那我负责结构?先说好,别追求轻到不敢落地。快拆接口要能让人戴着手套换东西,传感器安装位置要留检修空间。” “你自己已经写进去了。”陈砚舟把纸转向他,“按这条做。” 沈则看着自己的字,叹了口气:“我只是觉得螺丝掉进机身里很烦。” “以后客户也会觉得烦。” 许知夏把资料装进文件夹,走到门口时又停下:“明天的换题评审,你别说我们已经是团队。” “我知道。” “先说清楚每个人负责什么,别把同学的帮忙写成你一个人的成果,也别把还没有完成的能力写成产品指标。” 陈砚舟看着她:“你会来?” “我去听你怎么给自己的方案划边界。” 这不是承诺加入,却比一句“我支持你”更有价值。许知夏的判断仍然独立,愿意参与的条件也说得很清楚。陈砚舟点头:“明天见。” 她离开后,沈则靠在桌边:“飞控女孩挺难招。” “难招才好。”陈砚舟把责任表保存下来,“真正能把飞机带回地面的人,不该因为一句创业口号就点头。” 系统界面在屏幕角落弹出新的提示。 【阶段任务更新:组建最小工程团队。】 【当前节点:总体、结构、飞控接口初步成型。】 【下一节点:毕业设计换题评审。】
陈砚舟看完,把提示压下去。他没有因此得到一套完整飞控,也没有得到自动完成的团队,只得到三份还很粗糙的责任表和一项需要自己推进的下一任务。屏幕上的任务名称让他想起前世最早带团队时犯过的错误:把能干活的人凑到一起,就以为组织自然会出现。真正的团队要有接口、边界和拒绝权,出了问题还能沿着记录找到该由谁判断。许知夏愿意先看飞控草案,沈则愿意把结构责任写上名字,这已经比宿舍里一句“我来帮你”可靠得多。沈则收起工具箱:“今晚还做什么?” “把需求分层,整理采购清单。” “钱还没凑够。” “所以优先买不能替代的器件。” “那要是全买不起呢?”陈砚舟看着桌上的图纸:“先让设计更克制,不能让验证更含糊。”夜色从窗外压进宿舍,纸张上的箭头和红笔标记连成一副还不完整的系统图。陈砚舟把最后一处接口编号补上,合起文件夹。明天,他要让导师相信这不是一时冲动。更重要的是,他要让一架还不存在的小飞机,拥有第一条能被验证的生命线。为了让这条生命线不只停在纸上,他把明天的工作拆成四个可检查的动作:飞控接口先冻结,结构包络先复核,采购清单先砍掉不可验证的功能,所有试验数据统一归档。没有人要求他现在就做到主机厂的程度,可他至少可以从第一张表开始,避免未来的返工从一句“我以为你知道”开始。今晚他还要把这张责任表备份到两个位置,给每个文件写清版本号,防止第二天三个人拿着不同的方案争论同一件事。