空と山と暮らし

パラグライダーと山歩きの記録、ときどき家と暮らし。

パラナビ(仮称)- ツール

このページは2005年に作成したパラグライダーのレース用ナビゲーションソフト「パラナビ(仮称)」について記載しています。このブログを記載したきっかけについては、以下をご参照ください。

rinos.hateblo.jp

─ 目次 ─

トラックログ変換ツール(gba2trk)

■ 使用方法
gba2trk.exeはカートリッジ内のFlashROMに保存されたトラックログを、 カシミール等で読み込み可能なtrk形式に変換するための ツールです。FlashROMのイメージファイルを引数にして実行すると、ファイル 内を走査して、検出したトラックデータをtrk形式で出力します。
usage: gba2trk.exe filename [segment_option]

【使用手順】
1. FlashROMのデータをPC上へアップロードします。
PCとGBAをシリアルケーブルで接続する場合はGetTrackを参照してください。
ブートケーブルを使用する場合は、devmanツールで「FLASH 8M」を選択して[読み出し]を行います。 トラックログが保存されたブロックのみを選択してファイルへ保存しても良いですが、 全イメージ(1MB)を吸い上げても5秒程度なので、一括して読み込む方が簡単です。
devmanツールではなくbtcons.exeを使用している場合は、 "fr"オプションで0x01f00000オフセットから1mサイズで読み出しを行います。
パラレル接続等の独自ケーブルを使用している場合は09f00000hアドレスから100000hサイズ(1MB)を吸い上げてください。

2. コマンドプロンプトから、1.で保存したファイル名を引数にgba2trk.exeを実行します。

実行例:

% gba2trk.exe track.gba
20060218-2357.trk: Track=8603 Segment=2 (1.19byte/trk)
20060219-1058.trk: Track=1966 Segment=1 (0.96byte/trk)
20060219-1418.trk: Track=1061 Segment=4 (1.37byte/trk)
20060219-1636.trk: Track=1690 Segment=1 (0.72byte/trk)

gba2trkは、ファイル分割フラグ(パラナビの電源を切ったりサスペンドしたときにセットされる) を検出してログを複数のファイルに分割して出力します。 また、セグメント分割フラグ(衛星ロスト、GPS通信タイムアウト、マニュアルセグメントにてセットされる) を検出して、ファイル内を複数のセグメントに分割します。 セグメント分割フラグを無視して、1つのセグメントに結合する場合は 第二引数に次のsegment_option値を16進表記の論理和で指定します。
・0: セグメント分割を行わない
・1: 衛星ロストしたポイントでセグメントを分割する
・2: GPS通信タイムアウトしたポイントでセグメント分割する
・4: マニュアルセグメントを実行したポイントでセグメント分割する

3. 生成されたファイルを カシミール3D 等で開くと、トラックを確認することができます。

■ ダウンロード
トラックログ変換ツール 1.1版
ソースコード
ツール、ソースコードとも、改変、再配布をして頂いて構いません。

ブートケーブルを使用している場合は、トラックログ変換ツールに含まれるTrackLog.batを使用すると、 ROMデータの吸い上げからトラックログの生成まで一括して行えます。 このバッチファイルを使用する場合は、 オプティマイズさんの サイトから、別途btcons_usb_v3541.exeを ダウンロードしてください。 TrackLog.bat, gba2trk.exe, btcons_usb_v3541.exeを同一フォルダにコピーしてTrackLog.batを 実行すると、トラックログが生成されます。

■ 備考
パラナビはFlashROMを効率よく利用するために、データを圧縮してログを保存しています。 データの圧縮率はログ記録時の挙動によって変化しますが、 保存可能なトラック数の目安はトラックログメニューの 1トラックポイントあたりの平均使用バイト数 から確認することができます。

ログサイズ目安:
・パラ(サーマルコン): 1.4 byte/track_point
・パラ(穏やかコン):   1.1 byte/track_point
・自動車(街中):       1.2 byte/track_point
・自動車(高速道路):   1.1 byte/track_point
・自転車(川沿い):     1.0 byte/track_point
・徒歩(裏山):         1.3 byte/track_point

慣性運動に近いほど圧縮率が上がるため、のんびりフライトや高速道路走行時の圧縮率が高いです。 逆に、加速運動を行うと圧縮率が低下するため、高速センタリングを行うサーマルコンディションでは 大きく圧縮率が低下しています。
徒歩の圧縮率が予想以上に悪いですが、これはGPSを手に持って振って歩いていたから…かな?

使用可能なFlashROMの空きブロックは、音声データを外すと750KB程度なので、 ログ記録を目的に使う場合には、60万トラックポイント(約一週間分)を保存できます。

 

KML変換ツール(gba2kml)

■ 使用方法
gba2kml.exeはカートリッジ内のFlashROMに保存されたトラックログを、 GoogleEarthやGoogleMaps等で読み込み可能なKML形式に変換するための ツールです。FlashROMのイメージファイルを引数にして実行すると、ファイル 内を走査して、検出したトラックデータをKML形式で出力します。
usage: gba2kml.exe filename [segment_option [omit]]

【使用手順】
1. FlashROMのデータをPC上へアップロードします。 (ROMのアップロード方法は、「gba2trk」と同じです。)

