从图2-6可以看出,虽然摄像头从接收光信号到最终感知结果需要一个比较复杂的流程,但大体可以归结为曝光和读取两个阶段。曝光阶段就是指摄像头传感器的数据采集模块将光信号转换为电信号,读取阶段则是将转换后的电信号读取出来。曝光阶段和读取阶段在时间上可以是互相重叠(交叠式曝光)的,也可以是没有重叠(非交叠式曝光)的。非交叠式曝光指上一次的“曝光+读取”过程结束以后,再进行新一次的“曝光+读取”,两次在时间上不存在任何重叠。图2-7所示的曝光和读取阶段在时间上没有重叠。交叠式曝光则是指在某次数据读取还没结束的时候,就开始下一次的曝光。图2-8所示为上一次读取过程还没结束的时候,下次曝光就开始了。交叠式曝光的判断主要取决于摄像头传感器的硬件特性。
图2-7 非交叠式曝光示意图
图2-8 交叠式曝光示意图
从图2-7和图2-8可以看出,交叠式曝光理论上可以提供比非交叠式曝光更高的影像帧率。
当下,自动驾驶汽车中的摄像头是以触发机制进行工作的,即摄像头收到信号就进行拍摄,否则一直处于待机状态。摄像头的触发又分为内部触发和外部触发两种模式。内部触发是指摄像头通过设备内部给的信号采集图像;外部触发是指摄像头通过设备外部给的信号采集图像,可以是通过软件触发,也可以是硬件触发。
所谓“硬件触发”,是指外部设备通过摄像头的I/O接口进行连接,传递触发信号给摄像头。当前,自动驾驶汽车上使用的卷帘快门摄像头是支持外部触发曝光的。硬件触发示意图如图2-9所示。首先,外部设备发送一个触发信号Trigger_in1,摄像头接收到这个信号以后,立即开始曝光,然后读取数据。在本次读取过程还没结束的时候,摄像头又收到了新的触发信号Trigger_in2,开始下一次曝光过程,依次循环。
图2-9 硬件触发示意图
从图2-9中可以看出,摄像头帧周期包括曝光时间和读取时间(整帧像素点读出)。对于相同的CMOS芯片的摄像头,读取时间是固定的,所以即使曝光时间固定,摄像头帧率也是有上限的。
智能驾驶车辆中常常会用多个传感器执行感知和下游规控任务。多个传感器之间数据关联最直接的方式就是时间同步。一般,智能车上的摄像头连接到SoC,方便进行摄像头信号感知处理。所以,目前最常用的摄像头时间戳是到达SoC的系统时间。这个时间包括曝光时间、读取时间、传输编/解码时间等。
对于外部触发的多摄像头系统,假设已经完成时间系统的授时,我们可以采用以下方法来实现摄像头时间同步,如图2-10所示。
1)摄像头工作处于外部触发模式,SoC提供触发源(即触发脉冲信号),并记录触发脉冲序号。
2)摄像头拍照时,曝光时刻会产生脉冲并对外输出,由SoC捕获,并记录信号捕获时间及序号。
3)记录的信号捕获时间及序号信号会被存储起来,然后在SoC中与摄像头触发脉冲信号进行一一对应,同时时间信息也可以与位置轨迹相匹配,这样就完成了摄像头帧与位置的关联。
图2-10 多摄像头系统时间同步示意图
由于读取时间、传输编/解码时间的存在,这种多摄像头系统时间同步方案多少会产生一些误差。这种误差是能被下游的感知任务所接受的。最理想的方式是选择支持IEEE 1588(或IEEE 802.1AS)时钟同步协议的摄像头。这种摄像头能够确保自身的时钟与SoC的系统时间完全同步,为每一帧图像都增加一个时间戳,确保SoC能够读取到这个时间戳。这样就可以避免编/解码、传输延时引入的同步误差。