#概要
交通流シミュレータSUMOで都市の交通流をシミュレートするには,車両等を走らせるための地図が必要になります.
本稿では,SUMOに付属するNETGENERATEを利用して単純なグリッド地図(信号付き)を生成し,GUI版のSUMOで読み込んで確認します.地図の生成には細かい設定がありますが,その一部について説明します.
#環境
- Windows10 64bit
- SUMO version 1.1.0
SUMOのインストール方法は下記を参照してください.
Quiita: 交通流シミュレータ SUMO をWindowsに導入する
NETGENERATEでグリッドの地図を生成する
###まずは信号なし版を生成してみる
SUMOのシミュレーションを実行するには,地図や信号の情報を記載したnet.xmlファイルが必要になります.
今回はグリッドの地図を生成します.コマンドラインで作業ディレクトリに移動し,下記コマンドでnet.xmlファイルを
$ netgenerate --grid --output-file=grid.net.xml
○○.net.xmlの○○は任意のファイル名で構いません.
SUMOのインストーラでPATHを通すにチェックを入れてあれば,netgenerateのコマンドを打てるようになっているはずです.
###sumo-guiで地図を確認する
下記コマンドでsumo-guiを起動後,ツールバーのFile → Open Network で生成したnet.xmlファイルを読み込みます.
$ sumo-gui
グリッドの地図が読み込まれました.ただし,交差点の信号を表わすバーはグレーアウトしており,現時点では信号は設定されていません.
また,デフォルトでは5×5になっていますが,下記コマンドのようにすれば変更することができます.
この例では,8×8のグリッドを60mメッシュに変更し(デフォルトは100m),制限速度を22.22m/s(デフォルトは13.89m/s) に設定しています.
$ netgenerate --grid --output-file=grid_TLS.net.xml --grid.number 8 --grid.length 60 --default.speed 22.22
その他の設定項目やデフォルト値は公式ドキュメント(英語)を参考にしてください.
###信号つきの地図を生成する
信号付きの地図を生成する場合,--tls.guess オプション を付けてNETGENERATEを実行します.
$ netgenerate --grid --output-file=grid.net.xml --tls.guess --tls.guess.threshold 30
--tls.guess オプションでは信号を設けるべき交差点をルールベースで判定し設置します.
--tls.guess.threshold 30 は,30km/h以上の制限速度の道路に対して信号を設置する閾値のオプションになります.値は任意に変更可能です.デフォルトの閾値が69.4444 km/h ですので,グリッド地図の制限速度がデフォルト(13.89m/h ≒ 50km/h)のまま--tls.guessオプションだけ付けても信号は生成されません.なので,--tls.guess.thresholdで信号を生成する道路の制限速度の閾値を設定しなおす必要があります.
sumo-guiで再度生成したnet.xmlファイルを読み込むと,交差点に信号が設定されています.
#おわりに
今回はSUMO付属のNETGENERATEを用いて,簡単なグリッド地図を生成し,信号を設定しました.
NETGENERATEではグリッド以外にも蜘蛛の巣状やランダムな形状の地図も生成できるので,公式ドキュメント(英語)を参考にしてみてください.
また,今回は仮想の道路ネットワークを生成しましたが,OpenStreetMapから実際の地図を読み込むことも可能で,他の方が解説されていますので参考ページに掲載しておきます.
SUMOでシミュレーションを実行するためには,今回生成したnet.xmlファイルの他に,誰がいつどこへ行くを定義したトラフィックデマンドファイル(rou.xml)が別途必要になります.トラフィックデマンドファイルについては今後深く掘り下げて行く予定です.
#参考ページ
- NETGENERATE公式ドキュメント(英語): https://sumo.dlr.de/wiki/NETGENERATE)
- Qiita: OpenStreatMapの地図を使ってSUMO(交通シミュレータ)を実行(@nattof): https://qiita.com/nattof/items/d198557126b7d3636f10