OpenStreetMapのデータをCARLAに読み込ませる

  • OpenStreetMapのデータをCARLAに読み込ませて、Semantic Segmentationで用いるまでの方法を紹介します。
    流れとしては、osm→obj→fbx→static meshという変換になります。

1. OpenStreetMapからosmファイルをエクスポートする

OpenStreetMap
上の「エクスポート」ボタン->「ドラッグして別の領域を選択」を押して、任意の範囲を選択し、osmファイルを入手します。
ある程度領域を絞り込まないと、エラーになります。

2. osmファイルをobjファイルに変換する

OpenStreetMapのデータを3Dデータに変換してくれるOSM2Worldというコンバータを使います。

2.1. OSM2Worldのインストール

JA:OSM2Worldを参考に、インストールします。

2.2. javaのインストール(もし入っていなければ)

javaが入っていないと、OSM2World.jarを開けません。
Oracleから、jre-8u261-windows-x64.exeをダウンロードして、インストールします。(RuntimeのJREで十分です。)

2.3. OSM2Worldの操作方法

OSM2World.jarを開きます。
File->Open OSM fileでosmファイルを開きます。
File->Export OBJ fileでobjファイルに書き出します。

3. objファイルをfbxファイルに変換する

3.1. Blemderのインストール

Blenderからダウンロードして、インストールします。

3.2. Blenderの操作方法

3.2.1. 不要なCollectionの削除

objファイルをインポートする前に、既存のCollectionを削除します。
右上のCamera、Cube、Lightを選択して、削除します。

3.2.2. objファイルのインポート

ファイル->インポート->Wavefront(.obj)で、objファイルをインポートします。
少し時間がかかるかもしれませんが、読み込むと以下のようになります。

3.2.3. fbxファイルにエクスポートする

ファイル->エクスポート->FBX(.fbx)でエクスポートできます。
ここで全てfbxにエクスポートしてもいいのですが、要素ごとに分けてfbxにエクスポートしておくと、CARLAのSemantic Segmentation機能で建物と道路を分けて表示できるようになります。
私は以下のように分けました。

分類 object
Building Bench, Bridge, Building, PowerTower, Tunnel
Pole BusStop, Tree
Fence Hedge, PoleFence
Terrain Pool, RiverJunction, SurfaceArea, Water, Waterway
Rail Rail
Road Road

4. CARLAで読み込む

基本的には、CARLAのHPの3.2.1 Binaries (.fbx)で紹介している方法でインポートします。
3.2.3.で分類したstatic meshをcarla\Unreal\CarlaUE4\Content\Carla\Staticの適切なフォルダに配置すると、Semantic Segmentation時に色を付けてくれます。

あとは、木とかフェンスとかを追加していけば、それっぽくなってきます。

4件のコメント

  1. 分かりやすく解説していただきありがとうございます!
    大変参考になりました!

  2. こちらの手法にて取り込んだ地図をscenario runnerでシミュレートすると、carlaがシステムダウンしたりしてうまく実行できません。ちなみにシナリオはopenscenarioで記述したものです。
    もし、なにかご存知でしたらご教授ください。

    1. 同じ現象かわからないですが、私の場合、特定の道路の読み込みでシステムダウンします。
      はっきりした原因を特定できていませんが、Open Street Mapの道路情報をosm形式からxodr形式に変換する際に、3車線以上の道路接続部分の変換にバグがある気がしています。
      試しに2車線以下の道路の部分だけでやってみて、うまくいくようであれば、同じ原因な気がします。
      対策ですが、現状では3車線以上の道路の接続部分をxodrのフォーマットに従って、手作業で修正しています。

      1. 返信ありがとうございます。
        試行は主に2車線以下のものです。
        シミュレーションの実行をcarlaフォルダ配下のmanual_controler.pyで実行するとダウンすることなく
        正常に動作いたします。
        また、scenario runnerでシミュレートするとき車両の初期位置を道路以外の箇所で指定するとダウンするようです。
        よって車両の初期位置はopendrive viewerなどでroadid,laneid,s,tなどを割り出して正確に配置しているのですがcarla内でxodrとfbxの情報があっていないため道路以外の箇所に配置することとなりダウンするものと推測しています。
        fbx等の地図情報のcarla取り込み手順を見直して見ようと思います。ありがとうございます。

        また、既知かもしれませんがxodrファイルの補正はhttps://github.com/JHMeusener/osm2xodrを利用すると比較的うまく行きますよ

詐欺師L へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です