0. 学习资源
0.1 官方资源
ASAM 官方:
- 规范文档:ASAM OpenDRIVE 1.8.1 Specification
- 下载页面:ASAM OpenDRIVE
- 标准说明:免费下载,需注册ASAM账号
- 包含内容:规范文档、XSD schema、Examples和Use Cases、Implementation examples
XSD 文件(官方deliverables中包含):
- OpenDRIVE_Core.xsd:根元素、header
- OpenDRIVE_Road.xsd:道路、几何、高程
- OpenDRIVE_Lane.xsd:车道、标线
- OpenDRIVE_Signal.xsd:信号标志
- OpenDRIVE_Object.xsd:静态对象
0.2 开源示例文件
esmini 项目(推荐用于学习):
- GitHub仓库:esmini/esmini
- 示例文件位置:
esmini/resources/xodr/ - 常用示例:
straight_500m.xodr:基础直线道路curves.xodr:包含圆弧和缓和曲线fabriksgatan.xodr:复杂城市道路multi_intersections.xodr:多路口场景
下载方式:
bash
# 克隆完整仓库
git clone https://github.com/esmini/esmini.git
# 或直接访问单个文件(浏览器打开)
https://github.com/esmini/esmini/tree/master/resources/xodr
CARLA 示例文件:
- 仓库:carla-simulator/opendrive-test-files
- 包含多个城镇地图(Town01-Town12)
0.3 可视化工具
esmini odrviewer(推荐):
- 下载:esmini releases
- 功能:3D可视化OpenDRIVE地图
- 使用:解压后运行
bin\odrviewer.exe [file.xodr]
在线查看器:
- odrviewer.io:浏览器直接打开xodr文件
- 功能:查看road ID、lane ID、successor/predecessor关系
1. OpenDRIVE 概述
1.1 核心功能
OpenDRIVE 用 XML 表达静态路网:
- 几何:道路参考线、高程、横坡/超高、车道宽度
- 拓扑:道路连接、车道连接、路口关系
- 规则:信号、标志、限速、控制器
- 对象:人行横道、停车位、护栏、路侧设施
1.2 应用范围
适用 :仿真、路径规划、高精地图
不适用:动态行为(用 OpenSCENARIO)、渲染资产(用 3D 模型)
2. 文件结构
2.1 基本结构
<OpenDRIVE>
<header />
<road>...</road>
<controller /> (可选)
<junction /> (可选)
</OpenDRIVE>
2.2 Header
关键属性:
revMajor/revMinor:格式版本north/south/east/west:边界范围geoReference:真实世界坐标参考(建议提供)defaultRegulations:默认法规
2.3 Road
核心元素:
link:道路连接type:道路类型planView:平面几何elevationProfile:高程lateralProfile:横向形态(超高/横坡)lanes:车道结构signals:标志/信号灯objects:静态对象
3. 坐标系
两类坐标:
- 惯性坐标(x, y, z):绝对位置
- 道路坐标(s, t, h):沿路参数化位置
3.1 道路参考线
s:沿参考线的弧长hdg:航向角- 注意:参考线方向≠行驶方向
3.2 横向坐标
t:横向偏移(t>0 左侧,t<0 右侧)
3.3 坐标转换
Frenet → 惯性:
x(s,t) = x_ref(s) - t * sin(hdg(s))
y(s,t) = y_ref(s) + t * cos(hdg(s))
3.4 高度
三层高度来源:
elevationProfile:参考线高程lateralProfile:横向形态(超高/横坡)zOffset:元素自身偏移
4. planView:平面几何
4.1 基本结构
<planView> 包含多个 <geometry> 段:
- 起点:
s, x, y, hdg - 段长:
length - 类型:line/arc/spiral/poly3/paramPoly3
4.2 几何类型
line(直线):
xml
<geometry s="0.0" x="0.0" y="0.0" hdg="0.0" length="100.0">
<line/>
</geometry>
数学公式:
x(s) = x0 + s * cos(hdg)
y(s) = y0 + s * sin(hdg)
arc(圆弧):
xml
<geometry s="0.0" x="-0.014" y="-0.055" hdg="2.88" length="95.89">
<arc curvature="-0.000490572"/>
</geometry>
curvature:曲率(k = 1/R)- k > 0:左转(逆时针)
- k < 0:右转(顺时针)
hdg(s) = hdg0 + k * s
spiral(缓和曲线):
xml
<geometry s="95.89" x="-92.10" y="26.64" hdg="2.84" length="46.65">
<spiral curvStart="-0.000490572" curvEnd="-0.004661241"/>
</geometry>
- 曲率线性变化(
curvStart→curvEnd) - 需使用 Fresnel 积分或数值近似
- 常用于高速公路匝道、城市道路转弯过渡段
poly3 / paramPoly3(三次曲线):
xml
<geometry s="0.0" x="0.0" y="0.0" hdg="0.0" length="30.0">
<poly3 a="0.0" b="0.0" c="0.1" d="-0.002"/>
</geometry>
- 用于复杂路口连接段
- poly3: u = s, v = a + bu + cu² + d*u³
- paramPoly3: 参数化表达,更灵活
完整示例(组合多种几何):
xml
<planView>
<geometry s="0.0" x="0.0" y="0.0" hdg="0.0" length="100.0">
<line/>
</geometry>
<geometry s="100.0" x="100.0" y="0.0" hdg="0.0" length="47.12">
<arc curvature="0.05"/>
</geometry>
<geometry s="147.12" x="145.45" y="16.89" hdg="2.356" length="30.0">
<spiral curvStart="0.05" curvEnd="-0.1"/>
</geometry>
<geometry s="177.12" x="158.33" y="43.21" hdg="1.571" length="100.0">
<line/>
</geometry>
</planView>
参考:esmini curves.xodr、官方示例 Ex_Line-Spiral-Arc.xodr
4.3 采样建议
- 可视化:ds = 1-2m
- 路由:ds = 0.5-1m
- 轨迹:ds = 0.1-0.5m(高曲率处加密)
5. 高程与横向形态
5.1 elevationProfile
分段三次多项式定义高程:
z(s) = a + b*ds + c*ds^2 + d*ds^3
5.2 lateralProfile
关键元素:
superelevation:超高(横断面滚转)crossfall:横坡shape:横向曲面形状
作用:与高程共同决定任意(s,t)点的道路表面高度
5.3 自动驾驶应用
影响:
- 车身姿态与坡度估计(定位)
- 高速弯道速度规划(规划)
建议:平面规划可忽略,高保真仿真需考虑
6. lanes:车道系统
6.1 laneSection
<lanes> 包含多个 <laneSection>,每个定义一段的车道结构:
<left>:左侧车道(id > 0)<center>:中心车道(id = 0)<right>:右侧车道(id < 0)
6.2 lane id 规则
id = 0:中心参考车道(不用于行驶)id > 0:左侧车道,id 越大越远离中心id < 0:右侧车道,绝对值越大越远离中心
6.3 laneOffset
车道参考线相对道路参考线的横向偏移(分段三次多项式)。
作用:
- 无偏移时,center lane 与 road reference line 重合
- 有偏移时,计算车道边界需加上偏移量
6.4 lane width / border
分段三次多项式定义车道宽度:
width(s) = a + b*ds + c*ds^2 + d*ds^3
6.5 lane type
车道类型:
- 可行驶:
driving、entry、exit、onRamp、offRamp - 受限区域:
restricted、stop、median、shoulder - 非机动车:
walking、biking、shared
建议:映射为系统内部类型,避免硬编码
6.6 车道边界计算
步骤:
- 沿 s 采样(0.5-1m 间隔)
- 计算参考线坐标与切向
- 应用 laneOffset 和 width
- 将(s,t)转为惯性坐标
- 生成多边形
关键:OpenDRIVE 属性多为解析式函数,需离散采样后转为几何数据结构
6.7 roadMark:道路标线(变道规则/车道线类型的常用来源)
典型结构:
xml
<roadMark sOffset="0" type="broken" color="standard" width="0.12" laneChange="both">
<type name="broken" width="0.12">
<line length="4" space="8" .../>
</type>
</roadMark>
见样例:...\examples\Ex_Bidirectional_Junction\Ex_Bidirectional_Junction.xodr
工程解释:
roadMark@type:简化标线类型(solid/broken/...)laneChange:是否允许变道(increase/decrease/both/none)- 细节
type/line:用于更精细渲染/规则表达(虚线段长、间隔等)
自动驾驶策略上:roadMark 通常用于"允许/禁止跨越"与"车道线语义";但真实系统还会融合感知/法规/高精地图的更强语义。
6.7.1 laneChange 的工程解释(increase/decrease/both/none)
laneChange 的本意是"跨越该标线时是否允许变道"。工程实现时建议:
- 明确
increase/decrease在你的实现里对应"向左还是向右"(它与 lane id 编号体系、以及你定义的车道顺序有关) - 同时结合
road@rule(RHT/LHT)与本地交通法规(有的国家/场景左侧/右侧变道约束不同)
6.8 lane link:车道拓扑的"缝合"
lane link 出现在两处:
- road 内:
road/link(road 与 road/junction 的前后继关系) - lane 内:
lane/link(当前 lane 与前后 lane 的对应关系:predecessor/successor)
路口里更关键 的是 junction/connection 下的 laneLink from/to(见第 7 章)。
7. junction:路口拓扑
7.1 基本结构
最简单的路口(单个连接):
xml
<junction id="1" name="SimpleJunction" type="default">
<connection id="0" incomingRoad="6" connectingRoad="2" contactPoint="start">
<laneLink from="1" to="-1"/>
</connection>
</junction>
十字路口示例(多个连接):
xml
<junction id="1" name="CrossJunction" type="default">
<!-- 北向南直行 -->
<connection id="0" incomingRoad="1" connectingRoad="10" contactPoint="start">
<laneLink from="-1" to="-1"/>
<laneLink from="-2" to="-2"/>
</connection>
<!-- 北向东右转 -->
<connection id="1" incomingRoad="1" connectingRoad="11" contactPoint="start">
<laneLink from="-1" to="-1"/>
</connection>
<!-- 东向西直行 -->
<connection id="2" incomingRoad="2" connectingRoad="12" contactPoint="start">
<laneLink from="-1" to="-1"/>
</connection>
<!-- 东向南右转 -->
<connection id="3" incomingRoad="2" connectingRoad="13" contactPoint="start">
<laneLink from="-1" to="-1"/>
</connection>
</junction>
关键字段:
incomingRoad:进入路口的道路connectingRoad:路口内部连接道路(junction内road的id)contactPoint:连接点(start/end)laneLink from/to:车道映射关系from:incomingRoad的lane idto:connectingRoad的lane id
虚拟路口(直接连接,不含connecting road):
xml
<junction id="555" name="myJunction" type="virtual">
<connection id="0" incomingRoad="1" connectingRoad="2" contactPoint="start">
<laneLink from="-2" to="-1"/>
</connection>
</junction>
用于简化场景,直接连接两条道路
直接路口(direct junction):
xml
<junction id="111" name="" type="direct">
<connection id="0" incomingRoad="1" linkedRoad="3" contactPoint="start">
<laneLink from="-4" to="-1"/>
</connection>
<connection id="1" incomingRoad="1" linkedRoad="2" contactPoint="start">
<laneLink from="1" to="1"/>
<laneLink from="-1" to="-1"/>
</connection>
</junction>
使用 linkedRoad 替代 connectingRoad,适用于简单分岔
7.2 自动驾驶应用
车道图构建:
- 节点:lane 或 lane segment
- 边:直行边(predecessor/successor)+ 路口边(junction connection)
规划应用:
- 车道级路径搜索
- 路口内转向选择
- 结合信号灯做行为决策
7.3 connectingRoad
路口内部连接段,好处:
- 可精确建模路口内几何
- 拓扑清晰:incomingRoad → connectingRoad → outgoingRoad
8. signals 与 controller
8.1 signal 基本属性
基本信号示例(德国限速标志):
xml
<signals>
<signal s="3981.42" t="-14.05" id="5000162" name="Vorschriftzeichen"
dynamic="no" orientation="+" zOffset="3.88"
country="DE" countryRevision="2017" type="274" subtype="-1"
value="50" unit="km/h">
<validity fromLane="-3" toLane="-1"/>
</signal>
</signals>
关键属性:
s, t:位置(s沿道路参考线,t横向偏移)zOffset:垂直高度偏移orientation:方向+:对正向(s增大方向)有效-:对反向有效none:双向有效
type/subtype/country:语义编码(需查询标准)- DE 274 = 德国限速标志
- DE 1000001 = 德国交通灯
value/unit:数值(如限速 50 km/h)dynamic:是否为动态信号(yes/no)
有效范围(validity):
xml
<signal s="100.0" t="5.0" id="1001" type="206" orientation="+">
<validity fromLane="-2" toLane="-1"/>
</signal>
此信号仅对 lane -2 和 lane -1 有效
交通信号灯示例:
xml
<signal s="150.0" t="-3.5" id="2001" name="TrafficLight"
dynamic="yes" orientation="+" zOffset="5.0"
country="DE" type="1000001" subtype="-1">
<validity fromLane="-1" toLane="-1"/>
</signal>
dynamic="yes" 表示信号状态可变(红绿灯)
8.2 dependency
表达信号组合关系(如限速 + 车型限制)
8.3 controller
将多个信号归为同一控制逻辑(如信号灯相位)
8.4 限速优先级
- signals(最高优先级)
- road/type/speed
- header/defaultRegulations
- 系统默认值
9. objects:静态对象
9.1 基本属性
s, t, zOffset:位置hdg, pitch, roll:姿态length, width, height:尺寸
9.2 outline
表达对象轮廓(停车位、人行横道、交通岛等)
应用:转为多边形,用于碰撞检测和可行驶区域裁剪
9.3 surface/CRG
对象级高分辨率表面(如坑洼),用于精细仿真
10. surface / OpenCRG
10.1 road/surface/CRG
绑定 OpenCRG 文件,提供高分辨率路面数据
10.2 应用场景
- 车辆动力学仿真
- IMU/振动/坡度效应
- 路面细节仿真(坑洼、减速带)
建议:感知-定位-规划链路通常不需要,仿真场景可选
11. 自动驾驶应用
11.1 地图层抽取
- 可行驶区域:lane type + width/border
- 车道线:参考线 + laneOffset + width + roadMark
- 车道拓扑:lane link + junction connection
- 交通规则:signals + roadMark laneChange
- 静态对象:objects
11.2 定位
方法:
- 车道线/路缘匹配
- 曲率/坡度特征匹配
优势:
- 连续函数便于生成任意分辨率特征点
- 拓扑约束防止匹配跳跃
11.3 规划
应用:
- Route:车道级路由
- Behavior:路口转向 + 信号灯
- Motion:车道内轨迹生成
注意:信号编码需建立国家标准映射表
11.4 数据结构建议
几何层:
- ReferenceLineSegment、ElevationSegments
- LaneBoundaryPolyline(采样后的边界点列)
拓扑层:
- LaneNode、LaneEdge
- turnType(left/right/straight/uturn)
好处:
- 规划依赖拓扑层
- 渲染依赖几何层
- 便于单元测试
11.5 与 HD Map 的关系
OpenDRIVE 常作为输入/交换格式,最终转为内部 HD Map。
OpenDRIVE 优势 :解析式几何 + 明确拓扑
HD Map 优势:语义层 + 增量更新 + 版本管理
建议:将导入视为编译过程,保留可追溯性
11.6 与 OpenSCENARIO 组合
- OpenDRIVE:静态路网
- OpenSCENARIO:动态行为
好处:
- 同一地图生成多场景
- 同一场景复用到多地图
12. 工程实践
12.1 解析策略
- 用 XML 解析器读取结构
- 按 XSD 建模(结构)+ 系统需求建模(语义)
- 离散采样转为工程结构
12.2 XSD 校验
导入前用 XSD 校验,提前发现错误
12.3 可视化工具
使用 odrviewer 查看地图:
- 左键旋转、右键缩放、中键平移
o:切换道路特征线p:切换环境模型
12.4 常见问题
- road.length ≠ sum(geometry.length)
- laneOffset/width 不连续导致尖刺
- junction laneLink 映射错误
- signals orientation 设置错误
12.5 导入检查清单
结构校验:
- XSD 验证通过
数值检查:
- road.length > 0
- geometry.s 单调递增
- laneSection.s 单调递增
引用一致性:
- junction 引用的 roadId 存在
- laneLink 引用的 laneId 存在
- controller 引用的 signalId 存在
连通性:
- 至少一条可行驶路径连通
13. 其他元素
13.1 railroad / station
支持铁路/站台建模,适用于轨道交通仿真
13.2 additionalData
dataQuality:数据来源、精度include:引用额外文件userData:自定义扩展
建议:跨工具链传递时,用 userData 并制定 schema
13.3 geoReference
将地图对齐真实世界坐标(强烈建议配置)
方法:
- 在 header/geoReference 写入 PROJ/WKT
- 统一地图与定位坐标系
附录 A:示例文件索引
说明:本节列出可用的OpenDRIVE示例文件及其来源
A.1 ASAM官方示例(需注册下载)
从 ASAM OpenDRIVE 下载deliverables后,在 examples/ 和 use_cases/ 目录中包含:
几何示例:
Ex_Line-Spiral-Arc.xodr:直线、缓和曲线、圆弧组合Ex_Poly3.xodr:三次曲线UC_ParamPoly3.xodr:参数三次曲线
车道示例:
Ex_Lane-Width.xodr:车道宽度变化Ex_Lane-Border.xodr:车道边界Ex_Simple-LaneOffset.xodr:车道偏移
路口示例:
UC_Simple-X-Junction.xodr:十字路口UC_Simple-X-Junction-TrafficLights.xodr:带信号灯路口UC_5Road_Junction.xodr:五路复杂路口Ex_Bidirectional_Junction/Ex_Bidirectional_Junction.xodr:双向路口
信号示例:
Ex_Signal-Dependency.xodr:信号依赖关系
对象示例:
Ex_Objects.xodr:静态对象集合Ex_Pedestrian_Crossing.xodr:人行横道Ex_Parkingspace_Rectangular.xodr:矩形停车位
路面示例:
Ex_CrossSectionSurface/Ex_Roof_Profile_1Strip.xodr:横断面Ex_Object-Surface.xodr:CRG路面
A.2 esmini开源示例(推荐用于学习)
从 esmini/resources/xodr 下载:
基础几何:
straight_500m.xodr:500米直线道路straight_500m_signs.xodr:带标志的直线道路curve_r100.xodr:半径100m圆弧curves.xodr:包含直线、圆弧、缓和曲线组合curves_elevation.xodr:带高程的曲线道路crest-curve.xodr:凸形曲线(crest curve)
复杂道路:
fabriksgatan.xodr:城市街道场景jolengatan.xodr:城市道路网络soderleden.xodr:高速公路场景e6mini.xodr:迷你高速公路e6mini-lht.xodr:左侧通行版本
路口场景:
multi_intersections.xodr:多路口场景two_plus_one.xodr:2+1车道道路
道路标记:
straight_500m_roadmarks.xodr:带道路标线
下载命令:
bash
# 下载单个文件示例(使用wget或curl)
wget https://raw.githubusercontent.com/esmini/esmini/master/resources/xodr/straight_500m.xodr
# 或克隆完整仓库
git clone https://github.com/esmini/esmini.git
cd esmini/resources/xodr
A.3 CARLA示例
从 carla-simulator/opendrive-test-files 下载:
Town01.xodr~Town12.xodr:CARLA仿真器城镇地图- 包含复杂的城市道路网络、路口、交通信号
附录 B:核心概念
planView:绘制 2D 参考线elevationProfile + lateralProfile:转为 3D 道路表面lanes:铺设车道(laneOffset + width + roadMark)junction:连接车道拓扑signals/objects:添加规则和对象
附录 C:参考资料
C.1 官方规范文档
ASAM OpenDRIVE 1.8.1:
- 在线规范:ASAM OpenDRIVE 1.8.1 Specification
- 下载页面:ASAM OpenDRIVE
- 发布日期:2024年11月21日
- 许可:免费下载,需注册
关键章节:
- 第9章:Geometries - 几何定义
- 第10章:Roads - 道路定义
- 10.4 planView:平面几何
- 10.5.1 elevationProfile:高程
- 10.5.2 lateralProfile:横向形态
- 第11章:Lanes - 车道系统
- 11.5 Lane linkage
- 11.6 Lane geometry
- 11.2.3 laneOffset:车道偏移
- 第12章:Junctions - 路口
- 第13章:Objects - 静态对象
- 第14章:Signals - 信号标志
历史版本:
C.2 工具与库
解析库:
- C++: ad-xolib - OpenDRIVE 1.7解析
- Python: pyxodr - Python解析器
- Python: scenariogeneration - 创建和修改OpenDRIVE/OpenSCENARIO
- Rust: opendrive crate
可视化工具:
- esmini - OpenSCENARIO播放器(含odrviewer)
- odrviewer.io - 在线查看器
- ODDLOT - OpenDRIVE编辑器
相关标准:
- ASAM OpenSCENARIO - 场景描述(动态行为)
- ASAM OpenLABEL - 标注数据格式
C.3 社区资源
- awesome-openx - ASAM OpenX标准资源汇总
- CARLA Documentation - CARLA的OpenDRIVE使用指南
- GDAL OpenDRIVE驱动:XODR格式文档
附录 D:关键元素速查表(字段→含义→工程用途)
D.1 <header>
常见属性
revMajor/revMinor:OpenDRIVE 格式版本(例:1.8)name/version/date/vendor:数据集信息(用于溯源与版本管理)north/south/east/west:惯性坐标系包围盒(便于快速裁剪/索引)
常见子元素
geoReference:坐标参考(PROJ/WKT 等字符串),用于对齐真实世界坐标offset:整体偏移(工具链中常用于把原点挪到更合适的数值范围)license:许可信息defaultRegulations:默认法规(可被 road/lane/signal 覆盖)dataQuality/include/userData:额外数据(见第 13 章)
自动驾驶用途
- geoReference + offset 是"地图坐标对齐"的基础;默认法规常用于"无标志时的默认限速/规则兜底"。
D.2 <road>
常见属性
id:road 唯一标识(全局唯一,字符串但常用数字)junction:所属 junction id;-1表示不在 junction 内length:参考线在 xy 平面长度(高度变化不计入)rule:交通规则(RHT/LHT),影响默认行驶侧与部分解释name:可选名称
常见子元素
link:与前后 road 或 junction 的连接type:road 类型(town/motorway/...),可带speed(默认限速)planView:参考线 2D 几何elevationProfile/lateralProfile:3D/横断面lanes:车道系统(最关键)signals/objects:规则要素与静态对象surface/CRG:高分辨率表面(可选)
D.3 <road>/<link>(road 级连接)
常见子元素
predecessor/successorelementType:road或junctionelementId:目标 idcontactPoint:start/end(当 elementType=road 时常见)
工程用途
- 用于构建 road 级拓扑;真正车道级通行还要结合 lane link 与 junction laneLink。
D.4 <planView>/<geometry>
通用属性
s:该段起点的 sx,y:该段起点惯性坐标hdg:该段起点航向(xy 平面)length:该段长度
段类型
line:直线arc curvature="k":常曲率圆弧(k>0 左转,k<0 右转)spiral curvStart/curvEnd:缓和曲线(曲率线性变化)poly3 a,b,c,d:三次曲线(局部坐标表达)paramPoly3 aU,bU,cU,dU,aV,bV,cV,dV,pRange:参数三次曲线
D.5 <lanes> 与 <laneSection>
laneSection@s
- 该 laneSection 的起点 s;laneSection 之间按 s 递增拼接。
三组 lanes
<left>:id>0<center>:常见 id=0<right>:id<0
D.6 <lane>(车道)
常见属性
id:车道编号(正左负右,0 中心)type:用途(driving/entry/exit/walking/...)level:是否与参考平面等高(工程上可作为 3D 解释开关)- 可选
direction:对向/同向等(用于一些双向车道表达)
常见子元素
link:该车道的 predecessor/successor lane idwidth/border:宽度/边界随 s 变化(分段三次多项式)roadMark:标线(类型、颜色、宽度、laneChange 等)access:通行限制(允许/禁止某类参与者,某些 lane type 建议用 access 表达)
D.7 <laneOffset>
属性
s:段起点a,b,c,d:偏移多项式
用途
- 表达"车道体系整体相对参考线的偏移"(例如道路拓宽、中心线偏移)。
D.8 <roadMark>
常见属性
type:简化标线类型(solid/broken/...)color:颜色(standard/white/yellow/...)width:标线宽度laneChange:是否允许跨越(increase/decrease/both/none)
用途
- 变道/越线规则、车道边界语义、仿真渲染参数来源。
D.9 <junction>/<connection>/<laneLink>
关键字段
incomingRoad:进入路口的 roadconnectingRoad:路口内部连接段 roadlaneLink from/to:incomingRoad 的 lane → connectingRoad 的 lane 映射
用途
- 构建路口内的车道连通关系;是车道级路由最关键的输入之一。
D.10 <signal>(标志/信号)
常见属性
s,t:放置位置id,name:标识与可读名称type/subtype/country/countryRevision:语义编码(通常需查标准映射)orientation:"+":对正 s 方向有效"-":对负 s 方向有效"none":双向有效
value/unit:数值型信号(常见:限速)dynamic:是否动态(对可变信息板/可变限速更重要)
常见子元素
validity:有效车道范围(很多规则都要靠它精确到 lane)dependency:组合/依赖信号(见Ex_Signal-Dependency.xodr)
D.11 <object>(静态对象)
常见属性
s,t,zOffset:放置位置与高度偏移hdg/pitch/roll:姿态length/width/height:尺寸
常见子元素
outline:轮廓(用于占用区域、碰撞几何)surface/CRG:对象表面细节(坑洼等)
免责声明
本文档仅供技术学习和交流使用,所有内容基于公开的ASAM OpenDRIVE标准规范和开源示例整理而成。
重要说明:
- 本文档不构成任何形式的官方标准或技术规范,仅为个人学习笔记和技术总结
- 文档内容可能存在理解偏差或错误,实际应用请以ASAM官方规范为准
- 本文档引用的示例代码和数据均来自开源项目或官方示例,遵循各自的开源协议
- 使用本文档内容导致的任何直接或间接损失,作者不承担责任
- 在实际项目中应用OpenDRIVE标准时,请严格遵循相关国家和地区的法律法规
相关资源:
- ASAM OpenDRIVE官方规范:https://www.asam.net/standards/detail/opendrive/
- esmini开源项目:https://github.com/esmini/esmini(Apache 2.0 License)
- CARLA示例文件:https://github.com/carla-simulator/opendrive-test-files(MIT License)