SUMOを用いた交通流シミュレーション – 定義ファイルの作成方法Mobility simulation on SUMO – make a network and route definition

このブログの以前の記事で,トラフィックシミュレータ”SUMO“のインストール方法と簡単なシミュレーションの実行方法をご紹介しました. 今回は,道路網の形状や車両の量といった,シミュレーションに用いる各種パラメータを定義する方法をご紹介します.

基本方針

SUMOで車両の動きをシミュレートするには,おおまかに2種類の情報を定義する必要があります.

  • 道路網に関する情報
    • 交差点の位置
    • 交差点間の接続関係
    • レーン数
    • 制限速度
    • 信号の有無,時間間隔
  • 道路網上を走る車両に関する情報
    • 車両の種類(最高速,大きさ,等)
    • 車両の走行経路
    • 車両の出現頻度

これらの情報をXMLファイルに記述することで,各種パラメータの定義を行います. ただ,これらの情報を全て手作業で作成することは非常に困難ですから,作成作業を半自動化する方法が用意されています.

  • 道路網に関する情報の作成
    1. 道路網生成ツールを利用して作成する
      • “NETGENERATE”を利用する
    2. 実際の地図データをSUMOで利用できる形式に変換する
  • 道路網上を走る車両に関する情報の作成
    1. 車両の種類,出発地,目的地,出現頻度の情報を与え,2点間の経路を自動生成する
      • “*ROUTER”を利用する
    2. シミュレーション対象地域の人口や年齢構成といった情報から,車両の種類や走行経路を自動生成する
      • “ActivityGen”を利用する

今回の記事では,NETGENERATEと*ROUTERを利用する方法を取り上げます.OpenStreetMapとNETCONVERTを利用する方法,およびActivityGenを利用する方法については,公式ドキュメントを参照してください.

道路網の生成

道路網の生成は,netgenerateコマンドを利用します. netgenerateを利用すると,あらかじめ定義された次の3タイプの道路網を定義できます.

  • マンハッタン型道路網
  • 蜘蛛の巣型道路網
  • ランダムな道路網

ここでは,次のような形状の道路網を生成してみます.

  • マンハッタン型
  • 100m x 100mのブロック
  • 10ブロック x 10ブロック
  • 片側2車線
  • 制限速度40km/h
  • 各交差点には信号を設置

上記のような条件の道路網を生成するには,次のコマンドを実行します.

コマンドを実行後,manhattan.net.xmlというファイルが出力されていれば成功です.

manhattan_1manhattan_2

その他の形状やオプションについては,公式ドキュメントを参照してください.

経路の生成

続いて,道路網上を走る車両の経路を生成します. まず出発地と目的地のペア(“trip”)を生成し,その後,2点間の経路を生成します.

出発地と目的地の生成

randomTrips.pyを利用して,出発地と目的地をランダムに選択します. ここでは,次のような条件の出発地・目的地のペア(trip)を生成します.

  • 0-300secの間,車両を出発させる
  • 1sec間隔で出発させる

上記のようなtripを生成するには,次のコマンドを実行します

コマンドを実行後,manhattan.trip.xmlというファイルが出力されていれば成功です.

出発地・目的地間の経路の生成

duarouterを利用して,2点間の最短経路を経路として選択します. 次のコマンドを実行します.

コマンドを実行後,manhattan.rou.xmlというファイルが出力されていれば成功です.
duarouter以外の経路作成方法については,公式ドキュメントを参照してください.

シミュレーションの実行

ここまでの手順を終えると,少なくとも次の2ファイルが生成されているはずです.

  • manhattan.net.xml
  • manhattan.rou.xml

シミュレーションには上記2ファイルを使用します. 次に示すXMLをmanhattan.sumocfgという名前で保存し,上記2ファイルを使用するよう指定します.

保存後,manhattan.sumocfgsumo-guiで開き,車両の動きが確認できれば完了です.

result

おわりに

今回は,SUMOで道路網や運転経路を定義する方法をご紹介しました. 次回は,SUMOでシミュレートした車両の動きを,ns-3やOMNeT+といったネットワークシミュレータで利用する方法をご紹介したいと思います.

Yohei KANEMARU