文章翻自《Advanced Traffic Simulation Framework for Networked Driving Simulators》,其对我们构建交通流仿真模型具有很强的指导作用。
本文提出了一种面向网络化驾驶模拟器环境的交通仿真框架的概念和结构。
研究工作
学术界相关工作
1. Espie and Auberlet(2007)中提出了交通仿真的符号视觉模型。该模型允许每辆交通车辆观察其周围环境的各种要素,如其他交通车辆、路标、车道标志等。因此,每个交通对象都可以根据交通状况以及感知到的道路环境来调整自己的行为。
2. Bonakdarian等人(1998)提出了一种使用分层并发状态机(HCSM)的方法。该模型允许每辆交通车辆检查情况,从而在不同的决策之间自动切换,如车道跟踪或换道、目标跟踪、交通避碰、静态目标避碰等。
3. (Wright et al.(2002))提出了一种利用模糊逻辑方法进行交通仿真的模型。通过引入一定程度的不确定性,模拟了典型人类驾驶员的行为。
4. 为了减少计算量,在(Olstam(2003))中引入了在指定候选区域内仿真交通车辆的概念。
5. Olstam (2005a)对过往交通模拟方法进行了一个比较全面的综述。
产业界相关工作
6. 来自DLR的SUMO是一个开放和灵活的套件,用于模拟包括道路车辆和行人在内的交通系统(Behrisch et al.(2011))。
7. 来自dSPACE的ASM是一个由Simulink模型组成的框架(Amelunxen(2015))。该模型模拟了一辆试验车和多达15辆独立交通车辆,可用于交互式驾驶仿真。
8. IPG Automotive的IPGTraffic为驾驶模拟器提供模型来表示交通车辆之间的交互作用(Miquet et al.(2010))。可以创建无限数量的交通对象,并可以为每个交通对象分别分配操作。
9. 一些商业解决方案在驾驶模拟器车辆周围定义了一个模拟区域,在那里生成交通对象。VIRES Simulation Technology的v-TRAFFIC是一个交通场景仿真引擎,可以与驾驶模拟器一起模拟周围的交通对象(Neumann-Cosel et al., 2009)。基本上,可以创建的交通对象的数量没有限制。此外,v-TRAFFIC利用模拟区域/窗口概念来减少计算量。
10. 大多数商业解决方案的一个问题是,它们模拟整个地理区域。对于较宽的区域或较长的道路,许多交通车辆都必须进行仿真,尤其是在进行长时间驾驶模拟器实验时。这对算力的要求太高了。
交通流仿真框架总览
与传统交通流仿真的区别在于,该框架中车辆对象中其中一辆或多辆是由人控制的,也就是说,交通车辆不仅要对彼此做出反应,还的对人工车辆做出反应。
交通仿真框架接收每个驾驶模拟器的位置、方向和速度信息,输出仿真交通车辆的位置和方向。这些工作由模拟管理器处理,由它来管理交通参与者之间的数据转发和同步。交通仿真框架的输出也被转发到相关的驾驶模拟器。
仿真框架功能单元和数据接口
整个仿真框架使用matlab/simulink开发,以下介绍了各个子模块输出,以及它们的关系.
初始化模块
初始化功能表示用户和交通仿真框架之间的接口。框架用户可以在仿真会话开始和仿真运行时设置一些参数,如驾驶员的视线距离、交通密度等级等。下图显示了交通初始化功能及其输出。
动态窗口生成模块
为了减少运算成本,该框架不是模拟整个地理区域,而是开发了模型和方法来仅在模拟车辆的最近邻近区域生成交通车(Olstam(2005b))。在本工作中,我们考虑了一个多驱动模拟器的环境,交通车辆只会在选定的模拟车辆的邻近范围内进行模拟,即目标模拟器车辆。该邻域以目标模拟器车辆为中心,其运动速度相同。它被称为仿真窗口。为了避免交通车辆的突然出现和消失,仿真窗口的设计要求至少与目标仿真车辆前后的视线距离一样长。
一般来说,道路设计中的视线距离被定义为驾驶员可以看到的道路长度(Hang et al.(2008))。与现实生活中的情况一样,三维环境中的道路几何形状是影响仿真驾驶员视程可用性的因素之一。为了简单起见,我们选择了一条没有十字路口和坡道的道路;这是一条在每个方向上都有两条车道的直线。动态窗口生成功能接收所有参与模拟器车辆的位置,一个指示目标模拟器车辆的信号,以及设定的视距。后两个信号从流量初始化函数接收。该功能不仅为目标模拟器车辆定义了邻域,而且还为每个参与模拟器车辆定义了邻域。在这种情况下,邻近区域称为移动窗口,下图为动态窗口生成函数的主要输入/输出信号。
交通车辆只在仿真车辆所在的仿真窗口生成。考虑到不能使司机经历不切实际的交通行为。将目标仿真车与其他参与仿真车之间的距离与设定的视距进行连续比较。当仿真车的移动窗口开始与目标仿真车的仿真窗口重叠时,将目标仿真车的仿真窗口调整为将两辆仿真车包围起来,从而将两辆仿真车在所谓的整体仿真窗口内进行仿真。
但是,如果模拟器车辆驶离目标模拟器车辆,则会重置整个仿真窗口。在这种情况下,整个仿真窗口将与目标模拟器车辆的仿真窗口完全相同。也就是说,在只考虑目标模拟器车辆的情况下生成交通车辆。虽然只考虑了一个目标模拟器驾驶员进行交通仿真,但仿真窗口的动态调整使其他模拟器驾驶员都能体验到真实流畅的交通行为。然而,通过动态调整仿真窗口可能会出现一些关键情况,这些可能导致不切实际的交通行为,例如,交通车辆突然消失在模拟车辆附近。因此,需要一个观察者来检测。
交通观察者模块
交通观察者检测关键情况,以防止生成不真实的交通行为。下图为交通观察者功能的主要输入/输出信号。
该函数接收目标仿真车的信息,所有仿真车的运动窗口,交通车辆的位置,以及交通车辆的最大长度。该功能的主要任务是连续监测哪些交通车辆位于哪个移动窗口。针对不同的情况,将使用不同flag。
例如,考虑下图所示的情况,其中目标模拟器车辆正在加速,整个仿真窗口正在重置。如果交通车辆偶然停留在非目标模拟器车辆的移动窗口内,这些车辆不得丢弃。
如果目标模拟器车辆停止,则设置flag,表示前方不应生成任何交通车辆,除非迎面驶来的交通车辆。同样,如果目标车辆的行驶速度超过了预先定义的最高速度,则会设置相应flag,表示不应该从后面生成任何交通车辆。
在所有情况下,交通观测器的标志都被转发给车辆生成/丢弃功能(稍后讨论),以便它采取适当的行动防止不切实际的交通行为。
交通密度、速度控制模块
该功能根据交通初始化功能那个提供的相应特征来调整交通速度和/或密度(见图9)。每个交通特征定义了三个层次:低、中、高。
根据所需的速度和密度水平,该功能调整交通车辆的偏移速度和/或目标模拟器车辆前后每视距的交通车辆数量。此信息被转发到下面小节讨论的车辆生成/丢弃模块。
交通生成、丢弃模块
车辆生成/丢弃模块的目标是让交通车辆只存在于仿真窗口内。该模块接收关于仿真窗口、所需的交通特性、当前交通车辆位置和最终关键情况的信息。下图为车辆产生/丢弃模块的输入/输出信号。
一般来说,后面生成的交通车辆要比目标模拟器车辆快,而前面生成的比较慢。具体地说,生成的交通车辆的速度等于目标模拟器车辆的速度+/-设置偏移速度。为了避免不真实的交通队列,该函数观察模拟交通车辆的当前位置,使其能够合理地分布在道路车道之间。另一方面,在同一方向上行驶速度比仿真车慢或快的交通车辆最终会走出仿真窗口。同样,当迎面而来的车辆通过模拟器车辆后面的可视距离时,在仿真窗口中就不存在迎面而来的车辆。在考虑前面讨论的交通观察者的最终紧急情况标志时,交通车辆一离开仿真窗口就被丢弃。
驾驶员模块
驾驶员模型根据感知到的交通状况来控制交通车辆的行为。交通仿真有几种行为模型,如:跟车、速度适应、变道、超车、从旁经过(passing)和迎面避让(Yu et al.(2013))。在这项工作中,驾驶员模型是通过汽车跟车实现的.
跟车模型控制交通车辆相对于同一车道上前面车辆的行为(Wenga和Wu(2001))。文献中有各种各样的跟车模型,他们使用不同的逻辑,可能做出不同的假设。例如,Gazis-Herman-Rothery模型表明,后面车辆的加速度与前面车辆的速度、速度差和空间车头时距成正比(Bevrani et al.(2012))。心理-物理的跟车模型使用阈值来表示跟随车辆和前面车辆之间的最小感知速度差异(Schulze和Fliess(1997))。安全-距离模型基于如下假设:从动车辆与前面车辆保持安全距离(Luo et al.(2011))。为了简便起见,本文考虑了安全距离法。下图为采用汽车跟随行为模型的驾驶员模型的主要输入/输出信号。驾驶员模型接收所有仿真交通车辆的当前位置和速度,以及仿真车辆的当前位置和速度。将车辆之间的距离与所需的安全距离进行比较。根据距离比较,交通车辆将处于两种状态之一:自由驾驶或跟车。在自由驾驶状态下的交通车辆是不受约束的。因此,驱动程序模型转发设置的速度。对于处于下一状态的交通车辆,驾驶员模型将车速调整为与前一辆车相等,以保持安全距离。
交通模块
交通车辆模型的研究主要有两种方法:宏观模型和微观模型。宏观模型从总体或平均的角度处理交通,它们需要相对简单的计算,然而,交通车辆的特性不能单独控制(Nakrachi和Popescu(2010))。相反,微观模型考虑单个车辆的行为。然而,每个模拟车辆都需要一个单独的模型(Jaworski et al.(2012))。这增加了计算工作量,特别是在需要大量车辆的情况下。
本文选择了微观模型。一方面,由于只在有限的区域内进行交通模拟,所以只需要少量的车辆就可以达到合理的交通密度。一方面,人类驾驶员也参与到了仿真中。因此,有必要根据仿真车的位置和速度对每辆交通车辆进行单独的控制。用一个简单的一阶滞后因子和PI、PID控制器对每辆交通车辆进行建模。该模型基本上可以根据所需的车辆数量和可用的计算能力任意复制。
如果驾驶员模型没有检测到前面的车辆,则交通车辆模型接收设置的速度,并激活PIcontroller来保持该速度。
如果前面的车辆被驾驶员模型检测到,则交通车辆模型接收被检测车辆的当前位置,并激活附加的pid控制器以保持安全距离。在这两种情况下,交通车辆模型都类似于一个典型的延迟速度行为,该行为被集成在一起来推断交通车辆的位置。通过适当的模型和控制器参数化,实现了流量控制。