1.sumo的工程結構
sumo解壓之後可以得到四個文件夾(bin、data、docs和tools),bin文件夾下大部分爲可執行文件,不同之處在於部分可執行文件並未封裝,因此需要用命令行打開;docs文件夾主要包含examples和java、python等的幫助文檔;tools中的工具多是用python編寫。
通過瀏覽examples中的例子發現,sumo的仿真至少需要三個文件:
(1)道路文件,也稱路網文件(.net.xml),該文件主要是對行車道路的描述文件;道路文件的形成有很多方法,在"SUMO仿真(一)"中詳細介紹瞭如何從openstreetmap中導出.osm文件,利用sumo/bin中的netconvert工具可以將.osm地圖轉化爲.net.xml文件;還有一種方法就是自己編寫.net.xml文件,現在我也不會,所以不做介紹;
(2)車流文件,也稱車量行駛文件(.rou.xml),該文件主要對車輛數量,車輛行駛規則等的描述文件;高級仿真中還會加入其他文件,例如:車輛描述文件、地形描述文件等;車流文件的形成有很多方法,這裏使用的是sumo自帶的一個radomTrips.py,它是一個工具,通過調用這個工具可以在已有的net.xml上產生車輛行駛規則,利用它和上面的net,xml就可以產生rou.xml文件;
(3)編輯配置文件(.sumo.cfg或.sumocfg),該文件主要對仿真過程配置的描述文件。
2.工程例子
(1)軟件需求
windows系統(sumo在linux下運行效果更好) |
xp,7,8,10都可以 |
sumo版本 |
0.30及以上最好 |
Notepad++(爲了查看和編輯xml文件) |
可替換,只要能查看編輯xml即可 |
python環境 |
2.7及以上都可以 |
(2)處理導出的.osm地圖
地圖的保存:最好將地圖保存在和sumo同一層次的文件夾中,例如我在F盤下解壓了sumo,在同一個目錄下新建了map文件夾,來保存地圖文件及隨後產生的各個xml等文件,方便查看和管理。
地圖的處理:下載的osm除了路網信息還包含別的東西,需要做簡單處理;導出的osm地圖不僅包含路網信息也包含大量的別的模塊例如建築和河流,這些模塊可以用polyconvert工具添加到sumo-gui配置文件中。
我們手動打開sumo-1.0.1\doc\userdoc\Networks\Import\OpenStreetMap.html文件,然後在打開的網頁中間部分 Importing additional Polygons (Buildings, Water, etc.)的下面有一大段xml的代碼,複製這些代碼,然後在notepad++中級新建文件並把複製的代碼粘貼到裏面,在本實驗中因爲不需要,所以刪除了下面的id=“power”的那一行代碼,然後保存爲typemap.xml,把這個文件保存到上一步驟建的map文件中去,和osm地圖文件放一起。
(3)創建.net.xml文件、.poly.xml文件和.rou.xml文件
打開sumo-1.0.1/bin/start-command-line.bat批處理,然後就可以用命令行模式對osm文件做處理,首先cd到map文件夾下進行操作。
代碼:cd /d F:\software\sumo-win64-1.0.1\map
然後利用bin中的netconvert可執行文件將.osm文件轉化爲.net.xml文件
代碼:netconvert --osm-files interpreter.osm -o map.net.xml
再然後利用bin中的polyconvert可執行文件將.osm文件轉化爲.poly.xml文件
代碼:polyconvert --net-file map.net.xml --osm-files interpreter.osm --type-file typemap.xml -o map.poly.xml
最後利用tools中的randomTrips.py產生map.rou.xml文件
代碼:python F:\software\sumo-win64-1.0.1\sumo-1.0.1\tools\randomTrips.py -n map.net.xml -e 100 -l
-n map.net.xml表示輸入,-n表述輸入的類型是net類型,其實-n等價於--net,-n是一種簡寫的方式。後面的-l -e 600是隨機工具的配置,就像隨機數生成函數需要一個種子一樣,這樣的一個過程生成的是一個旅程隨機過程文件.trips.xml,我們還需要把隨機的旅程和道路信息結合起來就獲得了車流文件(rou.xml)了。我們要用到的工具是bin文件夾下的duarouter.exe。
代碼:python F:\software\sumo-win64-1.0.1\sumo-1.0.1\tools\randomTrips.py -n map.net.xml -r map.rou.xml -e 100 -l
執行成功後可以在map文件夾下查看到map.rou.xml
(4)編輯.sumo.cfg配置文件
編輯配置文件如下圖,主要是更改input文件,可以在sumo-1.0.1文件夾的examples文件夾中複製一個.sumo.cfg配置文件,然後更改input文件的value,便可以得到如下圖所示文件,然後把文件命名爲map.sumo.cfg並保存到map文件夾中,到這一步,所有運行需要的文件就夠了
(5)運行sumo仿真
打開sumo-gui,選擇map文件夾中的map.sumo.cfg文件,下載的地圖將自動加載到主視圖窗口中,增加延時方便觀察車輛的運動(建議100~200ms),運行仿真即可。第一次運行,建議不要下載特別大的地圖,不方便觀測車流信息。