
VISSIM 交通流仿真软件,自动驾驶技术的训练场
随着高阶自动驾驶面对的复杂场景增加,自动驾驶技术的开发也在面临着挑战,尤其是城市道路场景下自动驾驶技术,挑战在于:「搭建环境的交通流,让被测试的车辆(本车 Ego vehicle),在交通流环境(可以是多种方式的交通流)里行驶,通过设计不同的场景,来验证被测试车辆的控制算法或者验证被测试车辆硬件设备的性能。」
想要应对这个挑战,自动驾驶真实场景测试并不可少,真实场景测试一般有两个测试方案:一,真实开放道路测试;二,自动驾驶专用测试场测试。
但是以上两种方案均有其局限性,一是实施上可能受到法律法规等政策约束,二是场景的极端性不容易在真实世界里实现。
因此,除了真实场景的测试方案,大多数车企以及自动驾驶技术开发商会选择用交通流仿真软件模拟真实场景,而 PTV VISSIM 软件则是其中一款。
PTV VISSIM 软件是 PTV 集团开发的 PTV Vision 系列软件中的一款交通仿真软件工具,是一款集道路交通、公共交通、行人仿真于一体的专业软件。目前广泛应用于全球 120 多个国家的公共机构、工程顾问和研究机构以及汽车&创新技术群体,它在全世界的许可数量超过了 16500 套。
PTV VISSIM 软件拥有非常丰富的复杂交通环境模拟的经验,在高速公路,城市道路,立交交叉口,停车场,换乘枢纽出租车等候区,乘客换乘大厅,机场,公交车站等方面都有广泛的工程应用。
VISSIM 原本是为了解决交通领域里的信号、规划和组织等而诞生的交通流仿真软件,在这 40 年的时间里,VISSIM 不断积累整合各种交通方式的仿真能力,同时在二次开发、提供开放的接口技术上有非常强大的储备,而这些技术与经验正是自动驾驶所需要的。
因此,PTV 集团可以在智能汽车时代为自动驾驶算法以及硬件的安全性提供相应的技术保障。
近十年来,VISSIM 软件在全球研究自动驾驶技术的汽车厂商里得到了广泛的应用,尤其是在日本汽车企业中。近年,随着中国汽车企业、互联网企业以及出行科技公司在自动驾驶领域研究的深入,VISSIM 在自动驾驶方面的应用也在逐渐扩大。
那究竟像 VISSIM 这样的交通仿真软件,能够为自动驾驶解决什么样的问题就比较重要,要解答这个问题首先需要了解 VISSIM 的一些特点以及独特的技术方案。
自动驾驶技术的训练场
想要真正了解自动驾驶仿真技术,以下关于 VISSIM 软件的几个特点你必须了解:
一、整合多种交通方式的微观交通流仿真
在现实生活里的交通世界是复杂多样的,道路上交通参与者种类众多,有小汽车、轨道交通、公共汽车、货车、自行车、助动车、摩托车和行人这些不同的交通工具或交通方式。
VISSIM 软件里可以放在同一个工具里进行整合仿真,每个仿真步长,车和车之间,车和人之间都有相互关系。软件以微观的方法,考虑一个个单独交通参与个体之间的运行关系。把这个互动的关系以定量描述的方式提供给自动驾驶,作为符合真实世界的交通背景。图1是一个典型城市道路交叉口的仿真。
图1 VISSIM模拟一个城市交叉口的场景
二、通过跟驰模型、变道模型和横向超车行为模型来模拟车辆的驾驶行为
- 跟车行为:在真实世界里,车辆在行驶过程中,前、后车有跟车行为,在行驶中前、后两辆车之间的距离是在动态调整的,由后一辆车的司机随时修正的,这种现象由德国的 Wiedermann 教授总结出来了一个 Car following 跟驰模型,考虑驾驶员的物理和心理的特性,把跟车分为自由,逼近,跟随,刹车四种状态。
- 变道行为:如果后面的车对于前车行驶速度不满意的话,后面的车辆在了解清楚相邻车道的车辆位置和速度后,可以自己选择合适的时机变道超车,在另一条车道上按照自己期望的速度行驶,这种行为我们称之为“自由变道行为”;不同的车辆目的地是不同的,因此需要设置不同的路径,为了提前进入转弯对应的那个车道,每辆车辆要进行必要的换道行为,这种行为我们称之为“必要变道行为”。
- 横向超车行为:中国很多城市,普遍存在小汽车和自行车、助动车在同一车道超车的现象,需要在交通仿真工具里体现出来。与其他的交通流仿真软件相比,VISSIM 是目前唯一可以实现这个功能的软件。
以上提到的这些车辆的行为,VISSIM 提供了对应的 Car following 跟车模型、变道模型和横向超车行为模型,在软件里可以模拟驾驶行为。通过对应的驾驶行为编辑窗口,用户可以修改参数来输入符合当地交通驾驶状况的距离等参数。
图2 VISSIM里的驾驶行为模型介绍图
三、提供路网、控制和车辆三个核心组成部分
路网、控制和车辆是 VISSIM 软件里涉及到的 3 大核心组成部分。
对于路网,VISSIM 支持手动创建路网,支持从 PTV 系列软件中的宏观软件 PTV VISUM 和交通工程软件 PTV VISTRO 中导入路网,也支持通过 Opendrive 格式导入已有的路网。
尤其是支持 Opendrive 格式的路网的导入(对于 1.5 版本以上的格式都支持导入),对于车企用户是非常有用和高效的,此外,例如通过 Prescan、Carmaker 搭建的路网,可以读入 VISSIM 中,不需要重复创建一遍路网。
VISSIM 特有的路段和路段连接器的路网结构形式,不是它不足的地方(之前有文章这样提到),而是它有优势的地方,可以非常详尽地模拟复杂交叉口的车流转向。
如果通过其他方式导入的路网,VISSIM 会自动得把原有节点和路段的转换成路段和路段连接器的结构形式,不需要额外增加工作量。
VISSIM 不仅擅长模拟车辆的交通流,也非常擅长模拟路口的控制方式,包括限速标志、让行标志、停止标志、减速带、交叉口信号控制方案、可变信息板等。
对于车路协同的仿真,对于模拟V2X,VISSIM有很多应用案例,下图是德国卡尔斯鲁厄理工大学(KIT)进行Pre-Drive C2X项目的车车通讯的仿真结果截图。
图3德国卡尔斯鲁厄理工大学(KIT)的Pre-Drive C2X项目的结果截图
四、软件的功能性多样,开放程度好
VISSIM 的开放程度非常好,所以软件可用在多样的场景里,比如机场、停车场、交通枢纽、高速公路、货运仓库、MAAS 的上下客车站等等。
VISSIM 可以仿真城市道路上的交通,高速公路上的交通,也可以仿真停车场的静态交通运行,以及枢纽上人车之间的互动关系,因此,可以为自动驾驶仿真测试提供更加丰富全面的场景选择,不是只局限于道路驾驶的场景。
通过 COM 的接口,可以结合检测器,设置一些变化的管理规则、变化的路径指令,可以模拟基于条件改变路径或者速度等的交通场景。
图4 VISSIM多场景里的应用举例
五、提供大量随机的选择可能性,充分反映交通运行的真实性
交通运行本身包含了很多的随机性,今天这条道路上同一时段运行的车辆分布和明天这条道路上同一时段运行的车辆分布不完全相同。
为此,VISSIM 软件本身提供了大量的随机因素可以反映到软件的仿真运行里:
- 比如车辆输入的泊松分布(就是在一定的时间内,车辆进入路网有着随机性,不是统一一起进入的),
- 车辆类型在比例范围内的随机出现,
- 速度和加速度选择是从一个区间内随机选择,
- 停留时间是从一个区间内随机选择等等。
软件的仿真随机种子,就是通过选择一个随机的数字,来控制软件里种种随机数值的选取。
近年来,针对自动驾驶客户的研究需要,VISSIM 软件还为车企特别开发了在路网里随机生成一些驾驶错误的现象,错误出现的比例由用户设定,至于错误行为出现在哪条路段的哪个地方,VISSIM 可以随机生成,比如一些驾驶员误判交通标志和信号控制方案的现象、驾驶员超速的现象、行驶时偏离中心线的现象、缺乏注意力的现象。
这些驾驶错误的现象,用户可以针对不同的路段类型,设置不同的发生概率。软件读到这个概率值后,会在对应的路段类型上,根据概率值随机在路段上生成这些现象。
以上提到的这些随机的选择可能性,可以提供给用户丰富的手段,来搭建各种甚至是极端的需要测试的交通流测试环境,而这些极端的场景恰恰在真实的世界里是不能随意测试的。
图5 VISSIM里可以模拟驾驶失误的几种场景
六、车企开发的被测试车辆自动驾驶的控制算法,VISSIM 可以接入软件进行联合仿真
VISSIM 默认的使用里,车与车之间的关系通过前面提到的跟驰模型、变道模型和同车道超车模型来模拟。但在自动驾驶研究中,车企往往会提出对于车辆独特的控制算法,希望被测试的车辆(本车)是用自己的控制算法,环境中的其他车辆还是遵循默认的 VISSIM 驾驶行为模型,大家在一个交通环境里进行仿真运行。这个需求 VISSIM 是可以通过 API 模块里的“外部驾驶员接口(EDM)”来实现联合仿真的。
在每个仿真步长,被测试的车辆(可以 1 辆,可以多辆),出现在 VISSIM 的仿真环境里,但是它们不受 VISSIM 的算法控制,而是受到用户自定义的控制算法的控制。
根据用户的控制算法,被测试的车辆更新了位置、速度和加速度,把更新后的信息提供给 VISSIM。VISSIM 更新了这些被测试车辆(本车)的信息后,环境里周围的车辆会相应根据 VISSIM 软件默认提供的驾驶行为模型,更新环境车辆的位置、速度和加速度信息,VISSIM 再把环境车辆的信息,通过“外部驾驶员接口”传回用户的控制算法输入端。
VISSIM 和用户的算法同时工作,交换数据的频率是一个仿真步长,一般是 1/20 秒。在这个接口的应用里,路网的信息不是必要两边都要同步设置。该接口支持 C++ 语言编程。
下图是这个接口进行联合仿真的原理示意图。通过 EDM 接口,用户可以自己控制要测试的车辆的速度和横向位置,然后结果输入给 VISSIM,VISSIM 中对应运行的那些被测试车辆的下一步行为,包括速度和横向位置,以及颜色,用户自定义的其他属性等等。
更新好了位置后,路网上的上/下游相邻两条车道上的 N 辆车的信息也相应更新了位置、速度,VISSIM 把这些车辆的信息通过 EDM 接口回传给用户的控制算法输入端。
图6 VISSIM的外部驾驶员模型接口工作原理图
七、对于其他自动驾驶仿真软件或者驾驶模拟器,VISSIM提供实现联合仿真
自动驾驶的研究中,涉及到要测试汽车的动力学、通讯性能、传感器工作效果、车辆控制等方面,需要用到各种各样的专业的软件工具,这些软件工具,在提供交互仿真交通流能力方面,有一定的局限性。所谓术业有专攻,VISSIM凭借自己多年专业的交流流仿真经验,可以通过“驾驶模拟器接口”和多款软件进行联合仿真,为联合仿真的其他软件提供专业的交通流环境。
图7 VISSIM和其他软件的联合仿真示意图
被测试的车辆(本车)由其他的仿真软件或者驾驶模拟器来控制,每个仿真步长根据获得的位置、速度信息在 VISSIM 里以仿真步长的频率同步进行更新,环境的车辆由 VISSIM 来控制,每个步长同样根据 VISSIM 默认的驾驶行为算法来更新它们的位置、速度以及路网的相关信息,并返回给联合仿真的其他的仿真软件或者驾驶模拟器。在这一类的应用中,联合仿真的两个软件都需要有着同样一致的路网信息,这和刚才 EDM 的接口是有区别的。
在这个接口的联合仿真里,路网中的信号灯配时方案、状态,可以实时由 VISSIM 输出到联合仿真的其他软件或者驾驶模拟器里,从而可以实现基础设施的设置参与到自动驾驶仿真测试里来。对于驾驶模拟器而言,VISSIM 提供了一个虚拟的交通环境场景,在这个虚拟的场景里,驾驶模拟器控制一辆车,同时在 VISSIM 这个虚拟的场景里也同步运行着这辆车,行为和驾驶模拟器控制的完全一致。
VISSIM 的仿真步长精度可以达到 1/20 秒,如果对方的软件精度更高,VISSIM支持插值算法来更新每个步长的信息。该接口同样也支持C++语言编程。下图是该接口进行联合仿真的示意图。
图8 VISSIM的外部驾驶员模型接口工作原理图
目前 VISSIM 软件已经实现了与多款不同类型的专业仿真软件的对接。
图9 VISSIM可以对接的仿真软件举例
八、对于自动驾驶车队,VISSIM 提供了预定义的“车队”对象给客户编辑
高速公路上的自动驾驶车队,预计是落地较快的一种自动驾驶的应用场景。为此,VISSIM 在软件里新添了“车队”这个编辑对象,用户可以设置车队允许自动编队的条件阈值,以及车队允许自动解散的条件阈值,从而模拟加入车队、编队行驶、离开车队三种运行状态。
- 对于车辆加入编队,VISSIM 软件仅允许有着相同驾驶行为的车辆加入车队。
- 对于编队行驶,在仿真时候,VISSIM 定义在车队内部,所有的车辆不能换道,同时每辆车保持相同的车距,仅提供有限的加速度变化。
- 如果遇到红绿灯,车队来不及完全通过的状况下,车队会自行拆散。
- 一旦车队里的车辆准备离开车队的时候(比如在高速公路里需要进入匝道,离开高速公路的时候),在 VISSIM 的交通仿真里,该车辆会提前增加与前车和与后车的跟车距离后,自行离开车队。
图10 VISSIM中的自动驾驶车队模拟
九、行人的行走行为,VISSIM 通过社会力模型来专业进行仿真分析
行人的行走行为,不像车辆按车道来行驶的。行人是在一个面域上,单独或者形成一个小团体,根据自己的目的地,走最近的路线,或者时间上最短的路线。
如果要深入研究行人和自动驾驶车辆之间的关系,VISSIM 可以提供专门的 VISWALK 模块来做这个工作。软件的VISWALK模块是根据社会力模型 (social force model)来模拟行人的行为,支持车辆和行人进行交互作用。
图11 VISSIM中的研究行人与车辆的场景
以上详细叙述了 VISSIM 在技术上的特点。正是由于具备了这些技术上的优势,VISSIM 可以支持自动驾驶研究测试,在提供交通环境仿真领域,施展自己的强项。
VISSIM 主要提供的是 Windows 版本,提供 GUI 编辑界面。从 2021 年起, Linux 环境下运行的版本也面世了,它的名字时 VISSIM Kernel(Linux)版本。它不提供 GUI 界面,支持快速计算以及云计算,VISSIM Kernel(Linux)版本是通过 *.so 接口的形式来支持联合仿真。
对于将来高性能计算机应用和云计算的应用,VISSIM Kernel(Linux)版本是一个有用的工具。
文章转载自公众号: 焉知智能汽车
