PanoSim是由国内一家创业公司联合吉大、北航等高校资源开发的一款智能驾驶汽车仿真软件平台。软件以智能驾驶汽车全栈仿真为开发目标,具有完整的场景模型、传感器模型和车辆模型,可用于智能驾驶算法的快速开发和验证。
PanoSim5.0是在2021年更新的新一代PanoSim仿真平台,提供了多种仿真模型和工具的集成仿真,在高逼真虚拟3D环境,高精度传感器模型,高精度车辆动力学模型,交通模型和控制系统等多方面做出更新,旨在通过高逼真虚拟场景和精确的模型来减少虚拟仿真和真实世界之间的差距。
图1 PanoSim应用简介
PanoSim5.0提供了一套应用于车辆技术开发的仿真模型和虚拟实验环境,支持高级驾驶辅助系统(ADAS)和自动驾驶系统(AD)的技术开发、测试和验证。PanoSim模型包括:车辆动力学、交通、道路以及相机和毫米波雷达等环境传感器模型。
图2 PanoSim GUI主界面
主要包含以下几个模块:
(1)PanoExp:实验主界面,用于创建和定义实验。一个实验包括:测试场景、一辆至多辆试验车、驾驶工况、控制模型和仿真设置参数。
(2)SensorBuilder:用于向被测车辆添加传感器模型,包括常见的毫米波雷达、激光雷达、超声波雷达、单目摄像头、双目摄像头、鱼眼摄像头等。用户可以通过添加传感器用于算法的开发、验证等功能,便于车辆行驶过程中感知信息的导出。
(3)WorldBuilder:用于搭建车辆行驶的交通场景,如道路、交通网络、红绿灯、交通标志等。用户可以搭建出多元化的道路,实现车辆在各种道路场景下行驶的仿真实验。
(4)TestBuilder:用于对实验文件的测试和调试。通过测试,系统可以采集仿真过程中车辆行驶时的不同数据,并对测试结果进行合理评估,便于对算法进行验证和改进。
(5)DataManger:数据管理工具,用于实验导入和导出,同时可对现有实验及数据进行分组、移动和删除。
PanoSim5.0支持与Matlab/Simulink的联合仿真,软件的基本思想是在图形用户界面(GUI)中建立试验,并使用Simulink模拟该试验。在完成车辆设置、地图设置、传感器设置之后,在PanoExp界面工具栏中点击Run按钮,系统会进行编译,编译完成后系统自动生成Simulink文件,如图3所示。
图3 编译后的Simulink模型
该模型包含驾驶员模型、算法模块、复杂车辆动力学模型和车辆数据总线四个部分,开发算法的搭建在Algorithm子系统中进行。
PanoSim的Agent部分支持外部脚本开发,其中包括.py和.pyc脚本编写的算法。基于python的开发工具(如Pycharm)可以实现与PanoSim对应的api接口开发,其实时编辑特性也能够支持算法的改进和调试。
图4 与Python开发工具的联合仿真
脚本开发同样支持基于C的开发,流行的Windows平台应用程序如Visual Studio,Visual Studio是完整的集成开发环境 (IDE),可用于开发适用于 Windows、Web 和其他平台的应用,编译和调试对应PanoSim的api接口开发即可实现基于C的关联仿真。
图5 基于C的集成开发环境
AVP(Automated Valet Parking)指自主代客泊车系统,被称为是解决用户“最后一公里自由”的L4级自动驾驶技术,是目前最有希望实现商业落地的自动驾驶技术应用场景。AVP系统的研发是为了解决日常工作、生活中停车难的痛点,也是实现自动驾驶的第一步和最后一步,所谓“第一步”就是一键召唤功能,“最后一步”就是一键泊车功能。
相比于更为成熟的泊车辅助产品,AVP除了要实现泊入车库的功能外,还需要解决从驾驶员下车点低速(小于20km/h)行驶至库位旁的问题。为了能尽可能地安全行驶到库位旁,必须提升汽车远距离感知的能力,前视摄像头成为了最优的传感器方案。
本AVP/SUMMON实例融合了360环视、超声波雷达、前视摄像头、毫米波雷达等技术,实现车辆最后一百米全自动自主规划路线、寻获并选择车位、完成自动泊车。
传感器配置方案:360度环视的4颗鱼眼摄像头、4个APA超声波雷达、8个UPA超声波雷达、1个前向摄像头等组成。
图6 多视角传感器配置示意图
系统功能开发分为泊车(AP)和召唤(Summon)两个场景,启动泊车功能后,无人驾驶的车辆全程自主寻径,可完成自动寻找车位和泊车入库;启动召车功能后,用户可提前召唤车辆自动驶出,前往指定位置等待。
图7 Panosim支持AVP开发测试图解
依托PanoSim高置信度的仿真架构、丰富逼真的工具链以及灵活的插件架构设计,为AVP/SUMMON的开发测试提供一体化解决方案。本方案具有很强的开放性与拓展性,支持定制化开发测试。
在测试环境构建方面,支持高保真的静态要素和环境要素搭建。基于引擎的灯光照明系统、图像渲染引擎、专业的物理引擎、逼真的粒子系统,设计的场景元素支持交通标志牌、红绿灯、人行横道、障碍物配置,车道线配置及车道材质配置,天气系统相关参数配置。
丰富且逼真的传感器模型和高置信度车辆动力学模型为实现AVP/Summon的车端开发测试奠定了基础。传感模型,支持多种传感器的仿真建模,可以反映光照、天气、环境、建筑遮挡、坡度等因素等对传感器数据的影响,满足目标级及物理级仿真需求,使测试验证更精准。基于面向系统及总成特性的车辆动力学建模方法,保证了较高的动态模拟仿真精度和高实时性的车辆动力学模型,具有精确复杂、高效简单通用等特点,支持多种车辆模型的开发测试。
典型交通模型和自动化测试评价系统为系统的开发测试提供高效便捷的闭环工具。基于机理和数据驱动的方式,构建干扰交通模型、正常交通流模型、异常交通流模型、中国驾驶特色交通流模型,为实例仿真测试提供连续高效的触发场景。自动化测试评价系统,可以实现自动化测试、自动化评价、自动化输出报告,可有效解决开发测试过程中遇到的测试客观性和实效性问题。
上述提到的软件工具以及XIL系列产品,使用时可以简便友好接入自己的算法与测试工具形成闭环。Panosim开发平台全方位支撑AVP/SUMMON感知、决策、规划、控制等子模块的分析、仿真、设计、部署、集成、测试等业务。
图8 PanoSim支持AVP/Summon开发测试模块
在仿真平台中构建了满足规范停车场条件的标准垂直泊车场地,共含有满足CSAE标准的车位146个。
AVP泊入任务:在AVP接管(开启自动驾驶)的点开始规划自主泊车路径,完成规划路径后主车驶向指定的规划点并开始泊入,在完成泊入任务后驻车熄火。
AVP接驾任务:主车收到召唤指令后应驶向指定地点并完成驻车。
行人安全是自动驾驶中最重要的部分,当行人位于主车行驶路径内或运动方向与车辆行驶轨迹重合,主车应主动减速、制动。
World是仿真平台中的道路模型文件,是整个实验的基础。这里仿真世界场景是标准的垂直泊车地图。
图9 自动泊车标准化道路模型文件
主车是配有Simulink模型和传感器的C级车C_Class_Hatchback,主车的传感器配有360度环视的4颗鱼眼摄像头、4个APA超声波雷达、8个UPA超声波雷达和1个前向摄像头。
图10 主车传感器配置
PanoSim内置众多交通参与物模型,Disturbance工具允许用户自定义个性化道路场景。其中交通流模型是主要的参与者仿真模型,目前软件集成了一套自研的高速环境下的交通仿真模型,支持典型高速公路下的交通环境仿真,用户可以根据需求自行选择是否配置该模型。自主泊车场景中的交通参与者包括交通流模型,已泊入的车辆,交通灯和干扰行人等。
图11 泊位配置与交通流模型设置
Simulation设置仿真时间,GlobalVariables设置所需的全局变量。
Agent为PanoSim提供了导入外部脚本文件的API接口,导入脚本文件后会在属性栏与工作区显示脚本信息。用户可以在右侧区域将外部脚本文件拖动到中间二维动画区域,以运行脚本文件。目前PanoSim支持用户利用C、Python等开发语言进行二次开发。在自主泊车场景中配置的算法包括驾驶员模型xDriver和主车Simulink泊车算法Parking_Vertical,前者主要是解决驾驶员行驶至库位旁的问题,后者实现泊入车库的功能。
图12 Agent配置
驾驶员模型是基于C开发的主车自动驾驶算法模型,旨在解决场景中自动驾驶主动安全的问题,在AVP/Summon场景中主要建立了决策,规划和横纵向控制的Simulink模型,以Simulink支持C代码生成为基础,PanoSim提供的API接口作开发。
图13 驾驶员模型开发流程
PanoSim支持关联Simulink的开发,其中algorithm部分支持搭建算法。自主泊车场景中搭建了驾驶员模型与主车传感器总线输入,输出车辆动力学控制总线的算法部分。
图15 主车泊车算法示意图
开发环境和算法搭建完毕后即可运行试验。PanoSim5.0平台安装完成后,在桌面点击PanoExp图标启动PanoSim GUI,启动后显示界面。
图16 PanoSim主界面图
试验在进行之前,鼠标左键单击PanoExp界面右上角设置按钮,进行必要的系统配置,包括:Matlab版本、实时或非实时模式、文件保存路径,Debug Level等信息。
图17 试验设置界面
设置完成后即可加载试验,鼠标左键单击Demo并将其向左拖入工作区。
图18 加载试验
3.2中已将道路模型,主车和交通参与者等配置完毕,3.3中已将算法配置完毕,接下来需要预设轨迹。双击主车,即可加载主车下一段可选行驶路径,单击终点选择一条路径并加载下一条路径,直至完成主车的全部轨迹预设。
图19 预设轨迹示意图
完成后点击Run,自动加载调节Verbose,Simulink和基于Unity的仿真动画界面,运行成功。
图20 仿真动画播放界面图
试验运行的过程中可以随时暂停和继续试验,其中1为暂停键,2为终止键,3为仿真时间。
(1)行人交互
主动安全是高级别自动驾驶场景中的重要组成部分,在场景中主车遇到鬼探头和切入等工况,能够实现紧急制动,提高行驶安全性。
(2)泊车接管
泊车前有接管和行驶至库位旁两个过程,在搜寻到库位后,主车减速并行驶至规划点。
(3)泊车过程
泊车过程从规划点泊入搜寻到的库位。
(4)召唤车辆
车辆被召唤后,从泊位驶出。
(5)前往指定位置
召唤车辆行驶至召唤者的指定位置。