看到一篇有意思的TRB论文,把重点部分翻译了一下,分享给大家,一起学习。

论文网址:
https://www.semanticscholar.org/paper/The-Use-of-Emerging-Virtual-Reality-Technology-in-%3A-Oh/359fc4faa0c38666add2333db078f8734e2fbe4e
论文题目:
The Use of Emerging Virtual Reality Technology in Road Safety Analysis : The Hook-Turn Case

模拟仿真视频:

VISSIM/vissim与 Unity 3D的联合仿真 co-simulation between Unity3D and vissim

在本节中,Hi-VRilS的开发和评价过程如图1所示。

第一步
Vissim中的微观仿真,根据Wiedemann 74汽车跟随模型进行交通仿真。
第二步
Unity3D游戏引擎展示虚拟环境并连接VR设备。由于由Unity3D负责输出,所以使用的输入源包括用于交通状况的Vissim,用于更好的现实环境的VR设备以及用于更好的驾驶体验的游戏方向盘和踏板。要将所有的输入数据导入到Unity3D中,需要一个脚本,通过生成一个预定义的Vissim网络使Unity3D和Vissim进行交互。为了系统评估,进行了驾驶试验和调查。然后,使用代理安全评价模型(SSAM)对实验结果进行分析(TTC),并通过统计t检验进行相似性比较。

图1 Hi-VRilS的开发和评价过程

基于Vissim的交通网络建模

Vissim是一种微观仿真,它可以重现真实的交通情况。因为Vissim (43)中嵌入了经过验证的驾驶行为理论,如Wiedemann 74和Wiedemann 91。其中,选择Vissim中的Wiedemann 74跟车模型是因为它适合城市交通和合流区域。因此,可以像在现实世界中驾驶汽车一样驾驶模拟汽车,比如改变车道和增加或减少速度。当驾驶人在VR环境中驾驶时会有实际的数据输出,因此可以对特定司机的驾驶技能进行分析。故利用Vissim建立路网时,应将交通背景情况纳入其中,以确保人的驾驶体验显得真实。为了作为背景交通模拟,必须使用构成Vissim的基本交通数据,包括交通量、交通信号和公共交通时刻表数据。此外,需要将真实交通方案中存在的基本交通规则纳入微观仿真中。

Unity3D虚拟环境建模

Unity3D在本研究中的作用是向驾驶员展示一个虚拟场景,因为Unity3D是创建具有高分辨率模型和各种效果的逼真虚拟场景的强大工具。三维模型分为两类:静态模型和动态模型。静态模型在模拟过程中不会发生变化,而动态模型在每个模拟步骤中都会根据开发人员定义的条件发生变化

静态模型

静态模型包括城市组件,如道路网络、建筑、停放的车辆和交通标志。

需要在Unity3D中对路网进行单独建模,因为从Vissim中提取出来的道路模型与真实的道路不太相似,例如,道路上没有车道标记,弯曲的道路上有一些无法接受的裂缝。使用RoadRunner:一个道路设计软件,可以创建一个更真实的道路网络,钩转弯框,车道标记和其他详细的标记和物体在道路上(图2-A)。
根据谷歌的卫星地图和街景地图设定建筑和交通标志模型。由于几乎不可能找到完全相同的建筑模型,所以使用了类似的建筑模型,让人感觉是真实的环境(图2-B)。此外,一辆停放的汽车被随机地放置在一些道路的停车位上,但这可以根据观察到的场景而改变。

动态模型

动态模型的创建是为了让人们觉得场景是尽可能真实的:详细的汽车,正常的固定交通信号,在这种情况下,包括Hook turn。

应用大众公司生产的Polo车辆作为Hi- VRilS的模拟驾驶车辆。这辆车具有基本的物理特性,因为它是由参与者驾驶的,并且在Vissim中,模拟车辆与其他车辆交互时被视为障碍物。就汽车内部而言,方向盘和速度仪表盘的运动类似于实际的驾驶状况。侧镜和平视显示器(HUD)也被嵌入,分别用于辅助谨慎的变道和检查当前驾驶速度(图2-D)。

