Re: 駐機場について
inomaty
投稿数: 164
groundnet.xmlの説明です。長文になってしまいすいません(*_*;Parking Positionもここに記述しますが、基本的にAi機の空港内での移動経路に専ら使われます。このファイルが無いなりおかしいとAi機が誘導路を無視して草地の上をどんどん移動します。
実在の空港は複雑な作りになっているので、神戸空港をモデルとした簡単な空港で説明したいと思います。
黄色い線の部分がAi機の通るルートとなります。東寄りの風のとき、離陸時は0→1→4→5で滑走路へ移動し離陸、着陸時は着陸後3→2→1→0で停止します。これだけの空港で必要なgroundnet.xmlは以下の通りです。
<?xml version="1.0"?>
<groundnet>
<parkingList>
<Parking index="0" type="gate" name="No6" lat="N34 38.15616" lon="E135 13.67232" heading="354.61" radius="32" pushBackRoute="1" airlineCodes="" />
</parkingList>
<TaxiNodes>
<node index="1" lat="N34 38.08068" lon="E135 13.68102" isOnRunway="0" holdPointType="PushBack" />
<node index="2" lat="N34 38.12118" lon="E135 14.22498" isOnRunway="0" holdPointType="none" />
<node index="3" lat="N34 38.02428" lon="E135 14.23596" isOnRunway="1" holdPointType="none" />
<node index="4" lat="N34 37.99674" lon="E135 12.61824" isOnRunway="0" holdPointType="none" />
<node index="5" lat="N34 37.89870" lon="E135 12.62916" isOnRunway="1" holdPointType="none" />
</TaxiNodes>
<TaxiWaySegments>
<arc begin="0" end="1" isPushBackRoute="1" name="" />
<arc begin="1" end="0" isPushBackRoute="1" name="" />
<arc begin="1" end="2" isPushBackRoute="0" name="P4_P5" />
<arc begin="2" end="1" isPushBackRoute="0" name="P4_P5" />
<arc begin="2" end="3" isPushBackRoute="0" name="T6" />
<arc begin="3" end="2" isPushBackRoute="0" name="T6" />
<arc begin="1" end="4" isPushBackRoute="0" name="P1_P2_P3" />
<arc begin="4" end="1" isPushBackRoute="0" name="P1_P2_P3" />
<arc begin="4" end="5" isPushBackRoute="0" name="T1" />
<arc begin="5" end="4" isPushBackRoute="0" name="T1" />
</TaxiWaySegments>
</groundnet>
では各タグの説明をします。
<groundnet>・・・</groundnet>で全体を囲います。約束事とでもしておきましょう。
<groundnet>下に<frequencies>というタグがあるものもありますが、TaxiDrawというソフトで作ると自動で入れるらしく、あっても無くてもかまわないそうです。
<parkingList>タグ内でパーキングポジションを指定します。
indexの数字は他に同じように数字が無いように、連続した数字を入れていきます(飛んだ数字500とか1000がいきなりあっても問題無いようだが要検証)。
lat,lonはそれぞれ緯度、経度を入れます。度、分の形式なので緯度がN34.635936度となっている場合は0.635936×60=38.15616を用いて、N34 38.15616という風に記述します。
typeはそこに駐機できる機体の種類を設定します。ga (general aviation 小型機),cargo (cargo 貨物機),gate (commercial passenger traffic 旅客機),mil-fighter (military fighter 戦闘機),mil-cargo (military transport 軍用貨物機)の5種類が設定できます。()部分はもちろんいりません。
name,numberはそれぞれ利用してパーキングの名前を入れます。nameだけの使用でも問題ありません。
headingは駐機する機体の向きを入れます。
radiusはそこに駐機できる機体の最大サイズを設定します。目安はこちらのページを見てくだい。拙作の角田滑空場のパーキングポジションはこの値を6にして旅客機が出現しないようにしています。
pushBackRouteはtypeがgateとCargo(mil-cargoも?)のときに設定する必要があり、プッシュバックさせるノードの数字を入れます。Ai機は出発の際この点に向かってプッシュバックというか逆走をします。
airlineCodesはこのパーキングを利用できるICAO航空会社コードです。,(コンマ)を使って区切ります。どの航空会社が使うでも構わない時は空白にしておきます。
ParkingListのtype内がgaのみでしたらこれだけで済みますが、旅客機が行き来する空港でtypeにgateを入れたりすると<TaxiNodes>以下が無いとエラーが吐出されてFlightGearが強制終了したりします。<TaxiNodes>タグ内パラメータ特有のものは以下の2つです。
isOnRunwayは滑走路上の点かどうかを表し1ならば滑走路上、0ならばそれ以外の地点だよということを表します。
holdPointTypeはこのノードで停止が必要かどうかを表すタグで以下4種類ありますが、私はnoneとPushBackの2つしか見たことがありません。
noneは停止が必要ではないノード
nomalは通常停止で滑走路に進入する直前のノードに入れたりするらしいのですが、有効になっていない可能性があります。
CAT II/IIも有効ではないと思われます。
PushBackはプッシュバックにも使われるノードを表します。それぞれのパーキングからは一つのプッシュバックポイントしか選べませんが、プッシュバックノードを渡って長いプッシュバックルートを作ることも可能です。
最後に<TaxiWaySegments>タグです。このタグで各ノードをつないでいきます。
beginとendが始点ノード、終点ノードの数字となりますが、それぞれの数字を入れ替えた2組1セットにしないと一方通行になります。プッシュバックルートになる場合はIsPushBackRouteの数字を1にします。
この3セットあればAi TrafficのAi機がプッシュバックして離陸、着陸してスポットインが可能ですが、細かい動きをさせようとすると必然とノード数が増え、コードが長くなります。TerraSyncで得られる神戸空港の例ですとパーキングポジションとノードの合計数が125でコードの長さが408行です。手打ちでコードを打つのは不可能になってきます。一応グラフィカルに編集できるソフトもありますが、”CVS版のTaxiDraw” が必要になります。CVSというバージョン管理ソフトを使ってソースコードを取得し、ソースコンパイルする必要があります。Windowsでも無理ではないと思いますが、UbuntuLinuxを使ってもTaxiDrawをインストールするのにAが必要で、AをインストールするのにBが必要で・・・となりインストールに苦労しました。
そもそもTaxiDrawが旧世代のシーナリー製作ツールであり、現在はWorldEditor(WED)に移っています。WEDの最新版ではX-Plane10用のAi機のルートが製作できますが、FlightGearはまだこれが読み込めません。ゆくゆくはこれが利用できるするらしいのでうが、現状新しいAi機用のルートを製作しても喜ぶのはX-Plane利用者のみだと思います。あらゆるOSのユーザーがFlightGear向けのAi機のグランドルート製作ができるようになるのはまだ掛かるようです。
長くなりましたが、現状Win,Macの利用者はParkingPositionの設定までが関の山だと思います。一応pythonスクリプトでX-Plane10向けのAi機ルートを変換できるものがあるが、問題無いかチェックするにはTaxiDrawが必要であり、完璧にうまくいくかどうかは分かりません。興味ある方はこちらのサイトのGenerating many groundnet filesをご覧ください。
実在の空港は複雑な作りになっているので、神戸空港をモデルとした簡単な空港で説明したいと思います。
黄色い線の部分がAi機の通るルートとなります。東寄りの風のとき、離陸時は0→1→4→5で滑走路へ移動し離陸、着陸時は着陸後3→2→1→0で停止します。これだけの空港で必要なgroundnet.xmlは以下の通りです。
<?xml version="1.0"?>
<groundnet>
<parkingList>
<Parking index="0" type="gate" name="No6" lat="N34 38.15616" lon="E135 13.67232" heading="354.61" radius="32" pushBackRoute="1" airlineCodes="" />
</parkingList>
<TaxiNodes>
<node index="1" lat="N34 38.08068" lon="E135 13.68102" isOnRunway="0" holdPointType="PushBack" />
<node index="2" lat="N34 38.12118" lon="E135 14.22498" isOnRunway="0" holdPointType="none" />
<node index="3" lat="N34 38.02428" lon="E135 14.23596" isOnRunway="1" holdPointType="none" />
<node index="4" lat="N34 37.99674" lon="E135 12.61824" isOnRunway="0" holdPointType="none" />
<node index="5" lat="N34 37.89870" lon="E135 12.62916" isOnRunway="1" holdPointType="none" />
</TaxiNodes>
<TaxiWaySegments>
<arc begin="0" end="1" isPushBackRoute="1" name="" />
<arc begin="1" end="0" isPushBackRoute="1" name="" />
<arc begin="1" end="2" isPushBackRoute="0" name="P4_P5" />
<arc begin="2" end="1" isPushBackRoute="0" name="P4_P5" />
<arc begin="2" end="3" isPushBackRoute="0" name="T6" />
<arc begin="3" end="2" isPushBackRoute="0" name="T6" />
<arc begin="1" end="4" isPushBackRoute="0" name="P1_P2_P3" />
<arc begin="4" end="1" isPushBackRoute="0" name="P1_P2_P3" />
<arc begin="4" end="5" isPushBackRoute="0" name="T1" />
<arc begin="5" end="4" isPushBackRoute="0" name="T1" />
</TaxiWaySegments>
</groundnet>
では各タグの説明をします。
<groundnet>・・・</groundnet>で全体を囲います。約束事とでもしておきましょう。
<groundnet>下に<frequencies>というタグがあるものもありますが、TaxiDrawというソフトで作ると自動で入れるらしく、あっても無くてもかまわないそうです。
<parkingList>タグ内でパーキングポジションを指定します。
indexの数字は他に同じように数字が無いように、連続した数字を入れていきます(飛んだ数字500とか1000がいきなりあっても問題無いようだが要検証)。
lat,lonはそれぞれ緯度、経度を入れます。度、分の形式なので緯度がN34.635936度となっている場合は0.635936×60=38.15616を用いて、N34 38.15616という風に記述します。
typeはそこに駐機できる機体の種類を設定します。ga (general aviation 小型機),cargo (cargo 貨物機),gate (commercial passenger traffic 旅客機),mil-fighter (military fighter 戦闘機),mil-cargo (military transport 軍用貨物機)の5種類が設定できます。()部分はもちろんいりません。
name,numberはそれぞれ利用してパーキングの名前を入れます。nameだけの使用でも問題ありません。
headingは駐機する機体の向きを入れます。
radiusはそこに駐機できる機体の最大サイズを設定します。目安はこちらのページを見てくだい。拙作の角田滑空場のパーキングポジションはこの値を6にして旅客機が出現しないようにしています。
pushBackRouteはtypeがgateとCargo(mil-cargoも?)のときに設定する必要があり、プッシュバックさせるノードの数字を入れます。Ai機は出発の際この点に向かってプッシュバックというか逆走をします。
airlineCodesはこのパーキングを利用できるICAO航空会社コードです。,(コンマ)を使って区切ります。どの航空会社が使うでも構わない時は空白にしておきます。
ParkingListのtype内がgaのみでしたらこれだけで済みますが、旅客機が行き来する空港でtypeにgateを入れたりすると<TaxiNodes>以下が無いとエラーが吐出されてFlightGearが強制終了したりします。<TaxiNodes>タグ内パラメータ特有のものは以下の2つです。
isOnRunwayは滑走路上の点かどうかを表し1ならば滑走路上、0ならばそれ以外の地点だよということを表します。
holdPointTypeはこのノードで停止が必要かどうかを表すタグで以下4種類ありますが、私はnoneとPushBackの2つしか見たことがありません。
noneは停止が必要ではないノード
nomalは通常停止で滑走路に進入する直前のノードに入れたりするらしいのですが、有効になっていない可能性があります。
CAT II/IIも有効ではないと思われます。
PushBackはプッシュバックにも使われるノードを表します。それぞれのパーキングからは一つのプッシュバックポイントしか選べませんが、プッシュバックノードを渡って長いプッシュバックルートを作ることも可能です。
最後に<TaxiWaySegments>タグです。このタグで各ノードをつないでいきます。
beginとendが始点ノード、終点ノードの数字となりますが、それぞれの数字を入れ替えた2組1セットにしないと一方通行になります。プッシュバックルートになる場合はIsPushBackRouteの数字を1にします。
この3セットあればAi TrafficのAi機がプッシュバックして離陸、着陸してスポットインが可能ですが、細かい動きをさせようとすると必然とノード数が増え、コードが長くなります。TerraSyncで得られる神戸空港の例ですとパーキングポジションとノードの合計数が125でコードの長さが408行です。手打ちでコードを打つのは不可能になってきます。一応グラフィカルに編集できるソフトもありますが、”CVS版のTaxiDraw” が必要になります。CVSというバージョン管理ソフトを使ってソースコードを取得し、ソースコンパイルする必要があります。Windowsでも無理ではないと思いますが、UbuntuLinuxを使ってもTaxiDrawをインストールするのにAが必要で、AをインストールするのにBが必要で・・・となりインストールに苦労しました。
そもそもTaxiDrawが旧世代のシーナリー製作ツールであり、現在はWorldEditor(WED)に移っています。WEDの最新版ではX-Plane10用のAi機のルートが製作できますが、FlightGearはまだこれが読み込めません。ゆくゆくはこれが利用できるするらしいのでうが、現状新しいAi機用のルートを製作しても喜ぶのはX-Plane利用者のみだと思います。あらゆるOSのユーザーがFlightGear向けのAi機のグランドルート製作ができるようになるのはまだ掛かるようです。
長くなりましたが、現状Win,Macの利用者はParkingPositionの設定までが関の山だと思います。一応pythonスクリプトでX-Plane10向けのAi機ルートを変換できるものがあるが、問題無いかチェックするにはTaxiDrawが必要であり、完璧にうまくいくかどうかは分かりません。興味ある方はこちらのサイトのGenerating many groundnet filesをご覧ください。
投票数:10
平均点:5.00
投稿ツリー
-
駐機場について
(daitaro, 2016-3-2 16:56)
- Re: 駐機場について (inomaty, 2016-3-3 2:08)
- Re: 駐機場について (daitaro, 2016-3-3 14:29)
- Re: 駐機場について (inomaty, 2016-3-3 18:41)
- Re: 駐機場について (inomaty, 2016-3-4 0:21)
- Re: 駐機場について (daitaro, 2016-3-4 12:36)
- Re: 駐機場について (daitaro, 2016-3-4 15:50)
- Re: 駐機場について (inomaty, 2016-3-5 0:27)
- Re: 駐機場について (daitaro, 2016-3-5 15:49)
- Re: 駐機場について (inomaty, 2016-3-5 21:14)
- Re: 駐機場について (daitaro, 2016-3-6 14:19)
- Re: 駐機場について (inomaty, 2016-3-7 0:59)
- Re: 駐機場について (daitaro, 2016-3-8 8:51)
- Re: 駐機場について (inomaty, 2016-3-8 14:36)
- Re: 駐機場について (daitaro, 2016-3-8 20:59)