A basic OPENSCENARIO player
所以,在接下来一段时间,我们会将重心往这边偏一偏。
今天让我们先看看esmini,一个OpenScenaio解析器。
esmini是一个非常有价值的项目,以前我们花了很大篇幅介绍CARLA,它提供的丰富功能能满足绝大部分仿真需求。相比于CARLA,聚焦于场景设置以及解析这个关键功能的esmini则是小而精致的类型。另外,esmini非常重视自身的易集成性,在开发自己公司的仿真器时,能派上很大用场。
esmini作为一个研究项目的成果,对学生党而言,也是一个非常优秀的自动驾驶仿真项目。它的README写的真诚而详细,作为教学项目非常合适。
esmini背景
esmini的全程是Environment Simulator Minimalistic。项目的目的是探索并熟悉新兴的OpenSCENARIO数据格式。该项目重视所开发的工具的易集成性和可移植性。当前项目成果能够整合到C ++应用程序、Unity3D(C#)以及Simulink等其他框架中。
需要专门提出来的是,这个项目并非主要用于生产用途。另外由于旨在回答与项目有关的研究问题,因此项目代码在清晰度,结构,注释,错误处理和编码准则方面不能保证质量。另外受限于项目需求和研究范围定义,esmini并未支持所有场景元素。
即使如此,esmini的代码作为项目的公开结果依然被原样发布。对有志于构建类似工具,以及习惯于OpenSCENARIO格式的人,esmini可以提供一些指导和灵感。
esmini组成
• esmini包含以下主要库:
• RoadManager(esminiRMLib):提供以OpenDRIVE格式描述的道路网络接口库。
• ScenarioEngine(esminiLib):提供viewer和与以OpenSCENARIO格式描述的交通场景交互的主库。该库包括RoadManager。
• esmini还提供了一些可以原样使用或为定制解决方案提供灵感的应用模块:
• esmini :一个静态链接到esmini模块的场景播放器程序。
• esmini-dyn :一个使用esminiLib播放OpenSCENARIO文件的mini示例。
• odrplot :能用于从OpenDRIVE产生数据文件,并使用Python绘制路网。
• odrviewer :使用虚拟交通可视化OpenDRIVE道路网络。
• replayer :重播以前执行过的场景。
• osiecever :一个通过UDP从esmini接收OSI消息的简单应用程序。请注意:从版本1.5开始,esmini仅支持OpenSCENARIO v1.0。所有demo场景均已从0.9.1更新到1.0。ASAM提供了一种转换方案。可以与自动迁移XML文件的工具一起使用
esmini使用
在自定义应用程序中集成esmini的最简单方法是链接所有包含的共享库ScenarioEngineDLL。在win上,esmini提供了esminilib.dll; 针对Linux平台提供了libesminiLib.so,为Mac系统提供了libesminiLib.dylib。另外esmini还提供了python接口库。
esmini的部分特性
OSI(open simulation interface)支持
除了用于获取有关正在进行的仿真的信息(例如 道路宽度和道路使用者位置)的内部API外,esmini还会收集其他信息并存储到OSI真值结构中。该结构可以存储在OSI trace文件中,并通过UDP检索和/或通过API直接检索(请参阅esminiLib.hpp)。
Unity支持
esmini共享库在Unity中也可以正常工作。本项目也提供了一个包括如下元素的非常详尽的例子:
• 通用场景播放器脚本
• 一些示例场景(OpenSCENARIO + OpenDRIVE),包括3D模型
• 适用于所有平台的插件
• 将玩家脚本连接到游戏对象的场景
esmini控制器
esmini带有一些控制器(在此场景中控制单个实体的方式):
• DefaultController :完全按照OpenSCENARIO文件中的指定执行操作。默认情况下分配给实体。
• InteractiveController :通过键盘箭头键将控制权移交给用户
• FollowGhost :提前几秒钟执行事件,实体将遵循其轨迹。
• ExternalController :使用外部程序控制的实体。
• SumoController :一种在场景中集成SUMO控制的车辆的方法。
其他相关工作
这里提及的项目不隶属于esmini,但都非常有用,近期就会介绍。
pyoscx是一个基于Python的场景创建框架。可以用高级脚本格式编写场景,并自动生成OpenSCENARIO 1.0 XML。
pyodrx是一个基于Python的道路网络创建框架。这个想法用高级脚本格式编写道路网络,并自动生成OpenDRIVE1.4 XML。
pyoscx / scenariogeneratio将pyoscx和pyodrx结合在一起,提供了一个参数化接口,并生成链接的OpenSCENARIO和OpenDRIVE文件来运行多个仿真,
OSC-ALK-scenarios是用于测试自动场景的集合。“宝马承担了根据ALKS法规使用OpenSCENARIO和OpenDRIVE实施测试方案的任务,从而产生了可通过标准兼容模拟器执行的XML文件包。”
esmini-visualizer是一种自动生成可视化场景视频的工具。
OpenScenarioEditor。Infotiv AB在VALU3S项目下开发了一个简单的ASAM OpenSCENARIO编辑器。
RcontrolStation scenario editor。OpenSCENARIO编辑器的另一个胚胎,它是自动驾驶模型车辆平台(SDVP)项目的一部分。
esmini-pybind11是为内部esmini API(不仅是共享库esminiLib和esminiRMLib)建立Python包装器的一项持续工作。
esmini工作原理
最后,再简单提一下esmini工作原理。以下是其主要代码模块的简要介绍。
RoadManager
实现了不完整的OpenDRIVE数据模型和接口。目标是为esmini提供所需和最有用的功能。功能在不断开发中。
Scenario Engine
它解析OpenSCENARIO文件,创建实体,触发器和动作的数据模型。最后,步进场景,评估触发器并相应地执行操作。
它还包括ScenarioGateway。该模块的目的是创建一个管理真值的中央管理器,以允许异步报告实体状态。主要的用例是一个外部模拟器,该模拟器通过
UDP向esmini报告自车(或被测车辆/系统)的状态。单独的接收器线程可以随时向网关报告最新值。有关示例,请参阅server module hpp / cpp。进一步的想法是使用每个报告状态的时间戳,以允许对位置和旋转的推断,以便及时地同步状态,例如,在渲染下一幅图像或为雷达模型提供数据时。
ScenarioEngine还负责以各种方式报告OSI真值:通过API函数来获取OSI结构;保存到OSI trace 文件 ;通过IP / UDP将OSI数据发送到外部主机。
另一个功能是理想的传感器,它由放置在实体上任意位置的视锥台定义。它将检测视锥内部的任何其他实体。请注意当前的限制,即仅考虑实体参考点,因此实体可能部分位于视锥内部,但仍未被检测到。
Viewerbase
提供基本的3D查看器预览方案。它基于OpenSceneGraph开源图形库构建。这是基于稳定性,性能和可移植性而不是flashiness的考虑,这符合esmini的目的。
简而言之,该模块提供以下功能:
道路网络和周围环境的可选3D视觉表征。直接支持.osgb(OpenSceneGraph二进制)文件格式。使用osgconv工具进行转换可以间接支持许多文件格式(注意:esmini中不包括)。
场景实体的3D视觉表征。使用提供的3D模型或esmini将创建替代的虚拟模型,例如根据指定尺寸的3D边界框。
道路特征可视化。例如。OpenDRIVE的几何形状,车道和道路标记。这些特征以非常简单的方式由点和线表示。因此,它不能替代3D模型的值,但是至少在3D模型不可用时,它可以提供一些指导。这对于调试OpenDRIVE道路网络定义中的问题也很有用。
键盘输入。First OSG提供了一组关键的快捷方式来控制视觉功能,例如启用/禁用纹理或线框/阴影模式。然后,esmini添加了一组快捷方式来控制各种功能,例如切换道路特征可视化或更改摄影机行。可以在docs / readme.txt中找到键盘快捷键的完整列表。键盘输入也被路由到控制器,这对于交互式驾驶模式很有用。
PlayerBas
该模块将ScenarioEngine与Viewer结合在一起,还提供了高级API,用于在自定义播放器应用程序中初始化,步进和控制场景。
Commonmini
在模块和应用程序之间共享的便捷功能的集合。例如:参数解析器、计时器、线程和互斥、数学运算以及logger等。
How the module interacte
在较高级别上,步进播放器时的事件顺序为:
要了解esmini的内部使用和开发目的,让我们放大一个层次:
-
汽车测试网V课堂
-
微信公众号
-
汽车测试网手机站
编辑推荐
最新资讯
-
电动汽车ECU开发新助力!IS8000高效波形分
2024-11-06 12:00
-
HBK大中华区校准实验室介绍
2024-11-06 11:59
-
HBK Assured Contract | 延长你的HBK硬件产
2024-11-06 11:53
-
越南机动车准入发布新规,将管控新能源&智
2024-11-06 11:48
-
L2级智能驾驶车辆针对提醒驾驶员到功能恢复
2024-11-06 11:47