陈峰站在主控台前,屏幕上显示着感知、决策、规划、控制四个模块的联合仿真结果,
每一块的数据流都从各自的终端汇总到一个综合界面里。
“四个模块单独运行没有问题,但集成到一起之后,数据传输延迟和时序同步的问题开始暴露出来。”
他指着屏幕上几处不连续的曲线,那些曲线在某个时间点出现了明显的错位,
“感知模块的输出到决策模块的输入之间有一百毫秒的延迟,这在高速工况下会累积成明显的控制滞后。
需要优化模块间的通信机制,把数据交换频率提高一倍。”
何晋在终端上查了一下数据流的路径,发现感知模块的输出需要经过一个中间缓存队列才能被决策模块读取,
队列的处理速度在数据量大的时候会形成瓶颈。
他把队列深度缩小了一半,又把数据读取的频率从每秒五十次提到了每秒一百次,
然后重新跑了五分钟的联调数据,延迟从一百毫秒降到了四十毫秒。
“四十毫秒还是有点高,目标应该是二十毫秒以内。”
陈峰站在何晋身后看着他改代码,又指了几处可以优化的地方,
把数据序列化的格式从JSON换成了更紧凑的二进制流,序列化和反序列化的开销降了将近一半。
重新部署之后,延迟降到了十八毫秒,达到了目标范围。
系统提示在脑海里响了一下:
【优化模块间通信机制,降低数据传输延迟,计算机技能熟练度+470!】
他接着调试了几个模块之间的时序同步逻辑,把感知模块的时间戳和决策模块的时钟源对齐,防止因为各自不同的时钟基准导致数据顺序错乱。
改完之后又在仿真环境里跑了几轮,同步误差控制在了一毫秒以内。
【调试系统时序同步,提升实时性,计算机技能熟练度+490!】
下午三点五十,陈峰走出研发中心的时候,宋远和何晋正在联调环境里跑一个高速公路场景的完整流程,
两个人盯着屏幕上的轨迹曲线看了好几分钟,确认每一段的数据都是连续的,然后对视了一眼,谁都没说话。
小萌今天出来的时候手里拿着一张硬纸片,上面贴满了各种形状的亮片,有圆形的、星星形的、月亮形的,还有几个说不出形状的不规则块块。