交通信号模型也是定制的。未经修改的交通信号模型只是一个简单的与Vissim中的位置对齐的块。典型的hook-turn转弯的交通信号灯使用不同的3D模型。根据算法1(典型信号)和算法2(hook-turn 信号)创建了两种交通信号模型(图2-C)。在每个仿真步骤中使用脚本控制这些3D模型。为了检索交通信号信息,在每个算法,预先将Vissim中的信号头、连接和车道号分配到交通信号三维模型。
Algorithm 1

  1. Postpone executing the code until Vissim runs.
  2. Retrieve Vissim signal head data
    a. Find the ID number which is assigned to the traffic signal model
    b. Put the traffic signal model information into the traffic signal 3D model in Unity3D
  3. Check the Vissim signal status every single frame
    a. Check the status of Vissim signal
    b. Change the color of the signal head in Unity3D accordingly

算法1

  1. 推迟代码的执行直到Vissim运行。
  2. 提取Vissim的信号头数据
    a.找到分配给交通信号模型的ID号
    b.将交通信号模型信息放入Unity3D的交通信号三维模型中
    3.逐帧检查Vissim信号状态
    a.检查Vissim信号状态
    b.在Unity3D依次改变中信号头的颜色

Algorithm 2

  1. Same as algorithm 1 – steps 1 and 2
  2. Check the Vissim signal status every single frame
    a. If the status of Vissim traffic signal is red or yellow, blink the signal every second
    b. If the status of Vissim traffic signal is green, turn it off

算法2

  1. 与算法1 的步骤1和2相同
  2. 逐帧检查Vissim信号状态
    a.如果Vissim交通信号为红色或黄色,每秒钟闪烁一次
    b.如果Vissim交通信号为绿色,将其关闭

图2 Hi-VRilS的可视化

集成(整合)平台

使用c#编程软件集成Vissim和Unity3D。

Vissim接口脚本用于创建包含信号信息的Vissim网络,并实时交换交通流、信号状态等数据。通过访问Vissim XML文件,Vissim接口脚本可以执行该角色。由于参与者在Unity3D游戏引擎中驾驶汽车,所以打开预定义Vissim网络的脚本应该被嵌入到Unity3D的一个游戏对象中。本节解释如何利用脚本建立连接。

主程序(主脚本)
加载Vissim网络到Unity3D的主脚本包含了扮演不同角色的脚本。算法3描述了本平台的主脚本。

Algorithm 3

  1. Mapping 3DVehicle
  2. Create VissimNetwork
  3. Dispose Player Car
  4. Import Signal Controller
  5. Initialize Communicator
  6. Perform Communication

算法3

  1. 映射(创建)3D车辆
  2. 创建VISSIM路网
  3. 处理演员车辆
  4. 导入信号控制器
  5. 初始化沟通器
  6. 执行沟通器

1. 映射(创建)3D车辆

由于该脚本只能从Vissim XML格式文件获取数值数据,因此无法将3D模型自动映射到相应的车辆数据。将3D模型映射到每个车辆数据是必要的。因此,从Vissim提取到的数据被映射到同一目录下具有相同名称的SketchUp文件的车辆。

2. 创建VISSIM路网

当加载vissim时,脚本会加载vissim中的所有的网络组成,例如:路网,信号灯头信息。创建他们的算法过程将被解释。
为了在Unity3D中创建Vissim网络,需要枚举每个路段的所有点的x坐标和y坐标信息,其中一个点不仅是直路的起点和终点,也是弯路的中点。Vissim XML文件包含所有道路网络信息,如链接号、车道数、道路或车道宽度、点的x、y坐标。因此,算法4的作用就是从XML文件中读取这些信息,并将这些信息放入字典中,以便在Unity3D中创建路网。

Algorithm 4

  1. Create a Link_Dictionary
  2. Access the XML file and find out link position information
  3. Put data into the dictionary with enumerating data following the Vissim XML order of having the same link number.
  4. Create a road segment based on the position information.

算法4

  1. 创建一个连接字典
  2. 访问xml文件并找出连接位置的信息
  3. 按照具有相同连接号的vissim xml顺序,将数据枚举到字典中
  4. 基于位置信息创建一个道路段

