皮朵有时候很佩服程子昂的‘演技’,至少在家里,程子昂跟原来那个高冷继兄一模一样。
*
新学期开始,皮朵变得忙碌。
自学的编程应用在工程实践中一堆bug,单控制串口通信就花了好长时间调试,好在团队成员都相互帮忙,皮朵倒也不觉得孤单。
他们组一共五个人,三个男生,两个女生,皮朵和室友李瑜,班长尤俊远负责硬件集成,李默做嵌入式底层控制,严彦对视觉识别很感兴趣,几个人都是新手。
不上课的时候,他们经常待在图书馆。
这个阶段关于机器人小车的构想尚在雏形,都靠尤俊远在淘宝上DIY元器件,暂时组装成接电后能动的四驱小车,其他投弹、防守、稳固等功能还待完善。
皮朵接了路径规划模块,她的任务依赖硬件搭建,再进行调试,这也意味着她有更多时间在调试环境下优化代码。
她变得爱上网,浏览各种技术网站及博客,在github上注册了自己的第一个账号,那里有成千上万的代码贡献者,有人坚持每天打卡提交代码。
皮朵第一次觉得代码也是艺术,大神的代码可读性和运行效率拉满,她不知道自己什么时候能写出这么漂亮的代码,上传自己代码的同时,也吸取前人经验,逐天点亮代码日历图标。
程子昂经常给皮朵打电话,皮朵总说在忙。
“吃饭的时间都没有吗。”程子昂在电话里说,“我到你们图书馆了,出来吧。”
皮朵关上电脑,忙不迭跑出去,图书馆广场门口站着清瘦的身影,穿白色休闲衬衣,袖子上堆出棉纱褶皱,脸庞轮廓分明,深邃的眼在笑,整个人在余晖中显得清俊寂静,像等了她很久一样。
李瑜恰好出来,路过时掐了皮朵一下。
皮朵羞赧着让她快去吃饭,等她走远了,才走到程子昂身边。
程子昂牵住皮朵,两个人走在绿荫道,一个高大瘦削,另一个纤瘦灵动。
“这段时间还好吗?”程子昂问,“我那边事情也有点多。”
皮朵说:“还行,一直在准备比赛。”自从知道妈妈和程叔叔没有领证,她心里压了块石头,总觉得妈妈将来还是需要她,她要做妈妈坚强的后盾,在学习上格外努力。
即使特别想程子昂,她也会克制住自己不要给他打电话,她不想让恋爱成为她的全部。
程子昂听着她平静的口吻,莫名有点失落,他想让皮朵依赖他,又不想限制皮朵,因此只是‘嗯’了一声,“加油。”然后牵紧她的手。
只要不忙,程子昂都会来津城看皮朵,不知不觉间他竟然攒了一堆车票。
那天分别的时候,天都黑了,程子昂在林荫道吻皮朵,皮朵亲了一会儿就环住他的脖子,手放在他脸上,还轻轻咬他,程子昂心里好受一点了。
三个月后,小车雏形已定,长得像个小坦克,立起来形似机器人,也能当阻挡面板使用,多余的两颗视觉传感器设计在面板两端,显得小车移动时像个人——两只眼睛分得很开,丑得有点可爱。
皮朵烧录完调试数月的代码,本以为小车运行轨迹和仿真时一样,不料没走出一米,小车就开始歪斜,严重偏离预设轨迹。
李瑜反复测试,记录偏移的角度和距离,“测了五遍,都这样。”
尤俊远推了推眼镜,关掉小车电源键,“问题有可能出现硬件上,我们的编码器成本很低,轮胎在光滑地面容易打滑,车子负重后会让里程计读数不准。”
李默蹲在一旁看,“要做地面负载测试吗?”
皮朵凑在矮桌前检查代码,核心算法虽然了考虑非线性波动数据,但增补效果并不好,她认同尤俊远的猜测,但更希望从代码层面找到更容忍底层噪声的解法。
她登陆了Github寻找类似疑问,顺便问了下程子昂。
程子昂回复消息有点晚,皮朵回到宿舍才看到:你把源代码上传一下。
很快,一个叫‘KiteFlyer’的用户关注了皮朵,这个人也经常提交代码,但提交频次断断续续,经常回复技术提问,得到许多点赞,看起来有点神秘。
没过多久,程子昂发来消息:你要不要试一下鲁棒核函数?
皮朵说:我已经用过滤了高斯分布噪声。
程子昂:问题就出在这里,轮胎打滑是突发的,更像脉冲噪声,需要引入鲁棒核函数抑制突变值。
接着,程子昂发来手写草稿图,旁边是核心算法流程图:这种自适应性的函数比开源算法更具普适性,试试。
什么试试?程子昂让皮朵稍等,没过多久,皮朵就收到了KiteFlyer的私信,是他刚刚提交的代码,注释了函数属性,下载后直接当函数调用。
皮朵震惊于他的敏锐和行动力,键盘快要敲出火花:哥哥 !!!!
程子昂耳热了一瞬:……怎么了。
皮朵:你太牛了,等我调试!
之后皮朵消失了好几天,程子昂闲暇之余也逛github,他刚关注皮朵,原本只是随意翻看了一下她的主页,都是和机器人比赛相关的代码,也有个别函数复制学习。
但她每次提交,都有一个叫‘UJY’的用户点赞,皮朵最新提交的那段代码甚至有一条留言:勤劳的小蜜蜂!
点开用户头像,是个年纪相仿的男生,戴眼镜,长相很斯文,主页学校是N大。
有人惦记他的皮朵。
屏幕蓝光映在程子昂脸上,显得他清俊的脸庞略带严肃,眉眼温和却意味深长,依旧是初夏的傍晚,衬衣领口微微敞开,瘦削的锁骨若隐若现。电脑因无人操作超过三分钟,短暂进入休眠。
程子昂重新解锁,对着‘UJY’头像下的图标,点击了关注。