曹盛福,王宇鹏,张 凯,梁利平
(合肥工业大学 电气自动化工程学院,安徽 合肥 230002)
随着社会的快速发展,车辆越来越多,各类 交通事故有愈演愈烈的趋势。导致交通事故发生的因素是多方面的,其中,对交通事故严重程度影响最大的是机动车风险因素[1],如车辆自身结构不合理、汽车性能不达标等,而A柱盲区的存在则是车辆自身结构不合理的主要体现之一。A柱是风窗玻璃与前车门之间的连接柱,其主要作用在于支撑车体结构,但也使得驾驶员前侧视线受到严重的影响,产生视觉盲区,带来安全隐患。
针对A柱盲区问题,王智杰等[2]通过超声波收发模块和红外感应模块对A柱盲区范围内探测的信号进行处理,并通过发光二极管(Light Emitting Diode, LED)灯条对驾驶员进行预警;许彦平[3]提出一种结合双目相机人眼精准定位、空间转换与透视变换等技术的汽车A柱盲区可视化车载显示装置,在满足汽车A柱刚度的前提下改善驾驶员视野;廖术娟[4]基于“电子透明”理念,研究了基于数字信号处理(Digital Signal Processing, DSP)的汽车A柱盲区消除系统,满足了驾驶员对安全性和舒适性的要求。本文提出的基于视觉传感器和视线追踪技术的车载智能A柱显示系统是针对A柱盲区问题的一种新的解决方法,研究了双目与头部位置坐标系统一方案,并给出统一坐标后通过何种算法指令外部摄像头随动,以期真实呈现A柱遮挡区的影像在显示器上,让A柱近似的透明化。整个系统具有较高实用性。
本文着重于A柱盲区显示系统全系统的研究,对设备的选型和安装给出了建议和参考案例,并对实验数据进行了简要分析,具有一定的科学和工程价值。
本系统采用在A柱位置安装一个形状大小与A柱相同的显示屏,显示驾驶员被A柱阻挡的视野影像的方式解决A柱盲区问题。其中,盲区视野影像由安装在车辆左后视镜处(对于绝大多数车辆,这可以看成是A柱所在的位置)的摄像头拍摄得到,并通过蓝牙模块传递给车内显示屏。
在A柱位置固定的情况下,驾驶员头部移动或视角变化会导致盲区区域不同(如图1所示),因此,要求显示屏能够根据驾驶员头部位置和视角的改变,实时动态地调整显示驾驶员被A柱阻挡的视野;由于显示屏上的影像直接由摄像头拍摄获得,影像的调整可以通过利用舵机控制摄像头旋转来实现。
图1 驾驶员头部位置与盲区区域的关系
分析摄像头旋转的角度和驾驶员头部位置与视角的关系。由图1可见,左侧A柱盲区实际上是一个扇形区域,其夹角约为6.8°,且会随着车速的变化产生小幅度的改变[5];其中心线即驾驶员头部位置与其在A柱上注视点连线的延长线。由于摄像头被安装在左后视镜,近似为A柱所在位置,因此,只要使摄像头拍摄方向始终跟随上述连线延长线方向,就可以使显示屏实时显示A柱盲区视野。
为了获取上述延长线方向(角度),如图2所示,可以在汽车平面上建立直角坐标系。之后,只要利用视觉传感器获取驾驶员头部位置坐标a,利用视线跟踪设备获取驾驶员注视点坐标b,就可以计算出这两点连线与坐标系Y轴的夹角c,即驾驶员头部位置与其在A柱上注视点连线的夹角。驱动舵机控制摄像头旋转到该角度,就完成了对影像的智能控制。
图2 坐标系示意图
基于以上设想,可将系统分为数据采集与处理、图像控制与显示两个模块。其中,数据采集与处理模块又分成注视点获取、头部位置获取以及数据处理三个子单元。注视点获取单元获取驾驶员注视点信息a,头部位置获取单元获取驾驶员头部位置信息b,数据处理单元接收这两组信息并进行处理,得到摄像头应当旋转的角度c并将其传送给图像控制与显示模块;图像控制与显示模块连接摄像头和显示屏,并进行图像的处理和传输,同时,舵机接收来自数据采集与处理模块的数据c并与摄像头相连,控制摄像头的旋转。系统整体框图如图3所示。
图3 系统整体框图
视觉传感器是头部位置获取单元的主要组成设备,用于检测驾驶员位置并输出其中心坐标,本系统选择MU视觉传感器。
MU视觉传感器是一款内置深度学习引擎的图像识别传感器,体积小巧,含有多种视觉算法,功能强大。该传感器可以检测识别多种目标物体,例如:颜色检测、球体检测、人体检测等,识别人体时不需使用者佩戴任何设备;检测结果(尺寸、坐标等)可通过通用异步收发传输器(Universal Asynchronous Receiver/Transmitter, UART)方式进行输出;内置算法均在本地处理,无需联网就可进行图像识别;适用于Arduino开发平台,算法修改方便。图4和表1分别列出了MU视觉传感器实物图及部分功能/参数。
图4 MU视觉传感器
表1 MU视觉传感器部分参数
视线跟踪设备用于注视点获取单元检测驾驶员视线信息,输出其在显示屏上的注视点坐标,本系统选用的是Tobii眼动仪。
Tobii眼动仪是一款遥测式视线跟踪设备,其可以准确记录人们视线焦点所在的位置,且其体积较小,重量轻,非常适合安装于汽车中,对汽车内部结构造成的影响极小。此外,本设备对是否佩戴眼镜具有极强的兼容性,对被试者的头动和不同光线条件具有高度容忍性,且性能优良,价格实惠。图5和表2是Tobii眼动仪实物图以及部分技术参数。
图5 Tobii眼动仪
表2 Tobii眼动仪部分技术参数
为保证影像的清晰度和流畅度,摄像头选用的是S330USB免驱工业摄像头,图6和表3是摄像头实物图和主要产品参数。
表3 S330工业摄像头主要参数
图6 S330工业摄像头
由于不同汽车的A柱形状、尺寸略有差异,因此,对于不同汽车,需要为之专门定制合适的显示屏。考虑到大多数A柱区域为矩形,使用了市面上一种28.65 cm×18.47 cm(12.6寸)带鱼显示屏来进行模拟实验。图7和表4分别列出了显示屏实物图和主要产品参数。
图7 带鱼显示屏
表4 带鱼显示屏主要产品参数
3.1.1 车外部分
车外部分包括摄像头、舵机、蓝牙模块和电源。其中摄像头与舵机固定连接并安装在左后视镜位置,舵机初始角度为0°,此时摄像头拍摄方向为车辆正前方。蓝牙模块与舵机连接,作用是接收控制信息控制舵机旋转。电源为车外模块供电。蓝牙模块和电源的安装要求是不阻碍舵机转动和摄像头拍摄。
3.1.2 车内部分
车内部分包括MU视觉传感器、Tobii遥测仪、显示屏、树莓派开发板、Arduino UNO开发板(后简称UNO开发板)、蓝牙模块和电源。
显示屏安装于A柱位置,要求形状大小贴合A柱,并且不产生额外的盲区。树莓派开发板、UNO开发板、蓝牙模块及电源安装在显示屏背面,要求尽量减小空间占用、不遮挡显示屏画面、不产生额外的盲区。
Tobii眼动仪的工作原理[6]是通过摄像头获取人的眼部图像和视野场景图像,提取相关的特征参数进行计算分析。具体地说,其视线追踪功能由标定和测量两个主要环节组成:输入信号为连续的眼部图像和视野场景图像或真实的视线标定空间,先经过标定获得注视点与眼动特征之间的映射模型,再实时提取眼动特征代入映射模型中即可得到注视点估计坐标,最后将此坐标与视野场景图像或真实的注视点平面进行匹配即可实现视线跟踪的功能。根据获得的注视点坐标和眼动特征即可计算出所需的视线信息。工作原理如图8所示。
图8 Tobii眼动仪工作原理示意图
结合Tobii眼动仪的工作流程可知,需将其安装在车内仪表盘位置,摄像头正对驾驶员面部。然后进行眼动仪的标定:将Tobii眼动仪与显示屏连接,使用者依次注视显示屏上显示的五个校准点,设备内置算法将会开始进行校准工作,校准完成后,Tobii眼动仪就可用于获取驾驶员在该显示屏上的注视点位置。
MU视觉传感器安装在驾驶员正上方,传感器摄像头正对驾驶员头部;通过杜邦线与UNO开发板连接,如图9所示分别是传感器接线示意图和实物图。
图9 视觉传感器接线图与实物图
由于采用Arduino开发平台,希望识别的是驾驶员头部中心坐标,按照产品说明书,需采用以下步骤初始化该传感器:
1)设置Address地址:由于采用UART输出模式,需使用0X00作为广播地址;
2)设置Output模式:选择信号输出类型为UART通讯类型,完成后上电;
3)版本校验:查询相关寄存器来判断固件是否与手册要求的一致,若不一致可能导致寄存器功能或算法不同;
4)设置硬件和算法参数:产品维库中具有视觉传感器识别人体位置坐标所需的库文件和程序代码;
5)数据输出。
3.2.1 坐标系统一
为了利用驾驶员头部位置坐标a和注视点坐标b计算摄像头旋转角度c,需要将视觉传感器和遥测仪输出坐标的参考坐标系进行统一。方便起见,对图2所示参考系进行更改,使其原点位于显示屏左上角、X轴平行于显示屏上边沿,作为统一坐标系,如图10所示。
图10 统一坐标系
假设驾驶员头部位置坐标a=(x1,y1)。在未对视觉传感器的算法进行更改时,传感器输出坐标的参考系的原点在穿过传感器平面中心的法线上,X轴平行于传感器中轴线。为此,在正式将传感器用于测量驾驶员头部坐标之前有以下几步工作要完成:
1)安装传感器时,调整其轴线平行于显示屏上边沿;
2)安装完成后,调整算法识别物体类型为球体,将球体置于显示屏左上角,测得传感器此时的输出坐标,将其作为偏置量添加到算法输出量上;
3)改变应用在视觉传感器的算法,使其识别对象为人体。
完成上述工作后,视觉传感器开始工作,如图11所示,传感器检测到目标物体时,辅助LED灯将闪烁蓝灯,串口输出坐标值。
图11 传感器工作和串口输出示意图
经过上述调整,视觉传感器输出的坐标就是(x1,y1),表5展示了改变视觉传感器算法前后、测量同一组点位置坐标时,传感器坐标输出的变化情况(偏置量为(50,-50))。
表5 增加偏置量前后的坐标输出
假设驾驶员注视点坐标b=(x2,y2)。由于遥测仪输出的坐标以显示屏平面为参考系、显示屏左上角为原点,由空间几何可知,x2就是其输出的X轴坐标,y2=0。
3.2.2 舵机控制
当视觉传感器和遥测仪将测得的a、b坐标传送给UNO开发板,UNO开发板内的算法将其转换为摄像头应当旋转的角度,并通过蓝牙模块控制位于车外的舵机旋转相应角度。
基于图5所示的统一坐标系,利用坐标a= (x1,y1)、b=(x2,0),通过几何知识易于求得旋转角度可用如下公式求得
随机抽取几组实验数据如表6所示:
表6 部分实验数据
联系控制舵机的原理[7],设置一个50 Hz即20 μs的脉冲宽度调制(Pulse Width Modulation, PWM)信号,舵机转动角度和在一个信号周期内高电平持续时间有关,将c通过公式(c·11)+500转化为500~480的脉宽值,则每转动1°,对应的高电平是11 μs。使舵机接口保持相应时间的高电平(单位为ns)就可以驱动舵机到相应角度c。舵机控制部分的流程图及代码如图12、图13所示。
图12 舵机控制流程图
图13 舵机控代码
视觉传感器及视线跟踪设备的输出频率较高,因而系统的响应速度主要取决于舵机,由于本系统控制舵机的脉冲宽度调制信号频率为 50 Hz,为了使其能够稳定运行,使用延迟函数令舵机转动周期为200 ms,即控制摄像头一秒钟改变角度5次,显示屏显示画面随之一同改变。
经测试,在上述算法的控制下,舵机带动摄像头旋转,显示屏上的画面较好地反映了驾驶员视野盲区情况,但由于舵机转动频率上限不高,画面有一定的抖动感,这可以通过选择更好的舵机控制算法来改善,这里便不再深入探讨。
3.2.3 图像显示
由于市场常见摄像头的成像分辨率通常是固定的,并且其设定分辨率难以适配本系统所应用的长条显示屏,因而需要将具有图像处理能力的单片机与摄像头的通用串行总线(Universal Serial Bus, USB)输出口相连接,并将其传输的图像信号进行剪裁成适配长条屏幕的尺寸。实现该过程由两套方案可供选择:
方案1:使用stm32的数据中心管理接口(Data Center Manageability Interface, DCMI)的裁剪功能,对摄像头输出的像素点进行截取,不需要的像素部分不被DCMI传入内存,从硬件接口一侧丢弃。
方案2:使用基于Linux系统的树莓派卡片机进行剪裁。在Linux环境下安装mplayer多媒体工具(sudo apt-get install mplayer),可以使用内置的zoom指令指定成像窗口大小,或是直接引用gedit~ /.mplayer/config,zoom=yes指令实现全屏播放,但是该方案虽然可以在不降低图像清晰度的情况下使摄像头成像覆盖屏幕,但是会导致成像失真;也可以直接拉伸成像窗口,这样可以避免图像失真,但是会降低摄像头的成像清晰度,对摄像头的像素要求较高。
由于在方案实现时,树莓派的Linux系统使得操作更加简便,并且其更加强大性能使成像的刷新率更高,因而,推荐选取树莓派微型电脑进行图像处理。
当完成对摄像头的输出图像处理后将信号通过树莓派的高清晰度多媒体接口接口输出至驱动板实现信号格式转换,使之在长条屏幕上完成成像即可。
本文设计了一款能够智能显示驾驶员被A柱所阻挡的视野的车载智能A柱盲区显示系统,它通过视觉传感器获取驾驶员头部位置坐标,通过视线跟踪设备获取驾驶员注视点坐标,结合A柱位置和结构,利用几何关系求解出驾驶员盲区所在位置及摄像头应当旋转的角度;再结合舵机控制的原理,控制舵机旋转摄像头以调整覆盖在A柱上的显示屏的显示画面,近似地达到使A柱相对于驾驶员透明化的效果。
作为一款车载安全装置,本系统独立于车体结构之外,从显示屏到传感器的所有设备均可根据具体车型需要,设计合适的尺寸和外形,在不对车体造成任何损害的前提下,保证所有功能的正常实现。由于显示屏具有外形、尺寸的可变性,该系统几乎适用于任何具有A柱盲区问题的车型,包括但不限于私家车、公交车、工业用车等。
该系统创造性地利用二维平面中驾驶员头部位置、注视点坐标以及A柱位置,实时推算出驾驶员当前视野盲区区域,在显示屏上显示出最贴近与实际的盲区视野,达到A柱近似透明化的效果。它使用的各种传感器设备的精度和处理速度足以满足低速转弯(此时A柱盲区影响最为显著)时,驾驶员对盲区视野的实时性需求。