蘑菇说:人类在开车的时候,有一件事情几乎是下意识就完成了的:统一时空坐标系。而自动驾驶设备繁多,如何保证它们在一个共同的时刻表中作业?本期蘑菇说为你解读。
人工智能机器正变得越来越复杂精密。但人类绝佳的组织协调能力依然让机器望其项背。试想,人类总是在不知不觉间就能形成一套从身到心的统一生物钟。而同样依赖多设备协同的机器系统却得煞费苦心,才能确保后者总是在统一的时刻表中行事。
在自动驾驶世界,这一差距体现在人类可以精确指挥感官、大脑和身体在同一时间感知接受变道或刹车指令并精确执行,自动驾驶传感器大家族的族员们却连”报时“都报得五花八门。
最直接的原因是:这个大家族中,家家都有一块走不准的钟。激光雷达、毫米波雷达和摄像头各自都有一套内置的时钟。而数字电子设备的内置时钟往往运行一段时间后就与出厂时的标准时间产生差异(就像儿时的电子表走一段时间就不准了),因此不同设备之间天然存在时间偏差。
结果是,传感器们回收数据后,连在哪一帧做感知融合都没法精确对齐。这为自动驾驶系统准确感知障碍物带来挑战。
举个例子,左侧车道一辆时速80的车正准备超车变道。假设系统没有时间同步,与摄像头当前采集图像融合的还是300毫秒前激光雷达扫描形成的点云图。工程师为雷达设置了更高的优先级,于是系统根据空荡荡的点云图判断前方无超车,继续正常行驶,下一秒就可能酿成事故。
如何解决自动驾驶多传感器时间不同步的问题?工程师们从硬件和软件两大层面给出了思路:硬件靠授时,软件靠补偿。授时意为给传感器们提供统一的时间基准。这类似于一群小伙伴在执行任务前,对照CCTV标准时间,一起校准各自手中的表。CCTV在其中扮演了基准时间的角色。自动驾驶系统的时间基准要靠GPS(全球定位系统)。你可能对GPS的定位功能比较熟悉,其实它自带的秒脉冲发生器还能从地球同步卫星那里获得标准时钟信号。传感器们据此校准各自的时钟时间,实现时间同步。但统一的时间基准依然无法消除后续数据处理环节的时间差。理论上我们也不可能消除不同传感器采集频率和处理数据的时延差异。
因此,软件层面的解决方案不是消除时延,而是为所有关键事件打上“时间戳”,据此补偿数据处理环节的不同延迟。
换言之,每个自动驾驶传感器的软件系统都自带时间补偿思路:当前时间是16:00pm。3秒前的15:57pm我检测出前车变道。车辆从15:57pm到16:00pm运动了50米,所以我建议执行动作X,同时告诉其他传感器伙伴,我的判断依据是15:57pm的前车变道事件。
科幻电影《黑客帝国》有一幕似乎就运用了时间补偿的思路。特工Smith向救世主Neo连开三枪。千钧一发之际,Neo一个漂亮的战术后仰,三颗子弹擦身而过。
Neo如何帅气地躲过子弹?首先,子弹在距离Neo还有5米时,摄像师给了一个360度观察子弹的环视镜头,模拟Neo感官对子弹位置、速度的感知,结合大气密度、风速、天气和墨镜镜面折射,“融合感知”子弹弹迹,得出后仰90度躲子弹的策略。
Neo的思考时间是10毫秒,子弹速度是400m/s,那么这期间子弹前进了4米。再加上Neo的肌肉接收大脑指令的1毫秒时延,这时子弹又飞过40厘米。
于是Neo强行加大肌肉收缩强度,在最后60厘米弹程内,完成了原计划的90度后仰,成功躲过子弹。堪称一场对时间补偿策略的活学活用。
事实上,从地铁、高铁到交通系统控制,任何对时间敏感的网络都需要时间同步。而在“车路云一体化”协同的未来交通网络中,时间同步策略将比一辆汽车的自动驾驶系统时间同步复杂得多。
说到底,时间同步也是一门实践科学。在蘑菇车联的国内首个城市级自动驾驶项目实践中,更先进的时间同步技术和策略正在慢慢被开发并检验。