1. 程式人生 > >SUMO使用:Vehicle '**' is not allowed to depart on any lane of its first edge.

SUMO使用:Vehicle '**' is not allowed to depart on any lane of its first edge.

1、錯誤提示

Simulation started with time: 0.00

Error: Vehicle '15' is not allowed todepart on any lane of its first edge.

Quitting (on error).

根據提示來看,加在了net之後車輛並沒有執行。那麼我們就來檢視一下不能執行的原因。

2、檔案的來龍去脈

2.1OSM檔案

首先我們從OpenStreetMap上下載自己感興趣的區域,並將相應區域下載,下載後的檔案是*.osm格式。具體如圖(這裡取名為csdnTest.osm):


2.2net檔案

將OSM檔案轉換為sumo可用的路網檔案,這個時候就要請出:NETCONVERT了!!

我的osm檔案存放路徑:C:\Users\flyeah\Desktop\osmRandom,你們可以根據自己的儲存路徑來替換即可。sumo版本為0.27.1.



發現上圖的success,表明我們生成成功了。OK!

2.3trip檔案

有了路網,那麼下一步就是,道路有了,但是沒有車輛跑啊???好的,下面我們生成交通需求檔案,我們選擇trips檔案。sumo給我們提供了根據net檔案隨機生成trips.xml檔案的工具,就是:randomTrips.py!!!

我們利用它生成相應的需求檔案csdnTest.trips.xml:


沒有報錯,在資料夾下面我們也發現了相應的檔案!ok!又一個檔案搞定!

2.4rou檔案

根據前面生成的檔案,我們知道有了net檔案和trips檔案,那麼接下來就可以生成後路徑檔案了。接下來rou檔案登場,我們使用DUAROUTER工具實現csdnTest.rou.xml檔案的生成:


好吧,到這裡你也發現問題了,這麼多的Error。。。。。不過rou檔案還是生成了!好吧,先不管這些。既然有了net和rou檔案,那麼先跑一跑試一試。

2.5模擬

準備模擬配置檔案。具體內容:


好了,現在sumo-gui載入跑一下。


不錯,載入net檔案成功了!那就Play一下吧!

我擦,竟然失敗了,錯誤就是開頭我們提到了,車輛不能執行!!!


3、排查錯誤

在我們這裡,是顯示的:

Error: Vehicle '16' is not allowed todepart on any lane of its first edge.

Quitting (on error).

那我們就檢視車輛16的一些資訊。

開啟rou.xml檔案,找到如下內容:

按照錯誤的提示,在道路的第一個路段車輛就不能載入,路徑中的第一個路段為:-443337016,那麼我們就到net.xml檔案中搜索相應路段的資訊。我找啊找~,發現如下圖所示:


額,我們主要到這個道路的屬性type=“highway.service”,也就是高速服務站型別,我們檢視相應的允許型別,發現服務站就不允許汽車行駛。【想想也是,你再服務站裡開車???】因此,在自動生成trips檔案的時候,沒有考慮道路的型別。預設性況下車的型別是passenger(家用普通轎車),那麼不考慮道路型別,有預設生成汽車,那面就會發生不允許汽車行駛的道路最終包含在了trips檔案中。那麼我們接下里就需要提出路網檔案中的service等型別。sumo很好的考慮到了這個問題,只是在用NETCONVERT工具時在後面加上--remove-edges.by-type "string",其中string根據自己的路網而定,可以通過這個命令將不允許汽車行駛的道路剔除。

改正方案:

以上步驟相同,只是在用NETCONVERT工具時在後面加上--remove-edges.by-type "string",其中string根據自己的路網而定。

相關資訊: