# HIL硬件在环测试 ## 1. SimOne 摄像头在环黑箱检测评价系统 为满足车载摄像头选型,视觉算法优化等测试需求中,需要将摄像头置于在环测试当中,并对**视觉算法或摄像头与算法结合体的工作效率与准确度进行定量分析**的这类需求,我们研发了这套摄像头在环黑箱检测评价系统。 该系统基于 SimOne 所提供的强大仿真驾驶场景,旨在为各类车载摄像头及对应的识别算法,提供包括**硬件在环检测手段,量化评价手段,对比优化手段**等等助力。 ### 1.1 产品软硬件架构 本产品的软硬件架构简明示意图如下所示: ![](images/18_HIL_Hardware_in_Loop_Test/image1.png) 黑箱内,待测摄像头(下图左下角)的视场将被调整为刚好覆盖黑箱内安装的专业显示屏(显示屏有效长宽比根据摄像头横向,纵向视场角确定)。同时,在专业显示屏内播放的 SimOne 摄像头节点画面的横向,纵向视场角也会设置为与待测摄像头一致,从而确保摄像头拍摄画面与仿真场景内理论仿真摄像头拍摄画面的一致性。 ![](images/18_HIL_Hardware_in_Loop_Test/image2.png) 黑箱内显示屏实际受一台 SimOne 仿真服务器控制,主要负责运行 SimOne 仿真驾驶场景。 ```{admonition} 注意 :class: tip 该 SimOne 仿真服务器将会在测试时发送实时测试数据(包括每一帧画面的目标真值(GroundTruth))给测试计算机(模拟车载控制单元 ECU),由测试计算机内的感知算法评价系统实时记录。 ``` ```{admonition} 注意 :class: tip 下图左侧即为 SimOne 实时仿真场景,而右侧则是模拟车载摄像头及视觉算法的工作画面(此处以开源算法 YOLOV4 为例)。 ``` ![](images/18_HIL_Hardware_in_Loop_Test/image3.png) 测试过程中,被测摄像头拍摄画面经由被测视觉感知算法取得的感知结果,也会被感知算法评价系统实时记录,在完成一次测试过程后,可通过算法评价系统对两份对应的记录结果(感知结果与仿真真值)进行对比评价,并可视化各个指标的评价结果。 ![](images/18_HIL_Hardware_in_Loop_Test/image4.png) ![](images/18_HIL_Hardware_in_Loop_Test/image5.png) 感知结果与仿真真值的记录文件为 json 文件,具体的内容与格式将在本文后的附录部分给出详细介绍。 具体的使用过程又分为**硬件准备**与**软件操作**两个部分。 ### 1.2 硬件准备阶段 1. 测试开始前,需要先将**测试用摄像头**与**对应接线**连接,并安装固定在**三轴校准支架**上。 ![](images/18_HIL_Hardware_in_Loop_Test/image6.png) 2. 使用 **CameraHil** **上位机**与我们准备的**摄像头图像采集工具** Camera\_Calibrator 来将测试摄像头的位置调整至对准专业屏幕的中心,同时确保摄像头光轴垂直于箱内屏幕。 ![](images/18_HIL_Hardware_in_Loop_Test/image7.png) ![](images/18_HIL_Hardware_in_Loop_Test/image8.png) ![](images/18_HIL_Hardware_in_Loop_Test/image9.png) 3. 为确保相机位置姿态准确,我们需要进行一个“瞄准”的过程:即,把上图左图片全屏显示在 SimOne 仿真服务器的屏幕上,同时 Camera\_Calibrator 将实时获取到的摄像头拍摄画面叠加上下图左所示的校准用准心进行显示(如下图)。 4. 在 SimOne 服务器上操作 **CameraHil** **三轴传动控制器** 控制相机位置,待准心图案与四角对准图案均重合后(如下图),即完成了相机位置的校准,可以开始下一步测试评价了。 ![](images/18_HIL_Hardware_in_Loop_Test/image10.png) ### 1.3 软件使用流程 1. 打开**测试评价软件**,其界面如下所示,左侧为信息提示栏以及功能实现按钮,右侧的图表区域用于显示测试评价的统计结果。 ![](images/18_HIL_Hardware_in_Loop_Test/image11.png) 2. 测试评价软件运行时会**尝试连接 windows 系统下的** **SimOne** **案例**,如*连接未能建立、SimOne 未运行、或案例未运行*,则左侧信息栏中会提示 *SimOne 未连接*。 ```{admonition} 注意 :class: tip 两台计算机通信正常且开启待测案例后,同一信息栏中的提示信息会变更为 *SimOne 已连接* 。 ``` 此时,按下 **识别算法** 按钮,会进入由深度学习算法实现的交通识别模式。本软件还支持在交通识别模式下进行识别结果的记录与评价。 ![](images/18_HIL_Hardware_in_Loop_Test/image12.png) 3. 在交通识别模式下,我们可以通过 **开始评价** 、**结束评价** 按钮来控制进行一段案例的检测结果的记录,以及相同时间段内的目标真值(Groundtruth)的记录,记录结果会在同文件夹下的 Json 文件夹内。 ![](images/18_HIL_Hardware_in_Loop_Test/image13.png) 4. 在点击 **结束评价** 后,即可通过 **评价结果** 按钮,将最近一次记录的识别结果与真值结果进行时间轴匹配并进行识别准确度以及漏检率的评价,并将评价结果在右侧的 **基本数据** 选项卡中的表格和图表内显示: ![](images/18_HIL_Hardware_in_Loop_Test/image14.png) 5. 上述指标在整个测试过程中随时间变化的趋势也将被记录,并显示在 **检测率趋势** 选项卡的图表中: ![](images/18_HIL_Hardware_in_Loop_Test/image15.png) ### 1.4 附录 #### 1.4.1 附 1:视频注入评价软件与使用流程 视频注入版的评价软件界面与摄像头在环评价的界面基本一致: ![](images/18_HIL_Hardware_in_Loop_Test/image16.png) ![](images/18_HIL_Hardware_in_Loop_Test/image17.png) 下图所示为一小段示例视频的检测评价结果。 ![](images/18_HIL_Hardware_in_Loop_Test/image18.png) ![](images/18_HIL_Hardware_in_Loop_Test/image19.png) #### 1.4.2 附 2:Json 文件记录格式 ```{admonition} 注意 :class: tip 为方便接入其他识别算法,现将测试过程中生成的用于评价的识别结果文件格式内容进行公布说明。 ``` 1. 每次点击 **开始评价** 与 **结束评价** 之间时间段内接收到的摄像头识别结果,会被记录在软件所在目录中的 Json 文件夹中,以当次点击 **开始评价** 按钮的时刻的时间戳,进行如 *DetectionLog\_begin2019-10-31-10-57-06.json* 的命名,其内容会以 “detections” 为开头,每帧记录时间戳 “timestamps”,当前帧的所有 “bboxes”,每个 “bboxes” 又会记录每个识别到物体的类型, bbox 坐标与 confidency 置信度,如下左图所示。 **摄像头识别结果** ![](images/18_HIL_Hardware_in_Loop_Test/image20.png) **仿真场景真值信息** ![](images/18_HIL_Hardware_in_Loop_Test/image21.png) 2. 同一时间段内来自 SimOne 服务器的仿真场景内的真值信息 GroundTruth 也会被记录于相同命名规则的 json 文件中(与前述记录识别结果的 json 对应的 json 即被命名为 *GroundTruthLog\_begin2019-10-31-10-57-06.json* ),其中内容记录方式也是一致的,如上右图所示。 ```{admonition} 注意 :class: tip 由于仿真场景的运行帧率与摄像头帧率和识别算法处理**帧率会有差异**,因此两份对应的 json 文件中记录的**结果帧数也基本可以肯定是不相等的**。 评价软件会在评价过程中**根据时间戳对识别结果和目标真值(Groundtruth)信息进行匹配,从而完成评价**。 ```