同样,Vissim中每条车道上代表交通信号灯的所有信号头都记录在字典中。

与道路网络不同,交通信号每隔一秒钟就更新一次,因此信号头由外部信号控制器Vissig控制。每个被控制信号头有一个信号程序和一个信号组,其中信号控制器由信号程序组成。在这里,信号程序意味着它可以在同一个十字路口使用不同的时间计划,比如固定时间(TOD)计划。此外,信号程序由指向每个方向的信号组组成。因此,信号控制器号、信号程序号、信号组号应同时输入。

另外,为了区分信号头对象,需要提供连接号、车道号等道路信息。通过在字典中搜索连接、车道和信号头号,可以找到特定的信号头。

Algorithm 5

  1. Create a Signal_Dictionary
  2. Access the XML file and find out if signal heads have all the necessary signal information.
  3. Enumerate signal head data matching with the ID order from Vissim.

算法5

  1. 创建一个信号字典
  2. 访问xml文件并且找出信号头是否有所必要的信号信息
  3. 枚举与vissim 中ID顺序匹配的信号头数据

3. 处理演员车辆

该方法在Unity3D虚拟环境中生成一辆汽车。在每次实验中,汽车都能在同一点启动。另外,汽车的x、y坐标被追踪并存储到字典中,以便与Vissim同步。

6. 执行沟通

在Vissim中分配给信号头的包含信号组的信号控制器信息被存储在一个字典中,并被同步以操作交通信号头。通过vissim与unity3D的交互,实现导入车辆和交通信号模型的并行化。
通过运行Vissim和Unity3D仿真,不断并行化字典中的更新数据。在每一帧中,脚本从Vissim车辆和信号状态中提取数据,并相应地调整这些状态。

Algorithm 6

  1. Create a Vissim_Vehicle_Dictionary and a Unity3D_Vehicle_Dictionary
  2. Input the Vissim vehicle position information (x, y and z coordinates) and the player’s car information (x, y and z coordinates) into the dictionary
  3. Retrieve the Vissim vehicle to Unity3D and the player’s vehicle to Vissim
  4. Retrieve signal status by reading current signal status from the Signal_dictionary
  5. Adjust the status of a vehicle, signal status to Unity3D and the status of player’s vehicle toVissim

算法6

  1. 创建一个vissim的车辆字典和一个Unity3D的车辆字典
  2. 将vissim的车辆位置信息(x, y, z的坐标)和玩家车辆的信息(x, y, z的坐标)导入字典
  3. 将vissim的车辆提取出来并导入unity3D,以及把演员车辆导入vissim
  4. 从信号字典中读取当前信号状态来获得信号状态
  5. 调整车辆和信号的状态并导入unity3D,以及把演员车辆的状态导入vissim

