C#,自动驾驶技术,ASAM OpenDRIVE BS 1.8.0 规范摘要与C# .NET Parser
本文介绍自动驾驶技术的标准之一《ASAM OpenDRIVE》1.8.0 版本的规范摘要,及北京联高软件开发有限公司实现的 C# 版本 xodr 文件(XML) Parser 源代码。
本文档是 ASAM e.V. 的版权财产。 在更改常规许可条款时,ASAM 允许不受限制地分发此标准。因此,ASAM 常规许可条款的 §2 (1) 替换为以下条款:“许可方授予每个人使用标准 ASAM OpenDRIVE 的基本、非排他性和无限制的许可”。
1 术语和定义
桥
桥梁在 ASAM OpenDRIVE 中建模为对象。 带有 bridge 对象的道路通向一座桥。 桥梁对道路的整个横截面有效,除非提供具有进一步限制的车道有效性记录作为子元素。
Bridge
Bridges are modeled as objects in ASAM OpenDRIVE. The road with the bridge object leads over a bridge. Bridges are valid for a road’s complete cross section unless a lane validity record with further restrictions is provided as child element.
公共连接
公共路口是 ASAM OpenDRIVE 中的默认路口类型,用于指定可行驶车道可能重叠且车辆可能交叉的区域。
Common junction
Common junctions are the default type of junction in ASAM OpenDRIVE and specify areas where drivable lanes may overlap and traffic may cross.
连接道路
连接道路是交叉路口的一部分,连接进出的道路。
Connecting road
Connecting roads are part of a junction and link the roads going in and out.
路口
十字路口是没有连接道路的路口。 它们定义了可以显示交叉流量的部分。 交通不会在道口改变道路,例如在铁路道口。
Crossing
Crossings are junctions without connecting roads. They define sections where crossing traffic can appear. Traffic does not change roads at crossings, for example, at railway crossings.
直接结
直接交叉路口旨在对可行驶车道可能重叠以进行分叉或合并,但交通不会交叉的入口和出口进行建模。
Direct junction
Direct junctions are intended to model entries and exits where drivable lanes may overlap to split or merge, but traffic does not cross.
进入
条目是道路合并到另一条道路的位置。 条目与用于加速车道的元素的 @type 属性的值不同。entry
<lane>
Entry
Entries are locations where roads merge into another road. Entries are not the same as the entry value of the @type attribute at the <lane> element which is used for the acceleration lane.
退出
出口是道路分叉成其他道路的位置。 出口与用于减速车道的元素的 @type 属性的值不同。exit
<lane>
Exit
Exits are locations where a road splits into other roads. Exits are not the same as the exit value of the @type attribute at the <lane> element which is used for the deceleration lane.
进场道路
传入道路包含通向交叉路口的车道。
Incoming road
Incoming roads contain lanes that lead into a junction.
惯性坐标系
惯性坐标系是符合 ISO 8855 的右手坐标系。
Inertial coordinate system
An inertial coordinate system is a right-handed coordinate system according to ISO 8855.
交汇点
交汇点对道路之间的交叉点进行建模。
Junction
Junctions model intersections between roads.
“交汇点”组
交汇点组指示路径分配的交汇点属于同一节点,并且通常被视为一个大交汇点,例如环形交叉路口或高速公路交汇处。
Junction group
Junction groups indicate for routing that the grouped junctions belong to the same node and are commonly seen as one big junction, for example roundabouts or highway interchanges.
车道
车道是所有道路的重要组成部分。 车道附着到道路参考线,并从内到外定义。
Lane
Lanes are an essential part of all roads. Lanes are attached to the road reference line and are defined from inside to outside.
车道偏移
车道偏移使中心车道远离道路参考线。
Lane offset
Lane offsets shift the center lane away from the road reference line.
车道截面
每当车道数量或其功能发生变化时,车道段就会将道路分成多个部分。
Lane section
A lane section splits a road into multiple parts whenever the number of lanes or their function changes.
车道类型
车道具有一种定义其功能的车道类型,例如,驾驶、骑自行车或出口。
Lane type
A lane has one lane type that defines its function, for example, driving, biking, or exit.
车道有效性
通道有效性将信号和对象限制为特定通道。
Lane validity
Lane validities restrict signals and objects to specific lanes.
车道宽度
车道宽度可沿车道段内的 t 坐标加宽或变窄车道。
Lane width
Lane widths widen or narrow lanes along the t-coordinate within lane sections.
局部坐标系
局部坐标系是符合 ISO 8855 的右手坐标系。
Local coordinate system
A local coordinate system is a right-handed coordinate system according to ISO 8855.
对象
对象通过扩展、界定或补充道路的路线来影响道路。 对象是构成环境的元素,例如建筑物、护栏、电线杆和树木。 与信号不同,对象不会直接影响流量的行为。
Object
Objects influence a road by expanding, delimiting, or supplementing its course. Objects are elements that form the environment, for example, buildings, guard rails, poles, and trees. Objects do not influence the behavior of traffic directly, unlike signals.
出境道路
在 ASAM OpenDRIVE 中,传出道路未明确定义为元素或属性。 传入道路用作传出道路。 这些道路被隐式定义为由通向它们的连接道路传出。
Outgoing road
Outgoing roads are not specifically defined as an element or attribute in ASAM OpenDRIVE. Incoming roads serve as outgoing roads. These roads are implicitly defined as outgoing by the connecting roads that lead into them.
道路
道路是 ASAM OpenDRIVE 中任何道路网络的核心元素。 每条道路沿一条道路参考线延伸。
Road
Roads are the core elements for any road network in ASAM OpenDRIVE. Each road runs along one road reference line.
道路高程
道路高程指定沿道路参考线(即 s 方向)的高程。
Road elevation
Road elevation specifies the elevation along the road reference line, that is in s direction.
道路标记
ASAM OpenDRIVE 中的道路标记被定义为车道标记、对象标记(例如停车位)或信号(例如停车线)。
Road marking
Road markings in ASAM OpenDRIVE are defined as lane markings, object markings, for example parking boxes, or signals, for example stop lines.
道路参考线
道路参考线定义道路的水平路线,由一个或多个几何图形元素组成。 每条道路都有一条道路参考线。 道路的其他属性 (例如,车道、信号和对象) 是相对于道路参考线定义的。
Road reference line
A road reference line defines the horizontal alignment of a road and consists of one or more geometry elements. Every road has one road reference line. Further properties of the road, for example, lanes, signals, and objects are defined relative to the road reference line.
道路参考线坐标系
道路参考线始终位于惯性坐标系定义的 x/y 平面内。 道路参考线坐标系沿道路参考线运行。 它是一个右手坐标系。 S 轴沿道路参考线的切线。 t 轴与 s 轴正交。 右手坐标系是通过定义与 x 轴和 y 轴正交的向上方向来完成的。
Road reference line coordinate system
The road reference line is always located within the x/y-plane defined by the inertial coordinate system. A road reference line coordinate system runs along the road reference line. It is a right-handed coordinate system. The s-axis follows the tangent of the road reference line. The t-axis is orthogonal to the s-axis. The right-handed coordinate system is completed by defining the up-direction h orthogonal to x-axis and y-axis.
S 坐标
S 坐标沿道路参考线定义,以米为单位从道路参考线起点开始测量。
s-coordinate
The s-coordinate is defined along the road reference line, measured in meters from the beginning of the road reference line.
信号
信号是交通标志、交通信号灯和用于控制和调节道路交通的特定道路标记。
Signal
Signals are traffic signs, traffic lights, and specific road markings for the control and regulation of road traffic.
信号控制器
信号控制器将信号周期(请参阅信号周期)应用于信号或信号组(请参阅信号组)。
Signal controller
A signal controller applies a signal cycle (see signal cycle) to a signal or a signal group (see signal group).
信号周期
信号周期是一个动态信号的相位(参见信号相位)的有序列表。
Signal cycle
A signal cycle is an ordered list of phases (see signal phase) for one dynamic signal.
信号依赖性
信号依存关系通过附加信号来限制或延长一个信号的有效性。 例如,仅对卡车有效的 60 公里/小时限速标志,由附加标志指定。 一个信号可能有多个依赖项。
Signal dependency
Signal dependencies limit or extend the validity of one signal by an additional signal. For example, a speed limit sign of 60 km/h that is only valid for trucks, specified by a supplementary sign. One signal may have multiple dependencies.
信号组
每个动态信号都需要恰好位于一个信号组中。
Signal group
Each dynamic signal needs to be in exactly one signal group.
信号相位
动态信号的一个阶段是语义状态(参见 信号状态)与(可能是无限的)持续时间的组合,它指定了这个语义状态处于活动状态的时间。 该术语不要与英语土木工程术语 stage 或德语术语 phase 混淆。
Signal phase
A phase of a dynamic signal is the semantic state (see signal state) in combination with a (possibly infinite) duration, which specifies how long this semantic state is active. This term is not to be confused with the English civil engineering term stage or the German term phase.
信号参考
信号引用将信号链接到另一个信号或对象。 一个信号可能有多个信号引用。 不应将信号参考术语与用于将信号连接到多条道路的元素混淆。<signalReference>
Signal reference
Signal references link a signal to another signal or object. One signal may have multiple signal references. The signal reference term should not to be confused with the <signalReference> element that is used to link a signal to multiple roads.
信号状态
动态信号的状态是信号的语义状态和可观察状态的组合。
Signal state
A state of a dynamic signal is the combination of the semantic and the observable state of a signal.
信号同步组
多个信号组(参见 信号组)应保持同步,并且其信号周期 (参见信号周期)具有相同的有限持续时间,可以但不要求映射到同步组。 此映射可用于指示每当通过 ASAM OpenSCENARIO 或其他方式设置一个信号组的相位时,该同步组中的其他信号组应设置为其信号周期中的相应位置。
Signal synchronization group
Multiple signal groups (see signal group) which should be kept synchronized and whose signal cycles (see signal cycle) have the same finite duration can, but are not required to be mapped to a synchronization group. This mapping can be used to indicate that whenever the phase of one signal group is set, by an ASAM OpenSCENARIO TrafficSignalControllerAction or otherwise, the other signal groups in that synchronization group should be set to the corresponding position in their signal cycles.
滑道
在转弯车道上,驾驶员可以在不驶入主交叉路口的情况下改变道路。
Slip lane
On a slip lane a driver can change roads without driving into the main intersection.
静态路网
由静态对象丰富且在模拟运行时不会更改的已连接道路的集合。
Static road network
Collection of connected roads enriched by static objects that do not change during runtime of a simulation.
跃程高
跃程高指定沿道路参考线的横向坡度。 超高是为横截面定义的,并且可以在道路参考线方向上变化。
Superelevation
Superelevation specifies the transverse slope along the road reference line. Superelevation is defined for a cross section and can vary in road reference line direction.
T 坐标
t 坐标定义为与道路参考线正交的横向位置。
t-coordinate
The t-coordinate is defined as the lateral position orthogonal to the road reference line.
隧道
隧道在 ASAM OpenDRIVE 中建模为对象。 带有 tunnel 对象的道路定义道路的一部分,即隧道或地下通道。
Tunnel
Tunnels are modeled as objects in ASAM OpenDRIVE. The road with the tunnel object defines the part of the road that is the tunnel or the underpass.
虚拟交汇点
虚拟路口管理不间断道路内的连接,例如,停车场的入口和出口以及人行横道。
Virtual junction
Virtual junctions manage connections within an uninterrupted road, for example, entries and exits to parking lots, and pedestrian crossings.
VMS 板
在 ASAM OpenSCENARIO 的模拟期间,可变消息板可以更改其值。
VMS board
Variable message boards can change their values during the simulation in ASAM OpenSCENARIO.
2 通用架构简介
ASAM OpenDRIVE 数据存储在扩展名为 . 压缩的 ASAM OpenDRIVE 文件的扩展名为 (compression format: )。xodr
xodrz
gzip
ASAM OpenDRIVE 文件结构符合 XML 规则;关联的架构文件在 XML 中引用。 ASAM OpenDRIVE 格式的架构文件可以从“可交付成果”部分检索。
元素被组织成多个级别。 级别大于零 (0) 的元素是前一个级别的子元素。 级别为一 (1) 的元素称为主元素。
每个元素都可以使用用户定义的数据进行扩展。 此数据存储在用户数据元素中。
ASAM OpenDRIVE 中使用的所有浮点数都是 IEEE 754 [12] 双精度浮点数。 为了确保在 XML 表示形式中准确表示浮点数,实现应使用已知的正确准确性,保留最小浮点打印算法 (例如 [13]、[14]) 或确保始终生成 17 个有效十进制数字,例如使用“%.17g”ISO C printf 修饰符。 导入实现应使用已知的正确精度保留浮点读取算法(例如 [15])。
2.1 属性
可在 ASAM OpenDRIVE 文件中使用的所有属性在 UML 模型中都进行了完全注释:
-
如果单位适用于某个属性,则这些单位根据 “单位” 部分进行说明。
-
类型:描述属性的数据类型。它可以是原始数据类型(例如 string、double、float),也可以是引用此规范中描述的对象的复杂数据类型。
-
Value:Value 确定给定属性相对于指定类型的值范围。
2.2 根元素
2.3 HEADER
3 Overview of elements
4 附加数据
ASAM OpenDRIVE 提供了包含外部数据的可能性。 此数据的处理取决于应用程序。 其他数据可以放置在 ASAM OpenDRIVE 中的任何位置。
5 坐标系简介
ASAM OpenDRIVE 使用三种类型的坐标系:
-
惯性 x/y/z 坐标系
-
道路参考线 s/t/h 坐标系
-
本地 u/v/z 坐标系
5.1 基本坐标系
5.2 地理配准
空间参考系统由欧洲石油调查组大地测量学 (EPSG:32632 WGS 84 / UTM zone 32N [16])标准化,并由描述大地基准面的参数定义。 大地基准面是相对于地球的椭球体模型的位置集合的坐标参考系统。
大地基准面由根据 PROJ 的投影字符串描述,即两个坐标系之间数据交换的格式。 此数据应标记为 CDATA,因为它可能包含干扰元素属性的 XML 语法的字符。
6 几何元素
公路路线可以有许多不同的形状。 开阔的地面上有长而直的道路,高速公路上有细长的弯道,山区有狭窄的转弯。 为了以数学上正确的方式对所有这些道路进行建模,ASAM OpenDRIVE 提供了各种几何元素:
-
直线
-
具有线性变化曲率的缓和曲线或回旋线
-
具有恒定曲率的圆弧
-
参数化三次多项式
-
三次多项式 (已弃用)
7 道路 Road
道路的一些属性是根据道路的横截面来描述的。 道路横截面是道路参考线上给定点处的道路正交视图。 引用道路横断面的特性的一个示例是 superelevation。 对道路横截面有效的元素对道路参考线上给定点处的道路整个宽度有效。
其他道路属性根据道路的平面图进行描述。 这包括车道和道路高程。 对于这些属性,使用术语 road section。 道路横断面描述道路的各个部分及其沿道路参考线的 s 坐标的特定属性。 对路段有效的特性可能对道路的整个宽度无效,而仅对特定车道有效。
这意味着可以为不同的属性(如道路类型或车道部分)创建截面。 截面由元素中的附加元素使用新的起始 s 坐标创建。 截面的长度由两个给定的 s-start 位置之间的差异隐式给出。 各节应按 s 坐标的升序存储。<road>
8 泳道 Lane
在 ASAM OpenDRIVE 中,车道是所有道路的重要组成部分。 车道附着到道路的道路参考线,并从内到外定义。 最小道路定义需要一条中央车道和一条具有定义宽度的附加车道。 每条道路的车道数量没有限制。
中间车道没有宽度,用作车道编号的参考。 中间车道本身的车道 ID 为 0。 其他车道的编号从中间车道开始:车道编号向右下降,表示负 t 方向,向左上升,表示正 t 方向。
其他车道属性
其他 lane 属性描述 lanes 的使用或其他物理属性。 车道属性是按车道部分定义的,但可能会在该部分内更改。 如果没有专门为 lane section(车道段)定义特性,则应用程序可以应用默认特性。
通道类型是按通道定义的。 车道类型定义车道的主要用途及其相应的交通规则。
可用的车道类型包括:
-
shoulder
:道路边缘的软边界。 -
border
:路边的硬边界。 它通常与可驾驶车道的高度相同。 -
driving
:不是其他类型之一的正常可驾驶道路。 -
stop
: 高速公路上的紧急停车用硬路肩 -
restricted
:汽车不应行驶的车道。车道的高度与可行驶车道相同。 通常,车道用线条分隔,并且通常还包含虚线。 -
parking
: 带停车位的车道。 -
median
:位于相反方向的行车道之间的车道。 它通常用于在大型道路上分隔城镇的交通。 -
biking
:为骑行者预留的车道。 -
walking
:行人可以行走的车道。 -
curb
:路缘石。 路缘石的高度通常与相邻的可行驶车道不同。 -
entry
:用于与主干道平行并合并到主干道的路段的车道。 它主要用于加速车道。 -
exit
:用于与主干道平行并通向主干道出口的路段的车道。 主要用于减速车道。 -
onRamp
: 从农村或城市道路通往高速公路的匝道。 -
offRamp
:从高速公路通往乡村城市道路的匝道。 -
connectingRamp
:连接两条高速公路的匝道,例如高速公路交叉口。 -
slipLane
:驾驶员在不驶入主交叉路口的情况下改变道路的车道。 -
none
:位于道路最外侧边缘的空间,没有实际内容。 它的唯一目的是让应用程序注册 ASAM OpenDRIVE 仍然存在,以防(人类)驾驶员离开道路。
Road markings
9 交汇点简介
交叉路口可以连接两条以上的道路。
存在四种类型的交汇点:
-
公共路口是具有可行驶车道的路口,这些车道可以重叠并且车辆可以穿过。
-
直接交叉路口是指交通可以改变道路但不能与其他交通交叉的交叉路口。
-
虚拟路口是主干道未中断的路口。
-
十字路口是交通无法改变道路的路口。
10 对象简介
对象是通过扩展、界定或补充道路路线来影响道路的项目。 最常见的例子是停车位、人行横道和交通障碍。
图 108 显示了使用 width、length 和 height 的角度对象的边界框,以及使用 radius 和 height 的圆形对象的边界框。
可以使用元素进一步描述复杂对象。 如果定义了元素,它将取代边界框。<outline>
<outline>
ASAM OpenDRIVE 中的对象不会更改其位置。
它们可以声明为 dynamic 或 static:
-
动态对象是静态的,但具有一个或多个可移动部分。 例如隧道或风车中的风扇。
-
静止的物体是完全静止的,没有任何可移动的部件。 例如建筑物或树木。
对象是按元素定义的。<road>
11 信号简介
信号是交通标志、交通信号灯和用于控制和调节道路交通的特定道路标记。
图 124 显示了 ASAM OpenDRIVE 的示例信号定义。
信号具有不同的功能和属性:
-
它们用于控制交通行为,例如,通过限速和转弯限制,以及提醒道路交通注意危险情况。
-
它们可以是静态的,也可以是动态的。 静态信号(例如停车标志)不会改变其含义。 动态信号(如交通信号灯或可变留言板)在仿真过程中可能会改变其含义。 它们的动态内容可以在 ASAM OpenSCENARIO 中定义。
信号应相对于特定道路放置。 使用 s 和 t 坐标描述信号相对于道路参考线的位置。 信号灯的位置应清楚地表明它们属于哪条道路或车道以及其有效性从哪里开始。 应避免对其解释的歧义。
每个国家/地区的交通规则都不同。 信号的国家/地区在 @country 属性中指定。 在 ASAM OpenDRIVE 中放置信号时,应考虑特定国家/地区的立法和交通规则。 法规变更由规则生效的年份表示。 可以在元素中的元素中定义整个 ASAM OpenDRIVE 文件的流量规则。<defaultRegulations>
<header>
信号的 @height 和 @width 属性不是必需的,但建议使用这些属性来正确表示信号。 @length 属性可用于指定信号的粗细。
不与交通绑定的道路标记不被定义为信号,而只是被定义为对象。
具有 @type 和 @subtype 属性的信号只有在与 @country 和 @countryRevision 属性组合时才是唯一的。 由于一些在 ASAM OpenDRIVE 中被视为信号的元素,例如交通信号灯,没有任何官方的 @type和@subtype表示形式,这些在 Signal reference 1.0.0 中指定。 它们可以与适当的 @type、@subtype 和 @country=“OpenDRIVE” 一起使用。
12 铁路简介
除了道路之外,ASAM OpenDRIVE 还可以对基于轨道的交通系统(即有轨电车和有轨电车)进行建模。 ASAM OpenDRIVE 不能用于复杂的铁路网络和铁路信号。 ASAM OpenDRIVE 仅描述公路和铁轨交汇处的铁路网络。
UML 模型中的元素
<railroad>
元素
在 ASAM OpenDRIVE 中,铁路由元素中的元素表示。<railroad>
<road>
UML class: t_road_railroad
XML tag: <railroad> (Multiplicity: 0..1)
应沿道路应用的所有铁路定义的容器。
可用的 railroad 元素集目前仅限于道岔的定义。 所有其他条目都应被现有元素覆盖,例如 track definition by 、 signal definition by 等。 特定于铁路的元素是在有轨电车应用程序的背景下定义的。<road>
<signal>
13 Parser
北京联高软件开发有限公式实现的 C# 版本xodr Parser。
纯 C#;
支持xml格式 *.xodr 文件的解析;
支持转为 json;
支持曲线、曲面的连接、过度、插值计算;
支持各种实体的显示;
部分源代码:
using System;
using System.Collections;
using System.Collections.Generic;namespace OpenDrive
{[Serializable()]public class t_junctionGroup : _OpenDriveElement{/// <summary>/// Unique ID within database/// </summary>public string id { get; set; }/// <summary>/// Name of the junction group. May be chosen freely./// </summary>public string name { get; set; }/// <summary>/// Type of junction group/// </summary>public string type { get; set; } = "";/// <summary>////// </summary>public List<t_junctionGroup_junctionReference>? junctionReference { get; set; } = null;public t_junctionGroup() { }}
}
using System;
using System.Collections;
using System.Collections.Generic;namespace OpenDrive
{public class t_road_objects_object{#region Attributes/// <summary>/// Indicates whether the object is dynamic or static, /// default value is “no” (static). Dynamic object cannot change its position./// </summary>public string dynamic { get; set; }/// <summary>/// Heading angle of the object relative to road direction/// </summary>public double hdg { get; set; } = 0.0;/// <summary>/// Height of the object’s bounding box./// @height is defined in the local coordinate system u/v along the z-axis/// </summary>public double height { get; set; } = 0.0;/// <summary>/// Unique ID within database/// </summary>public string id { get; set; }/// <summary>/// Length of the object’s bounding box, alternative to @radius./// @length is defined in the local coordinate system u/v along the u-axis/// </summary>public double length { get; set; } = 0.0;/// <summary>/// Name of the object. May be chosen freely./// </summary>public string name { get; set; }/// <summary>/// "+" = valid in positive s-direction/// "-" = valid in negative s-direction/// "none" = valid in both directions/// (does not affect the heading)/// </summary>public string orientation { get; set; }/// <summary>/// Alternative to @pitch and @roll. /// If true, the object is vertically perpendicular to the road surface at /// all points and @pitch and @roll are ignored. Default is false./// </summary>public bool perpToRoad { get; set; }/// <summary>/// Pitch angle relative to the x/y-plane/// </summary>public double pitch { get; set; }/// <summary>/// radius of the circular object’s bounding box, alternative to @length and @width. /// @radius is defined in the local coordinate system u/v/// </summary>public double radius { get; set; }/// <summary>/// Roll angle relative to the x/y-plane/// </summary>public double roll { get; set; }/// <summary>/// s-coordinate of object’s origin/// </summary>public double s { get; set; }/// <summary>/// Variant of a type/// </summary>public string subtype { get; set; }/// <summary>/// t-coordinate of object’s origin/// </summary>public double t { get; set; }/// <summary>/// Type of object. /// For a parking space, the <parkingSpace> element may be used additionally./// </summary>public string type { get; set; }/// <summary>/// Validity of object along s-axis (0.0 for point object)/// </summary>public double validLength { get; set; }/// <summary>/// Width of the object’s bounding box, alternative to @radius./// @width is defined in the local coordinate system u/v along the v-axis/// </summary>public double width { get; set; }/// <summary>/// z-offset of object’s origin relative to the elevation of the road reference line/// </summary>public double zOffset { get; set; }#endregion#region Elements/// <summary>////// </summary>public List<t_road_objects_object_repeat>? repeat { get; set; } = null;/// <summary>////// </summary>public t_road_objects_object_outline? outline { get; set; } = null;/// <summary>////// </summary>public t_road_objects_object_outlines? outlines { get; set; } = null;/// <summary>////// </summary>public List<t_road_objects_object_material>? material { get; set; } = null;/// <summary>////// </summary>public List<t_road_objects_object_validity>? validity { get; set; } = null;/// <summary>////// </summary>public t_road_objects_object_surface? surface { get; set; } = null;/// <summary>////// </summary>public t_road_objects_object_markings? markings { get; set; } = null;/// <summary>////// </summary>public t_road_objects_object_parkingSpace? parkingSpace { get; set; } = null;/// <summary>////// </summary>public t_road_objects_object_borders? borders { get; set; } = null;/// <summary>////// </summary>public t_road_objects_object_skeleton? skeleton { get; set; } = null;/// <summary>////// </summary>public List<t_road_objects_object_tunnel>? tunnel { get; set; } = null;/// <summary>////// </summary>public List<t_road_objects_object_bridge>? bridge { get; set; } = null;/// <summary>////// </summary>public List<t_road_objects_objectReference>? objectReference { get; set; } = null;#endregionpublic t_road_objects_object() { }}
}
联系联高软件,获取全套C#源代码。
14 参考资料
各种解释器的参考代码。
1 C/C++:A very simple OpenDRIVE parser
A very simple OpenDRIVE parserhttps://github.com/JensKlimke/xsd2cpp
2 XML+C++:openDRIVE convert dev
https://github.com/pageldev/libOpenDRIVEhttps://github.com/pageldev/libOpenDRIVE
3 XML+C++:This serves as an OpenDRIVE parser
An OpenDRIVE parser https://github.com/Brucknem/GuidedResearch
4 XML+C++: openDRIVE Praser
https://gitee.com/a4zhangfei/OpenDrivePraserhttps://gitee.com/a4zhangfei/OpenDrivePraser
5 XML+Python: parse-and-visualize-xodr
A project for parsing opendrive .xodr file and visualization using matplotlib.https://github.com/fiefdx/pyopendriveparser
6 XML+Python/C++: Read opendrive with python/c++ parser
https://github.com/esmini/esmini.githttps://github.com/esmini/esmini.git
7 XML+C++: Easily accessible C++ object structure of OpenDRIVE
https://github.com/DLR-TS/xodrhttps://github.com/DLR-TS/xodr
未完待续。。。
相关文章:
C#,自动驾驶技术,ASAM OpenDRIVE BS 1.8.0 规范摘要与C# .NET Parser
本文介绍自动驾驶技术的标准之一《ASAM OpenDRIVE》1.8.0 版本的规范摘要,及北京联高软件开发有限公司实现的 C# 版本 xodr 文件(XML) Parser 源代码。 本文档是 ASAM e.V. 的版权财产。 在更改常规许可条款时,ASAM 允许不受限制地…...
玩转PyCharm:常用操作和快捷键
常用操作和快捷键 PyCharm为写Python代码提供了自动补全和高亮语法功能,这也是PyCharm作为集成开发环境(IDE)的基本功能。PyCharm的“File”菜单有一个“Settings”菜单项(macOS上是在“PyCharm”菜单的“Preferences…”菜单项&…...
HeterGCL 论文写作分析
HeterGCL 论文写作分析 这篇文章,由于理论证明较少,因此写作风格了polygcl是两种风格的。polygcl偏向理论的写作风格,而hetergcl就是实践派的风格 首先看标题,其的重点是Graph contrastive learning Framework。其重点是framewo…...
简单的windows java -jar 无法启动jar包解决方法
简单的windows java -jar 无法启动jar包解决方法 1. 问题 我们项目是使用nacos作为注册中心以及配置中心,我们本地使用idea 进行服务配置以及启动发现没有问题,然后我们的服务经过maven install 打包后发布到LINUX服务启动也没有问题,但是我…...
iPhone图片/照片/视频复制到win10系统的简单方法 - 照片导出
效果图 不同方法: 【推荐】爱思助手 一步到位....【不推荐,会错漏很多照片】 1) 开始,打开开始菜单最后一个“照片” 2) 打开外部设备“Apple iPhone” 3) 全选,“添加xx项”,选择本地...
ctfshow-文件上传-151-161
CTFshow文件上传 PHP文件上传:1、代码思路 黑名单是设置不能通过的用户,黑名单以外的用户都能通过。 phtml、pht、php3、php4、php5后缀都会按做php文件执行,且不在黑名单内。 2、绕过 找漏网之鱼:cer、php3、php4、phtml等。 大小写绕…...
【Windows】Microsoft Office 的 .docx .xlsx .pptx 等文件图标消失,变成空白图标
问题描述 在重新安装 Microsoft Office 后,发现 .docx、.xlsx、.pptx 等文件的图标消失,变成一个空白的图标。 原因分析 可能是由于Office组件的快捷方式和图标的注册表损坏所导致的。注册表是Windows操作系统中用来存储系统和应用程序配置信息的一个重…...
场景化运营与定制开发链动 2+1 模式 S2B2C 商城小程序的融合
摘要:本文深入探讨了场景化运营的重要性以及其在商业领域的广泛应用。通过分析电梯广告、视频网站和电商产品的场景化运营方式,引入关键词“定制开发链动 21 模式 S2B2C 商城小程序”,阐述了如何将场景化运营理念融入到该小程序的开发与推广中…...
Axure中继器实现时间读取和修改
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:中继器实现时间读取和修改 主要内容:中继器内不同时间格式的向外读取,和向内赋值,实现中继器时间的修改 应用场…...
数据库聚合函数
数据库聚合函数 聚合函数 sum ,avg,max,min,count 1总分 SELECT SUM(student_result) FROM result; SELECT student_no,SUM(studet_result) FROM result WHERE student_no62平均分 avg SELECT AVG(studet_result) FROM result;3最大值 max 最小值 min SELECT MAX(studet_r…...
DevOps的文化观与工具
一、DevOps的文化 DevOps的核心文化是推动开发(Development)和运维或需求(Operations)团队之间的协作与沟通,以实现更快速、更可靠的软件交付。以下是DevOps核心文化的几个关键方面: 协作与沟通࿱…...
create-vite my-vite-uniapp-project
搭建一个使用 Vue 3、TypeScript、Vite、uni-app、uView UI库和Element Plus的项目,你可以遵循以下步骤: 安装 Node.js 和 npm。 使用以下命令全局安装 Vue CLI: npm install -g vue/cli创建一个新的 Vue 3项目,并选择 TypeScr…...
DC系列靶机-DC8
一,环境的搭建 VM17 官网下载 kali 2023.4版 https://mirrors.tuna.tsinghua.edu.cn/kali-images/kali-2023.4/ 靶场文件 https://download.vulnhub.com/dc/DC-8.zip 二,攻略 首先nmap一通扫; 扫描主机IP和端口; 靶机的地址…...
重构复杂简单变量之用对象替换数据值
对象替换数据值用于将简单的数据值替换为具有行为和逻辑的对象。这种优化的目的在于提高代码的可读性、灵活性和可维护性,尤其是在数据开始承载更多含义或行为的时候。 一、什么时候使用 当我们在代码中使用简单的数据值(如字符串、整数)表…...
我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布
我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布 在科技日新月异的今天,操作系统作为数字世界的基石,其重要性不言而喻。近日,华为公司在深圳隆重举行了原生鸿蒙操作系统发布会,向全球宣告了我国首个自主可控的移动…...
Spring Boot技术栈在论坛网站开发中的应用
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
Fast-LLM:加速大型语言模型训练的开源库
在人工智能领域,大型语言模型(LLM)的训练是一个计算密集型的任务,需要高效的工具来加速这一过程。Fast-LLM就是这样一个开源库,它旨在帮助研究人员和开发者快速、灵活地训练大型语言模型。 Fast-LLM简介 Fast-LLM是一…...
物理安全(Physical Security)
物理安全(Physical Security)是指为保护人员、建筑、设备以及其他物理资产免受物理威胁(如盗窃、破坏、间谍活动、自然灾害等)的一系列措施和技术。物理安全通常涉及三个主要方面:预防、检测和响应。以下是一些关键的物…...
Go语言开发环境搭建
#1024程序员节|征文# 文档说明 本文作者:SwBack 创作时间:2022年6月8日 18:46:21 知乎:https://www.zhihu.com/people/back-88-87 CSDN:https://blog.csdn.net/qq_30817059 百度搜索: SwBack系统: Windows 11 go 1.18.2 安装包下载 安装包下载链接…...
嵌入式硬件设计:技术与实践
嵌入式系统是现代技术世界中的重要组成部分,几乎遍布所有领域,从消费电子产品、医疗设备到工业自动化和智能交通系统。嵌入式硬件设计是这一领域的核心,它涉及到对处理器、存储器、接口、传感器等多种硬件元件的选择、集成与优化,使系统能够在特定环境下执行特定任务。本文…...
vue中使用echarts,导入JSON数据画图
1、将.json文件放置在与index.html同一目录下 2、编写vue界面,在script中加载json文件 3、在script中加载处理json数据 4、用处理后的数据画图 vue界面代码如下: <script> import * as echarts from "echarts" //引入echarts核心模…...
【C++篇】探索STL之美:熟悉使用String类
CSDN 文章目录 前言 💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍 点赞、收藏与分享:觉得这篇文章对你有帮助吗&…...
ETLCloud搭配MySQL | 让关系型数据库更智能
在现代数据处理领域,ETL技术和云服务正迅速成为数据管理的核心。本文将探讨如何将 ETLCloud 与 MySQL 配合使用,将不同来源的表转移到另一张表中,以最大限度地提升关系型数据库的价值和性能。 一、前期准备 环境 首先确保MySQL源数据库能够…...
Java 开发——(上篇)从零开始搭建后端基础项目 Spring Boot 3 + MybatisPlus
一、概述 记录时间 [2024-10-23] 本文是一个基于 Spring Boot 3 MybatisPlus 的项目实战开发,主要涵盖以下几个方面: 从零开始的项目创建IDEA 中开发环境的热部署Maven、Swagger3、MybatisPlus 等的配置路由映射知识静态资源访问文件上传功能实现拦截器…...
Psychophysiology:脑-心交互如何影响个体的情绪体验?
摘要 情绪的主观体验与对身体(例如心脏)活动变化的情境感知和评估相关。情绪唤醒增加与高频心率变异性(HF-HRV)降低、EEG顶枕区α功率降低以及心跳诱发电位(HEP)振幅较高有关。本研究使用沉浸式虚拟现实(VR)技术来研究与情绪唤醒相关的脑心相互作用,以实现自然而可…...
FunASR实时语音识别内网部署 | 无网络环境中的实时语音识别 | 实时语音识别
1. 在有网的电脑上面先下载下面内容 下载模型文件,可以到modelscope中下载 下载项目源码,可以到github中搜索funasr下载 配置环境,这里使用conda虚拟环境,创建并进入虚拟环境 conda create -n funasr python3.8 conda activate …...
【设计模式-状态模式】
状态模式(State Pattern)是一种行为设计模式,它允许一个对象在内部状态改变时改变它的行为。换句话说,这种模式让对象在不同的状态下能够表现出不同的行为,而不需要修改对象的代码。状态模式通过将对象的行为与状态进行…...
【代码随想录Day50】图论Part02
岛屿数量 深搜 题目链接/文章讲解:代码随想录 class Solution {// 计算网格中岛屿的数量public int numIslands(char[][] grid) {int sum 0; // 初始化岛屿数量为0// 遍历整个网格for (int i 0; i < grid.length; i) {for (int j 0; j < grid[0].length…...
帝国CMS 内容页调用上一篇下一篇的方法(精华汇总)
帝国cms默认的内容页的上一页&下一页的调用代码是: 上一篇:[!--info.pre--] 下一篇:[!--info.next--] 但是实话实说,如果做个很普通的模版那足够用了,但是如果想个性化一点的话,比如加背景ÿ…...
(7)c++复合数据类型之数组
数组 数组就是可以存储一组相同类型的值,比如int a[10];就是一个存储10个int类型的数组。 数组初始化 数组初始化可以单个初始化,也是使用列表初始化,列表初始化可以全部,或者部分,如下案例: #include &…...
哈尔滨网站建设价格/四年级写一小段新闻
第五部分 LONG类型 LONG是一种已经被弃用的数据类型,LOB类型是它的替代品.所以留在LOB之后进行讨论. 我们只需要简单的了解即可.为什么ORACLE还保留这种类型,只是为了向后兼容,在新的数据库设计是,不要再使用LONG类型列. LONG类型有两种: LONG :能存储2GB的字符 LONG RAW…...
如何建设网站兴田德润可以吗/新闻发稿平台有哪些
内容:2019年大连市各类型POI。 数据格式:.csv格式,经纬度为wgs1984坐标系 数据类型:餐饮、公共设施、公司企业、购物、交通设施服务、金融保险服 务、科教文化服务、商务住宅、生活服务、体育休闲服务、医疗保健服务、政府机构及社…...
无锡网站设计制作/长沙官网seo技术
在学习了两种利用php.exe来运行php文件方法后,我们还有一些需要特别注意的地方。在我们利用php.exe来运行php文件的同时,我们还可以输入一系列参数来达到不同的效果。下面我们就来一一介绍这些参数。-s(该选项不能和 -r 参数同时使用)显示有语法高亮色彩…...
做网站须知/一个完整的营销策划方案范文
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录技术方案设计技术方案设计 1、按条件筛选session 2、聚合统计:统计出符合条件的session中,访问时长在1s-3s、4s-6s、7s-9s、10s-30s、30s-60…...
工信部网站备案要求/免费推广方法有哪些
“Spring有多快?” 这是 2018 Spring One Platform 中的一场会议。看完会议视频,我自己动手试了一下。下面是我做出的测试结果。 还没有观看视频的朋友推荐看一下,非常有意思。 https://springoneplatform.io/2018/sessions/how-fast-is-s…...
江苏网站开发/做网站建网站公司
博士学位个人简历范文博士学位个人求职简历范文由yjbys提供整理,转载博士学位个人求职简历范文请标明出处求 职 目 标谋求高校或科研院所及相关企事业单位的工作,从事教学或科研工作。个 人 信 息姓 名 XXX 性 别 男 出生日期 ***毕业院校 浙江大学 学 历 博士 专 业…...