2. コマンドプロンプトから、1.で保存したファイル名を引数にgba2kml.exeを実行します。

実行例:

% gba2kml.exe track.gba
20060218-2357.kml: Track=8603 Segment=2 (1.19byte/trk)
20060219-1058.kml: Track=1966 Segment=1 (0.96byte/trk)
20060219-1418.kml: Track=1061 Segment=4 (1.37byte/trk)
20060219-1636.kml: Track=1690 Segment=1 (0.72byte/trk)

gba2kmlでは、gba2trkと同じsegment_option(ファイル分割フラグ)のほかに、 追加でomit(省略)パラメータを指定することができます。 デフォルトのomitは0(省略なし)ですが、omitを1にすると1つおきにトラックポイントを 出力し、omitを n にすると n トラックポイントおきに出力を行います。
GoogleMapsでは、トラックポイント数が多いと描画速度が顕著に低下しますが、 適度にトラックポイントを省略することでレスポンスを改善することができます。 (直線近似の誤差に応じて自動でトラックを引き直すのが良いかもしれません。 要望があればいつか…。)

3. 生成されたファイルを Google Earth 等で開くと、トラックを確認することができます。

■ ダウンロード
KML変換ツール 1.1版
ソースコード
ツール、ソースコードとも、改変、再配布をして頂いて構いません。

ブートケーブルを使用している場合は、KML変換ツールに含まれるKMLogUSB.batを使用すると、 ROMデータの吸い上げからKMLファイルの生成まで一括して行えます。 このバッチファイルを使用する場合は、 オプティマイズさんの サイトから、別途btcons_usb_v3541.exeを ダウンロードしてください。 KMLogUSB.bat, gba2kml.exe, btcons_usb_v3541.exeを同一フォルダにコピーしてKMLog.batを 実行すると、トラックログが生成されます。

■ 備考
KML形式の座標情報はTrk形式と異なり、緯度と経度と高度のみを格納します。 Trk形式に含まれていた各座標での時刻情報はKMLには含まれないため、 KML形式に変換すると各座標の時刻情報が失われます。 なお、各セグメントの先頭の座標の時刻はPlacemark名として変換されるため、 トラックログを開始した時刻やセグメント分割した時刻は確認可能です。

トラックログ収集ツール(GetTrack)

■ 使用方法
GetTrack.exeは、シリアルケーブルを使用してGBAからPCへトラックログを吸い上げるためのツールです。 パラナビのメニューからトラックログのアップロードを行い、PC上でGetTrack.exeを実行すると、 トラックログデータ(圧縮形式)を収集して パソコンのファイルに出力します。なお、出力された圧縮形式のトラックデータはgba2trkや gba2kml を使用して他の形式に変換できます。
usage: GetTrack.exe port_name dest_file [baudrate]

【使用手順】
1. GBAとPCをPC接続ケーブルで接続します。
2. GBA上の[トラックログ]メニューから、[アップロード]を実行します。
3. COMポートを指定してGetTrack.exeを実行します。(2番と3番は逆の順番でも構いません)
4. GetTrack.exeはGBAと通信してトラックログを収集し、ファイルに出力します。

実行例:

% GetTrack.exe COM1: Log.bin 115200
GetTrack 1.0
GBA was connected.
Baudrate 115200
Read 32768 bytes

■ ダウンロード
トラックログ収集ツール 1.1版
ソースコード
ツール、ソースコードとも、改変、再配布をして頂いて構いません。

トラックログ収集ツールに含まれているバッチファイルを使用すると、 ログデータの吸い上げから.trk/.kml形式のファイル生成まで一括して行えます。 なお、バッチファイルは"COM1:"ポートをデフォルトポートとして使用していますので、 お使いの環境に合わせてポートを変更してご使用ください。 ポート設定は、テキストエディタでバッチファイルを編集することで変更できます。

■ 備考
シリアルケーブルでのログ収集はスピードが遅く時間がかかるため、 有効なトラックログ領域のみを圧縮形式で転送 するようにしています。 ログが大きくなるとログ量に比例して転送時間がかかるため、 ログをアップロードした後は[トラックログ]メニューの[ログクリア]からログを削除しておくと 次回のログ転送時間が短縮されます。 またGetTrack.exeの第3引数のボーレートの指定で、通信エラーにならない範囲で、できるだけ高いボーレートを 指定すると転送時間が短縮されます。
128KB(約10万ポイント)のログ転送時間の目安は以下の通りです。

・115200bps:  11秒
・ 57600bps:  22秒
・ 38400bps:  33秒
・  9600bps: 133秒

トラックログ収集ツールは、通信中にデータロストやデータ化けが多少あっても、 パケットサイズを縮小しながら再転送を繰り返し試みます。 ただし、ケーブル品質やPC環境によってはリトライしても通信できない 場合がありますので、その場合はボーレートを下げて通信してください。

 

ツール変更履歴


トラックログ変換ツール
・1.1版: シリアルケーブルでのログ収集時に、最後の64KBのログを出力しない場合がある不具合を修正。


KML変換ツール
・1.1版: シリアルケーブルでのログ収集時に、最後の64KBのログを出力しない場合がある不具合を修正。


トラックログ収集ツール
・1.1版: ツール一式に含まれるトラックログ/KML変換ツールを1.1版に差し替え。