VISSIM/vissim与Unity3D的联合仿真实例相关推荐

  1. HyperLynx(二十八)板层噪声分析和SI/PI联合仿真实例

    板层噪声分析和SI/PI联合仿真实例 1.前仿真噪声分析 2.后仿真噪声分析 3.设置和运行SI/PI联合仿真 4.执行信号过孔旁路分析 1.前仿真噪声分析 (1)从"开始"菜单中 ...

  2. 【UG NX MCD 机电一体化概念设计】UG NX MCD+PLCSIM Advanced联合仿真实例(三) 联合调试

    Step0 前言 上一篇中, 我们采用仿真序列的方式,进行了搬运逻辑的尝试,仅仅是固定一个点去放盒子,所以这篇文章将通过PLC程序控制去每一层地垒起来. Step1 MCD创建信号 信号可选择是否为运 ...

  3. Linux下VCS和Verdi的联合仿真实例教程

    首先得在Linux下配置好VCS和Verdi的环境,这个方面我就不再这里赘述了,你可以在命令行输下which vcs和which verdi看有没有信息,有信息的话就说明已经安装. 要在Linux下用 ...

  4. Vissim和Matlab联合仿真的实现方法

    Vissim和Matlab联合仿真的实现方法 (以单个十字交叉路口为例) Vissim中的交通流是基于car-following模型.本次实现以Vissim 8.0 学生版为例. 一.建立路段及路段之 ...

  5. 打怪升级之modelsim联合仿真

    为什么要联合仿真 Quartus工程联合modelsim的仿真主要任务是将Quartus中的一些IP核也配置到modelsim中去,这样写出来的东西才方便. 准备好你的工程文件 如题,tb文件和v文件 ...

  6. 永磁同步电机的矢量控制策略(十五)一一一Ansys Simplorer和Matlab/Simulink联合仿真

    12.永磁同步电机的矢量控制策略(十五) 需要注意的几点 针对一整套控制系统而言,除被控对象外是控制系统,而被控对象有些设计是无可描述又或者是无法通过数学模型进行精确表示的.比如针对新型结构的电机设计 ...

  7. PreScan交通流车流插件(ITM)- Intelligent Traffic Module Plugin与matlab(simlink)联合仿真使用实例

    PreScan交通流车流插件(ITM)- Intelligent Traffic Module Plugin与matlab(simlink)联合仿真使用实例 注:本实例为自己学习验证成果,仅供大家学习 ...

  8. Simplorer—Maxwell联合仿真注意事项(结合实例讲解,和其他的教程类的不一样)

    最近一直在做Simplorer-Maxwell联合仿真,这方面的资料实在少得可怜,只能自己总结一些经验.准备分享一下,同时也是以防以后再被类似的问题卡住. 1.关于电机外部电感.电阻的设置问题 很多人 ...

  9. MATLAB 与Modelsim之间通过Linker的联合仿真

    Link for ModelSim介绍 ** Link for ModelSim®是一个把MATLAB/Simulink和针对FPGA 和ASIC的硬件设计流程无缝连结起来的联合仿真的接口扩展模块.它 ...

最新文章

  1. Linux三剑客之grep详解
  2. 2020五大技术趋势一览!超自动化、人类增强技术、无人驾驶发展、机器视觉崛起、区块链实用化...
  3. ASP.NET MVC 过滤器(三)
  4. 程序员为什么老得快_这段 Python 代码让程序员赚 300W,公司已确认!网友:神操作!...
  5. 怎么把4399小游戏的代码_25行代码带你爬取4399小游戏数据,看下童年的游戏是否还在...
  6. 大学生动漫网页设计模板 机动战士高达静态网页制作成品下载 HTML漫画网页作业带JS轮播图
  7. Spring Cloud Config统一管理微服务配置
  8. 爬虫python能做什么-Python除了爬虫,还能干啥?
  9. [Visual Studio] VS2012调试时很慢的解决方案
  10. [浪风分享]推荐一些不错的计算机书籍
  11. FL Studio混合器之效果器插槽部分讲解
  12. CR-Fill: Generative Image Inpainting with Auxiliary Contexutal Reconstruction
  13. 小米将在武汉建1万人研发中心
  14. yum install clickhouse* 的一堆报错
  15. 从零到一搭建一个属于自己的博客系统(弌)
  16. linux、FTP中查看隐藏文件夹(.pm2等是隐藏的)
  17. $oracle什么意思,oracle惯用缩写的含义
  18. xShow@Home v5.1.20120908 发布
  19. 【模拟面试-10年工作】项目多一定是优势吗?
  20. vue 获取公网IP和地理位置

热门文章

  1. 别克gl8服务器返回数据为空,别克GL8商务车EV AP系统故障分析
  2. tmall.item.hscode.audit.results.query( 商品hscode信息审核状态查询接口 )
  3. 基于Vue的在线购物系统的设计与实现(论文+源码)_kaic
  4. 希捷 sshd 微型计算机,7mm混合换装再战 希捷第三代SSHD首测
  5. Android 原生设置收到消息后亮屏(framework层修改)
  6. 乐视TV2015校园招聘A第二个大的发行量(of中国Academy科学大学站)
  7. 计算机课例研讨记录,课例研讨情况记录.doc
  8. Python顺序结构程序设计【educoder】
  9. MySQL的STR_TO_DATE函数和DATE_FORMAT函数
  10. python转exe模块安装(py2exe/Pyinstaller/cx_freeze)