SUMO仿真(二)--sumo工程例子

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),運行仿真即可。第一次運行,建議不要下載特別大的地圖,不方便觀測車流信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章