検証日時
02/03/2015 (Tue)
概要
Gazeboのチュートリアル第三弾「Build a World」。
このチュートリアルでは、シミュレーション中の環境をどのように構築するかについて説明します。
今回はその「Digital Elevation Models」編です。
公式サイトを適当に翻訳しただけですので、あしからず。
レベル
ADVANCED
環境
PC | : | Lenovo ThinkPad X240 |
Prosessor | : | Intel Core i7-4600U (2.10GHz, 4MB, 1600MHz) |
RAM | : | PC3-12800 DDR3L (8GB) |
OS | : | Ubuntu 14.04 LTS 64bit |
Kernel | : | 3.13.0-44-generic |
Gazebo | : | Version 5.0.1 |
参考
はじめに
Digital Elevation Model (DEM)は3Dの植物や建物のような物体を含まないような地形です。DEMはLIDARやradar、カメラなどによるセンサフュージョンによって生成されます。グラウンドポジションの地形の標高は、定期的に水平間隔でサンプリングされています。WikipediaでDEMのより詳しい情報があります。
DEMという言葉は一般的な名称であり、至って普通のフォーマットです。実際、DEMは代表的なグリッド立体図(水平捜線)や、ベクトルベースの基板地図変換であるvector-based triangular irregular network (TIN)なのです。現在GazeboはGDALライブラリでサポートされているraster(水平捜線)データのみをサポートしています。
GazeboをDEMをサポートする主な動機付けは、リアルな地形をシミュレートできるようにしたいというものです。ロボットを現実の世界のと同じ地形でシミュレーションし、その動向をテストし、救助用または農業用への応用を図ることは興味深いものとなるでしょう。
GazeboにDEMサポートを適用する
DEMファイルをサポートするには、GDALライブラリをインストールする必要があります。
Ubuntu Trusty/Utopic の場合:
1
|
|
Ubuntu Precise の場合:
1
|
|
DEMファイルとSDFフォーマットでの定義
立体データを提供する団体はいくつかあります。例えば、80年代の噴火前か噴火後のセント・ヘレンズ山のDEMフォーマットファイルをダウンロードしましょう。ダウンロードしたら、Unzipで解凍し、mtsthelens.dem
という名前をつけましょう。
1 2 3 4 |
|
通常、DEMファイルにはたくさんの取り決めがあるので、Gazeboでは扱えません。なので、DEMの取り決めに合わせる良いアイデアがあります。i日のコマンドで地形を129x129に縮小し、Gazeboのmedia/dem/
ディレクトリにそれをコピーします。
1 2 |
|
GazeboでDEMファイルを読み込むのは高低地図を読み込む方法と同じです。Gazeboは読み込みファイルがプレーンファイルかDEMファイルであった場合、自動でファイルを検出します。volcano.world
ファイルを作成し、以下の内容をコピペしてください。できたら/tmp
のように、どこにでも好きなところに保存してください。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
|
コードの上部にある<heightmap><size>
要素は、(<size>
要素がないときは)Gazeboが原寸でDEMファイルを読み込むかどうかを決定し、(<size>
要素があるときは)リサイズします。今回は、DEMファイルをリサイズします。<size>
要素はGazeboにシミュレーションで使用し、リサイズする大きさをメートル単位で定義します。もし、正しいアスペクト比を維持したいなら横幅、高さ、海抜(<size>
の三番目です)を詳細に計算して定義してください。今回の例では、DEMファイルは150 x 150 [m]で最も高いところで、海抜50 [m] となるようにリサイズしています。
GazeboをDEMファイルを含むworld
と共に立ち上げ、以下のような火山の立体図が表示されることを確認してください。以下のコマンドの例では、ファイルを/tmp
ディレクトリに置いています。
1 2 3 |
|
興味のある地域のDEMファイルを手に入れるにはどうしたらよいですか?
GLCF(Global Land Cover Facillity)について
続いて、興味のある特定の地域のDEMファイルを手に入れる方法を説明します。
Global Land Cover Facilityでは地球の高解像度なデジタル地形データを提供し、維持しています。Search and Preview toolへ行ってみましょう。すると、イメージしたシミュレータを見つけることができるでしょう。すべての地形パッチはあなたがこのツールを使う前から知っているであろう個々のpathとrowを持っています。私達は、QGISを使い興味のあるpath/rowを発見するのです。以下のキャプチャはその検索画面です。
QIGSについて
QIGSとはクロスプラットフォームのオープンソース地理情報システムプログラムです。以下のように、このプログラムでは閲覧、編集、調査で使用することができます。QGISのサイトの指示にしたがってQGISをダウンロードしてください。
QIGSのダウンロード
QGISのダウンロードを参考にしてQGISをダウンロードします。
以下のように、aptを使ってQGISをインストールします。
1 2 |
|
QGISの使い方
QGISを開いたら、以下のように、画面左にあるWMS/WMTSレイヤの追加というアイコンをクリックしましょう。
すると以下のようなウィンドウが出るので、以下のように、バーをクリックし、Lizardtch serverを選択し、接続ボタンを押してください。
すると、以下の一枚目のように、レイヤを選択できるようになるので、タイトルがMODISであるレイヤを選んで、一番下の追加を押してください。終わったら、このウィンドウィンドウを閉じてください。
うまく行くと、二枚目の写真のように、世界地図がレイヤに表示されるはずです。続いてのステップは他のレイヤーを利用可能なパッチと共に追加します。このshapeファイルをダウンロードし、どこでも良いのでフォルダに解凍してください。私は、
~/Downloads/
に保存し、そこで展開しました。QGISに戻り、以下の一枚目のように、ベクタレイヤの追加というアイコンを押してください。すると、開く前に、現在のプロジェクトを保存しますか?と聞かれるポップアプが表示されるので、保存するを選んでください。その後、先ほど解凍したフォルダの中の
wrs2descending.shp
ファイルを選択してください。うまく開けると、2枚目の様なレイヤが表示されるはずです。
ここまでで、メインウィンドウに2つのレイヤが開いていることを確認できるはずです。2つのレイヤーを同時に確認できるようにするため、wrs2desceding
レイヤの透明度を変更しましょう。
ウィンドウ左側のレイヤ一覧より、wrsdescending
レイヤをダブルクリックすると、以下の一枚目のようなウィンドウが出るので、透明度を85%程度に修正しましょう。成功すれば、二枚目のようなレイヤになっているはずです。
QGISとGLCFを使って地形データを取得するまでの手順
QGISの操作
脇ほどまでのレイヤを使って、スクロールと左ボタンを使用し、興味のある地域まで移動してください。
今回は、富士山まで移動してみました。以下のように、上部のバーにある、地物情報表示というアイコンをクリックしてください。
その状態で、興味のある地域をクリックすると、以下のように、そのエリア一体の地形パッチがハイライトされます。以下のキャプチャの例では、富士山近辺の地域のDEMのためのpathとrowを確認することができます。 ちなみに、公式チュートリアルでは、以下のキャプチャのように、スペイン、カナリア諸島の、ラスパルマスのDEMのpathとrowを確認しています。
GLCFの操作
GLCF検索ツールに戻り、調べたpath/rowの値をStart PathとStart Rowとラベリングされているカラムに入力しましょう。
入力したら、Submit Quenryをクリックしてください。
Preview and Downloadを押すと結果を表示できます。以下の結果は、富士山近傍のもので、path = 108、row = 35とした時の結果です。
地形ファイルを選び、Downloadを押してください。
今回は、計測年度が一番新しい、2011年のもの、ID:294-863を選びました。(上図参照)最後に、拡張子が
.TIF.gz
のファイルを選び、好きなディレクトリに保存し、展開してください。
尚、.gz
が付いているデータは複数ありますが、README.GTF
によると、*_B62.TIF.gz
となっているものが程よい解像度で、良いみたいです。また、README.GTF
によると、*.TIF.*
はGeoTiff
フォーマットになっているそうなので、これを選びましょう。尚、*
はワイルドカードです。
GLCF(Global Land Cover Facility)ファイルは、DEMが利用できるフォーマットとして、最も標準的ななGeoTiffフォーマットになっています。
GazeboでDEMデータを使用するための準備
DEMデータは通常、高精細に作られています。Gazeboで使用する前に、gdalwarp
を使って地形の解像度を扱いやすいサイズにします。
1
|
|
DEMデータは、しばしば、holes
やvoid
エリアを含んでいます。そういったエリアはDEMが生成された時に作成できなかったデータがあるエリアと一致します。hole
というデータの場合、hole
には、DEMで使用された、データタイプの最大値もしくは最小値が割り当てられています。
上記のようなhols
が埋められたDEMのデータセットである、finished
バージョンをダウンロードするよう、常に心がけてください。もし、あなたのDEMの地形データがhols
(NODATA
値としても知られている)を含んでいる場合、gdal_fillnodata.py
のような、gdal
のツールを使って手動で修復してみてください。
Gazeboで様々なDEMを使う
Gazeboは、直接様々なDEMをサポートしていないにも関わらず、GDALにはDEMを一つにするマージのための有益なツールセットがあります。DEMのセットをダウンロードする最初のステップはマージすることです。パッチは他のパッチと重なることがあるということを覚えておいてください。GDALはそれらの重なりをシームレスにマージできるのです。今あなたがいるディレクトリにマージする準備ができた状態でGeofiff
ファイルがあるとすると、次のコマンドで、それをマージできます。
1
|
|
すると、dem_merged.tif
ファイルをworld
ファイルの中で使用できますし、Gazeboはすべてのパッチがマージされた状態で、地形を読み込むでしょう。以下のスクリーンショットは、公式サイトのもので、カナリア諸島一帯を囲む4つのパッチをマージした結果だそうです。
最後に
自分で取得した地図をとりあえず表示することは出来ましたが、縮尺とかがおかしいままなので、解決したら、また投稿します。とりあえず今は、先に進みたいです。(02/04/2015 21:51)