这是孙工自动驾驶的第17篇原创。
“ 本文先通过与实车测试的对比引出软件在环测试的内容,然后分别介绍软件在环测试的不同模块,最后介绍通过集成开发搭建完整测试环境的思路。可能有疏漏,供大家批评。”
注:《MIL、SIL、PIL和HIL是个啥》中描述了各种XIL手段,但是本文采用相对粗糙的分类方法,认为被测对象为算法软件而不是控制器硬件的测试都为软件在环测试。
01
概述
(1)实车测试的组成
自动驾驶车辆在实际道路进行测试,包含自动驾驶车辆、道路环境和交通参与者等要素。
(2)软件在环测试的组成
软件在环测试的被测对象为自动驾驶算法(也就是“软件”),需要在仿真环境下模拟实车测试的各项要素,使算法能够闭环运行(也就是“在环”)。
具体架构可以用下图描述:仿真软件模拟各项测试要素,通过中间件与算法交互,为算法提供运行环境;自动化测试、评价和管理模块实现测试自动化;场景库中包含进行测试的各项场景,充分覆盖实车运行的工况。
(3)常见仿真测试软件
大体上常见的仿真软件可以分为三类:商用软件、开源软件和自研软件。据我观察,主机厂背景倾向商用软件,互联网背景倾向自研软件。
02
车辆与驾驶员模型
(1)车辆与驾驶员模型的作用
车辆模型根据驾驶员模型/算法的控制和道路情况,计算车辆动态信息,并把相关信息输出给自动驾驶算法。
驾驶员模型有两个功能:①在自动驾驶算法 功能不启动时,控制本车按照一定轨迹/速度/行为行驶;②控制交通车辆按照预定轨迹/速度/行为行驶。
(2)车辆模型
根据模型精度的不同,可以将车辆模型(不严格)的分为两种:运动学模型和动力学模型。
运动学模型:仅考虑几何因素,计算车辆的运动状态。可能误差较大,但是计算速度快。
动力学模型:考虑力和质量等因素,计算车辆的运动状态。又可分为两种:①系统级,将系统(如悬架、制动)作为计算单元,采用特性曲线描述系统或关键零件特性,典型软件如CarSim;②将零件(如弹簧、衬套)作为计算单元,采用详细参数,计算系统特性,典型软件如ADAMS和Simpack。
由于自动驾驶算法测试,不特别关注零件级的响应,更关注系统级或整车级的响应,一般会选择系统级的动力学模型,有的时候甚至会使用运动学模型描述交通车辆。
下图是CarSim软件界面:
(3)驾驶员模型
驾驶员模型向车辆模型输出加速/制动踏板、方向盘等控制命令,实现加速、减速、换道、跟车等行为。为更好的模拟交通车辆的行为,还可设置多种类型,如普通型、激进型、保守型,并对具体的参数(如目标车速、切换踏板的间隔、最大加速度/减速度、跟车距离)进行设置。
下图分别是CarMaker软件和VTD软件中的驾驶员参数设置界面:
03
传感器模型
(1)传感器模型的作用和类型
传感器模型的作用是模拟各种传感器,探测仿真环境中的目标信息,并输出给自动驾驶算法。根据模拟的内容的不同,可分为理想模型和详细模型。
理想模型:不考虑实际传感器类型或物理原理,一般作为规划模块的输入或者感知结果的真值信息。从而支持规划控制算法的仿真测试。
详细模型:考虑实际传感器类型和物理原理,可作为感知模块的输入。从而支持包含感知模块的完整算法的测试。
(2)各种传感器仿真模型示例
理想模型一般有物体传感器、交通标志传感器、车道线传感器、道路传感器、碰撞传感器等,就如它们的名称所示,可以探测仿真场景中不同类型元素的信息,发送给自动驾驶算法使用。
下图是CarMaker软件中一些传感器的示例:
详细传感器可根据实际不同传感器类型划分,如:
--激光雷达,可配置不同个数和安装位置,并设置不同激光线数、点云形态、FOV等,发送周围环境和交通参与者的点云信息;
--毫米波雷达,可配置不同个数和安装位置,设置探测距离/速度、角度、探测精度、目标RCS、FOV等,发送探测到目标物的目标列表;
--摄像头,可配置不同个数和安装位置,设置摄像头雷达的FOV、畸变、色差等,发送图片/视频信息。
下图是VTD软件中激光雷达和摄像头的示例:
关键词:自动驾驶, 虚拟仿真测试,simulation,virtual test,mil,sil,hi