opendrive中的Lanes
在OpenDRIVE中,所有道路都包含了車道。每條道路必須擁有至少一條寬度大于0的車道,并且每條道路的車道數量不受限制。
需要使用中心車道對OpenDRIVE中的車道進行定義和描述。中心車道沒有寬度,并被用作車道編號的參考,自身的車道編號為0。對其他車道的編號以中心車道為出發點:車道編號向右呈降序,也就是朝負t方向;向左呈升序,也就是朝正t方向。
圖51展示了一條道路的中心車道,該車道擁有多條交通車道以及不同的行駛方向。在這個示例中,根據靠左行車以及靠右行車的交通模式,中心車道將道路類型中定義的行駛方向分隔開來。由于并未使用車道偏移,因此中心車道等同于道路參考線。
在OpenDRIVE中,車道用 <road> 元素里的 <lanes> 元素來表示。
以下規則適用于車道的使用:
- 每條道路必須擁有一條中心車道及一條寬度大于0的車道。
- 道路可根據需要而設定任意數量的車道。
- 中心車道不能擁有寬度,這就意味著不能將<width>元素用于中心車道。
- 中心車道編號必須為0。
- 車道編號必須在中心車道之后從1開始,朝負t方向為降序,朝正t方向為升序。
- 車道編號必須保持連續性且無任何間斷。
- 每個車道段都必須有唯一的車道編號。
- 可通過使用<lane>元素的@type屬性對雙向車道進行詳細說明。
XML示例
1?在車道段中進行車道分組
為了能夠便利地在OpenDRIVE道路描述中進行查找,一個車道段內的車道可分為左、中和右車道,車道在該組中用 <lane> 元素來描述。由于車道編號朝負t方向呈降序且朝正t方向呈升序,應用可從ID屬性中給出的車道編號中得知車道的方向(除非@type是雙向的)。
在OpenDRIVE中,車道組用 <laneSection> 元素內的 <center> 、 <right> 和 <left> 元素來表示。ID屬性用嵌套在<center> 、 <right 和 <left> 元素里的 <lane> 元素來定義。
以下規則適用于車道分組:
- 帶有正ID的車道在中心車道的左側,而帶有負ID的車道則在中心車道的右側。
- 每個車道段必須包含至少一個<right>或<left>元素。
- 必須給每個s坐標定義一個<center>元素。
- 每個車道段都可包含一個<center>元素。
- 為了能夠更好地確認方向,車道應按照降序ID按從左到右的順序排列。
2?車道段
車道可被分成多個段。每個車道段包含車道的一個固定編號。如圖56所示,每次車道編號的變更都隨之產生一個新車道段的需求。車道段的定義將沿道路參考線按升序來進行。
圖56中,路段被分割成不同的車道段。若車道編號改變,則需要定義一個新的車道段。
為了能更輕易地在復雜道路上對車道段進行使用,可僅使用@singleSide屬性對道路的一側進行定義。圖57展示了這一原理。
在OpenDRIVE中 ,車道段用 <lanes> 元素里的 <laneSection> 元素來表示。
屬性
t_road_lanes_laneSection:
車道可(may)被分成多個段,每個車道段都包含一個車道的固定編號。每一次的車道編號變更都將需要定義一個新的車道段。
t_road_lanes_laneSection_center:
為了能夠便利地在OpenDRIVE的道路描述中進行查找,一個車道段內的車道可分為左、中和右車道。每個車道段均必須包含一個<center>元素和至少一個<right>或<left>元素。
t_road_lanes_laneSection_center_lane:
車道元素被包括在左/中/右元素中。車道元素必須使用降序ID從左到右展示車道。
t_road_lanes_laneSection_left:
為了能夠便利地在OpenDRIVE的道路描述中進行查找,一個車道段內的車道可分為左、中和右車道。每個車道段均必須包含一個<center>元素和至少一個<right>或<left>元素。
t_road_lanes_laneSection_left_lane:
車道元素被包括在左/中/右元素中。車道元素必須使用降序ID從左到右展示車道。
t_road_lanes_laneSection_right:
為了能夠便利地在OpenDRIVE的道路描述中進行查找,一個車道段內的車道可分為左、中和右車道。每個車道段均必須包含一個<center>元素和至少一個<right>或<left>元素。
t_road_lanes_laneSection_right_lane:
車道元素被包括在左/中/右元素中。車道元素必須(should)使用降序ID從左到右展示車道。
以下規則適用于車道段:
- 每條道路都必須擁有至少一個車道段。
- 車道段必須按升序來定義。
- 每個s位置上都必須只有一條中心車道。
- 應該避免在長距離上使用寬度為0的車道。
- 每次車道編號改變都必須有新的車道段被定義。
- 車道段將持續有效,直到一個新的車道段被定義。
- 可根據需要多次更改一個車道段內的車道屬性。
- 可僅使用@singleSide屬性為道路的一側對車道段進行定義。
3. 車道偏移
車道偏移可用于將中心車道從道路參考線上位移,以便能夠更輕松地在道路上對車道的局部橫向位移進行建模(比如對左轉車道進行建模)。
根據用于車道偏移的插值,車道偏移和形狀定義兩者的組合可導致不一致性。若線性插值被用于定義沿參考線的道路形狀,那么它也應被用于偏移定義,以便兩者的定義能被一致地組合使用。
圖58展示了中心車道偏離道路參考線而產生的偏移。
在OpenDRIVE中,車道偏移用<lanes>元素內的<laneOffset>元素來表示。
屬性
t_road_lanes_laneOffset:
車道偏移可用于將中心車道從道路參考線上位移。
計算方式
利用以下三階多項式函數來計算給定點的偏移:
offset (ds) = a + b*ds + c*ds2 + d*ds3
?其中,offset?是在給定點處的橫向偏移;a, b, c,d是系數;ds是新的道路偏移元素起始處和給定位置之間沿道路參考線產生的距離。
每當新的元素出現, ds 則清零。偏移值的絕對位置計算方式如下:
s = ss + ds
其中,s是參考線坐標系統中的絕對位置,ss是參考線坐標系統中元素的起始位置。
每一次的多項式函數變更都需要一個新的車道偏移元素。
以下規則適用于車道偏移:
- 車道偏移不能與道路形狀一同使用。
- 當底層的多項式函數有變化時,必須啟動一個新的車道偏移。
- 若邊界定義已存在,則不允許出現偏移。
4?車道連接
車道的連接信息被存儲在OpenDRIVE中以便進行車道查找,并將借助于每條車道的前驅以及后繼信息來對連接進行描述。車道和交叉口均可作為車道的前驅和后繼部分。車道可連接至相同或不同道路上的其他車道上。
在OpenDRIVE中,車道連接用<lane>元素里的<link>元素來表示。<predecessor>和<successor>元素在<link>元素內得到定義。
屬性
t_road_lanes_laneSection_lcr_lane_link:
前面的和后置車道信息為有著相同參考線的車道之間的連接提供了車道在前面的以及后置車道段中的ID。只有在車道在一個路口結束或不具有物理連接時,這一元素才可被刪除。
t_road_lanes_laneSection_lcr_lane_link_predecessorSuccessor:
以下規則適用于車道連接:
- 一條車道可擁有另外一條車道作為其前驅或后繼。
- 只有當兩條車道的連接明確時,它們才能被連接。若與前驅或后繼部分的關系比較模糊,則必須使用交叉口。
- 若車道結束于一個路口內或沒有任何連接,則必須刪除 <link> 元素。
5?車道屬性
車道屬性描述了車道的用途以及形狀。每個車道段都定義了一條車道屬性,該屬性也可能在該車道段中有變化。如果沒有特意為車道段定義一條屬性,應用便可采用默認屬性。
車道屬性的示例是車道寬度、車道邊界和限速。
以下規則適用于車道屬性:
- 車道屬性的定義必須相對于相應車道段的起點來展開。
- 直到另外一個同類型的車道屬性得到定義或車道段結束,特定的車道屬性都必須保持有效。
- 相同類型的車道屬性必須按升序定義。
5.1?車道寬度
車道的寬度是沿t坐標而定義的。車道的寬度有可能在車道段內產生變化。
車道寬度與車道邊界元素在相同的車道組內互相排斥。若寬度以及車道邊界元素在OpenDRIVE文件中同時供車道段使用,那么應用必須使用 <width> 元素提供的信息。
在OpenDRIVE中,車道寬度由 <lane> 元素中的 <width> 元素來描述。
屬性
t_road_lanes_laneSection_lr_lane_width:
車道的寬度必須在每個車道段里至少被定義一次。中心車道不能有寬度,也就意味著不能對中心車道使用 <width> 元素。車道的寬度都必須保持有效,直到一個新的寬度元素被定義或車道段結束。
計算方式
利用以下三階多項式函數來計算給定點的寬度:
Width (ds) = a + b*ds + c*ds2 + d*ds3
?其中,width是給定點處的寬度;a, b, c,d是系數;ds?是新的道路寬度元素起始處和給定位置之間沿道路參考線產生的距離
每當新的元素出現, ds 則清零。寬度值的絕對位置計算方式如下:
以下規則適用于車道寬度:
- 車道的寬度必須在每個車道段中至少被定義一次。
- 必須為整個車道段的長度定義車道寬度。這意味著s=0必須要有一個<width>元素。
- 中心車道不能擁有寬度,也就是說不能對中心車道使用<width>元素。
- 直到新的寬度元素被定義或者車道段結束,車道的寬度都保持有效。
- 當多項式函數的變量發生改變時,新的寬度元素必須得到定義。
- 每個車道段的多個寬度元素都必須按升序得到定義。
- 不能在相同車道組里同時使用寬度元素以及邊界元素。
5.2 車道邊界
車道邊界是用來描述車道寬度的另一種方法,它并不會直接定義寬度,而是在獨立于其內部邊界參數的情況下,對車道的外部界限進行定義。根據上述情況,內車道也被定義為車道,該車道雖然與當前被定義的車道有著相同ID符號,但內車道的ID絕對值要更小。
相比較對寬度進行詳細說明而言,此類定義要更加地便利。尤其是在道路數據是源自于自動測量結果的情況下,該方式可以避免多個車道段被創建。
車道寬度與車道邊界元素在相同的車道組內互相排斥。若寬度以及車道邊界元素在OpenDRIVE文件中同時供車道段使用,那么應用必須使用 <width> 元素提供的信息。
在OpenDRIVE中,車道邊界用 <lane> 元素中的 <border> 元素來表示。
屬性
t_road_lanes_laneSection_lr_lane_border:
以下規則適用于車道邊界:
- 不能在相同車道組內一同使用寬度元素以及邊界元素。
- 邊界元素不能和車道偏移同時存在。
- 當多項式函數的變量發生改變時,必須要定義一個新的邊界元素。
5.3?車道類型
每條車道都會被定義一個類型。車道類型定義了車道的主要用途及與其相對應的交通規則。
可用的車道類型有:
路肩shoulder:描述了道路邊緣的軟邊界。
邊界border:描述了道路邊緣的硬邊界。其與正常可供行駛的車道擁有同樣高度。
駕駛driving:描述了一條“正常”可供行駛、不屬于其他類型的道路。
停stop:高速公路的硬路肩,用于緊急停車。
無none:描述了道路最遠邊緣處的空間,并無實際內容。其唯一用途是在(人類)駕駛員離開道路的情況下,讓應用記錄
OpenDRIVE仍在運行。
限制restricted:描述了不應有車輛在上面行駛的車道。該車道與行車道擁有相同高度。通常會使用實線以及虛線來隔開這類
車道。
泊車parking:描述了帶停車位的車道。
分隔帶median:描述了位于不同方向車道間的車道。在城市中通常用來分隔大型道路上不同方向的交通。
自行車道biking:描述了專為騎自行車者保留的車道。
人行道sidewalk:描述了允許行人在上面行走的道路。
路緣curb:描述了路緣石。路緣石與相鄰的行車道在高度有所不同。
出口exit:描述了用于平行于主路路段的車道。主要用于減速。
入口entry:描述了用于平行于主路路段的車道。主要用于加速。
加速車道onramp:由鄉村或城市道路引向高速公路的匝道。
減速車道offRamp:駛出高速公路,駛向鄉村或城市道路所需的匝道。
連接匝道connectingRamp:連接兩條高速公路的匝道。例如高速公路路口。
在OpenDRIVE中,車道類型用<lane>元素內屬性@type元素來表示。
屬性
t_road_lanes_laneSection_lr_lane:
車道元素元素被包括在左/中/右元素元素中。車道元素元素應按降序ID從左到右展示車道。
以下規則適用于車道類型:
可(may)通過使用新的車道段根據需要多次地更改車道類型。
5.4?車道材質
除OpenCRG之外,OpenDRIVE提供了一個用于存儲車道材質信息(即表面、摩擦屬性及粗糙程度)的元素。若未對材質進行定義,那么應用可采用默認值。
在OpenDRIVE中,車道材質用<lane>元素內的<material>元素來表示。
屬性
t_road_lanes_laneSection_lr_lane_material:
該屬性存儲了關于車道材質的信息。直到新的元素得到定義,每個元素都將保持有效。若有多個元素得到定義,它們必須按升序被排列。
以下規則適用于車道材質:
- 中心車道不能擁有材質元素。
- 直到另一材質元素得到啟動或車道段結束,車道的材質元素都必須保持有效。
- 若每個車道段都各自擁有多個材質元素,那么這些元素必須相對于s位置按升序得到定義。
5.5?車道限速
在OpenDRIVE中,車道速度用<lane>元素內的<speed>元素來表示。
屬性
t_road_lanes_laneSection_lr_lane_speed:
該屬性定義了給定車道上允許的最大行駛速度。直到新的元素得到定義,每個元素都在s坐標的增長方向中繼續有效。
以下規則適用于車道限速:
- 中心車道不能擁有任何限速。
- 除非有另一個限速得到定義或車道段結束,車道的限速都必須保持有效。
- 若每個車道段都擁有多個車道限速元素,那么這些元素必須按升序得到定義。
- 源自于標志的限速必須始終被優先考慮。
5.6?車道的使用
車道可局限于特定的道路使用者,例如卡車或公共汽車。這類限制可在道路標識描述的限制之上另外在OpenDRIVE中得到定義。
OpenDRIVE在 <lane> 元素內提供了 <access> 元素,以便描述車道使用規則。
t_road_lanes_laneSection_lr_lane_access:
該屬性定義了針對特定道路使用者類型的車道使用限制。
每個元素在s坐標的增長方向中都是有效的,直到新的元素得到定義。若多個元素得到定義,那它們必須按升序得到排列。
以下規則適用于車道使用規則:
中心車道不能(shall)擁有使用規則。
直到另一條使用規則得到定義或車道段結束,使用規則都必須(shall)保持有效。
若每個車道段都擁有多個使用規則元素,那么這些元素必須(shall)按升序得到定義。
車道使用元素可(may)在相同偏移位置開始。
若一個車道元素內無 <access> 元素存在,則也沒有使用限制。
若 <rule> 元素里出現否定值,那么所有其他車輛仍被允許使用車道。
若 <rule> 元素里出現允許值,那么所有其他車輛則被禁止使用車道。
只能為給定s位置賦予否定值或允許值的其中一個,二者不能同時出現。
即便只有一個子集被改變,都必須(must)為所有限制重新定義一個新的s位置。
否定=無 deny=none 這個限制被用于恢復所有先前限制。
5.7? 車道高度
車道高度必須沿h坐標得到定義。無關于道路高程,車道高度可用于標高車道。車道高度用于執行如圖71所示的小規模高程,該圖展示了人行通道如何通過車道高度被拔高。車道高度被認為是偏離道路并朝z方向的偏移(包括高程、超高程和形狀)。
在OpenDRIVE中,車道高度用<lane>元素內的<height>元素來表示。
?
總結
以上是生活随笔為你收集整理的opendrive中的Lanes的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国互联网变天,小米上市后将彻底冲破 B
- 下一篇: Dreamweaver/Flash CS