[是]

Zega (Zaurus equips GPS assistance)

ScreenShot

コンテンツ

履歴

2009.03.25
Version 0.13.1を公開
2009.03.22
Version 0.13を公開
2008.12.24
Version 0.12.1を公開
2008.12.23
Version 0.12を公開
2008.10.10
Version 0.11を公開
2008.09.13
Version 0.10を公開
2008.07.13
Version 0.9を公開
2008.06.29
Version 0.8.1を公開
2008.06.23
Version 0.8を公開
2008.06.18
Version 0.7を公開
2008.06.14
Version 0.6.2を公開
2008.06.06
Version 0.6.1を公開
2008.06.04
Version 0.6を公開
2008.05.27
Version 0.5.2(重大バグ修正版)を公開
2008.05.25
Version 0.5.1(バグ修正版)を公開
2008.05.23
Version 0.5を公開 0.4以前のバージョンから 0.5 に移行すると地図ファイルセットの設定がモバイルマップNavi用の内容に上書きされます。 バージョンアップ前に ~/Setting/Zega.conf のバックアップを取っておくのが吉です。
2008.05.11
Version 0.4を公開
2008.05.10
Version 0.3を公開
2008.05.05
Version 0.2を公開
2008.05.03
Version 0.1を公開

Zega ってナンすか?

Linux Zaurusで軽快に動作するGPSナビゲーションソフトウェアのつもりです。作者が自転車ツーリングでの使用することを想定して開発しています。

他のLinux Zaurus用のGPSソフトと何が違いますのん?

Zaurus用のGPSナビソフトとして以下が有名ですが、もう一個作ってみました。 他との違いは何かというと、今のところ特にないです。元MADMAPSユーザなもので、機能的にはMADMAPSに近いです。 正直 MADMAPS以外はほとんど使ったことがないのでMADMAPSとの違いを簡単に説明。

MADMAPSとの互換性

  1. MADMAPS用に作成したカスタムマップをそのまま使えます
  2. モバイルマップNaviの地図も表示可能です (Special Thanks! to eddieさん)
  3. MADMAPSと同様にGPS受信ソフトのNMEA-0183出力(生ログ)をファイルに保存します
  4. MADMAPSで作成したルートデータ(.mrdファイル)を読み込んでルート表示可能です
  5. NMEA-0183の「$GPGGA」情報を元に移動軌跡を表示します
  6. NMEA-0183の「$GPRMC」情報を元に現在の進行方向を地図上に表示

メリット

  1. 起動が早い (C++で作ってるので当然ですよね)
  2. カスタムマップのファイル数が多量でもマップ表示が軽快に動作します (カスタムマップのファイル情報をインデックス化するため)
  3. 消費メモリ量が少ないので長時間稼動しても不安定になりにくい、、、と思います

デメリット

  1. 捕捉したGPS衛星の天球図表示機能はありません (実装の予定も無いです)
  2. チェックポイント機能もありません (今後実装予定です)
  3. GPSログの読み込んで再生する機能もありません (今後実装予定です)
  4. NMEA-0183の「$GPGGA」「$GPRMC」以外は読み捨ててます (ログには記録してますが)
  5. GM_Liteの地図データ表示に対応しましたが、日本以外の地図は正しく表示できないものと思われます。
むー、デメリットが多いなぁ。地道に機能追加して行く予定です。

ライセンス

GPLバージョン2です。 2次配布する場合はソースも一緒に提供してあげて下さい。修正したものを提供する場合も同様です。

ダウンロード

人柱募集中です。以下からipkをダウンロードしてインストールして下さいな。
0.5.2 より前のバージョンは内臓HDDをサスペンドしてしまう重大バグが含まれています。 SL-C3000, SL-C3100, SL-C3200 では 0.5.2以降を使用して下さい。

旧バージョン

テスト環境

Zaurus: SL-C1000 (スペシャルカーネルのv18h), SL-C3000
GPSカード: BC-337 (CFカード, SiRF STAR III内臓)
マップとGPSログはSDに格納、テスト時はプログラムもSDに置いてます。

動作報告のあった機器

Zaurus:
SL-C3200
CF接続 GPSカード:
CFGPS2
(Zega.confの設定を「gpsOutput = Tokyo」に変更が必要)
I/Oポート接続 Bluetoothアダプタ + GPS受信機:
AirCable + WBT-201
(Zega.confの設定を「devFile = /dev/ttyS0」「startGpsCommand = stty 115200 < /dev/ttyS0」「stopGpsCommand =」に変更要)
USB接続 Bluetoothアダプタ + GPS受信機:
PTM-UBT3S + HI-408BT
(Zega.confの設定を「devFile = /dev/rfcomm1」「startGpsCommand = stty 115200 < /dev/rfcomm1」「stopGpsCommand =」に変更要)
USB接続 Bluetoothアダプタ + GPS受信機(その2):
CG-BT2USB02CW (HOSTアダプターSLIM「R」経由で接続) + GPS20C
CF接続 Bluetoothアダプタ + GPS受信機:
socket CF Bluetooth Card + Holux M-241
(Zega.confの設定を「devFile = /dev/rfcomm1」「startGpsCommand =」「stopGpsCommand =」に変更要)
USB接続 GPS受信機:
μpod + USBコネクタの形状を変換するホストアダプタが必要
(「mknod /dev/ttyACM0 c 166 0」をコンソールで実行するなどしてデバイスファイルの作成が必要
Zega.confの設定を「devFile = /dev/ttyACM0」「startGpsCommand =」「stopGpsCommand =」に変更要)

既知の問題

  1. GM_Liteの縮尺が大きい地図を正しく表示できていません。メルカトル図法に正しく対応するには地図データの扱い方の設計からやりなおさないと。。。(−_−;
  2. 「g」キーを連打するとZegaがフリーズすることがあります
  3. 距離計算結果が MapFan.Net での計算結果と結構異なります。地球を球と考えてるのがまずいのかな?
  4. GPSログ取得中状態で Zaurus を電源OFFするとプログラムがフリーズします (^^;; (端末ウィンドウ等から zega の実行プロセスを kill コマンドで終了して下さい)
  5. 地図はTokyo測地系、GPSカードの座標出力はWGS84測地系を想定しています。GPSカードが出力するWGS84測地系をTokyo測地系に簡易変換しています。簡易変換なので場所によっては表示位置が結構ずれるかも知れません。(^^;
  6. 地図のインデックス作成はファイル数に応じて時間が掛かかるのですがプログレスバー等で進行状況を表示する機能が実装できていません(フリーズしているように見えるかも知れませんがガマンして待ってあげて下さい (^^; )
その内に改善できると思います。解法をお持ちの方がいらっしゃいましたらアドバイスを下さい。

使い方

  1. まず、地図画像を用意して下さい。
    モバイルマップNaviの地図データを持っている場合は SD カードのルートディレクトリにコピーして下さい。(/mnt/card/sd_map が初期値です) モバイルマップNaviの地図データのみを使用する場合は 4. に進んで下さい。
    GM_Liteを使っている方はGM_Liteで地図が見えていればOKです。 4. に進んで下さい。
    GIFファイル, PNGファイル, ビットマップ(BMP)は読めます。(JpegもOKかも・・・あ、でもTokyo測地系の衛星写真ってなさそうですね) 画像ファイルのネーミングルールは「MAD MAPSカスタムマップ登録方法」を参照して下さい。 地図は madmaps_from_mapfan.pl 等を使って入手するか自作して下さい。 今のところ、地図に設定する座標の測地系はTokyo測地系にしか対応できていません。GM_Liteの地図データはZegaの内部処理でTokyo測地系に変換して使用しています。

  2. 縮尺の異なる地図画像は別々のディレクトリに分けて下さい。

  3. 同一縮尺で数千ファイル超を扱う場合はファイルを小まめにサブディレクトリへ振り分けて下さい。
    一つのディレクトリに多量にファイルが存在するとファイルアクセスの性能が低下します。サブディレクトリを作成して適度にファイルを分散させて下さい。 自分は1つのサブディレクトリに250ファイルずつ格納しています。 サブディレクトリを掘る際のネーミングルールは特にありません。任意の数字やアルファベット1文字で良いです。 やる人はいないと思いますがサブサブディレクトリに画像を配置することも可能です。

  4. Zega を起動して「Cancelキー」で一旦終了します。

  5. /home/Zaurus/Setting/Zega.conf に設定ファイルが作成されるのでマップ情報等を修正して下さい。 設定ファイルの内容は以下のとおりです。
    設定項目一覧
    セクション
    設定項目説明デフォルト値
    Color
    currentPointColor現在位置の△の色(#RRGGBB で指定)#00FF00 (緑色)
    destinationLineColorルート終点を示す方向線の色(#RRGGBB で指定)#EF810F (オレンジ)
    obsoluteLogColor古い移動軌跡の色(#RRGGBB で指定)#00FFFF (水色)
    recentLogColor最近の移動軌跡の色(#RRGGBB で指定)#FFFF00 (黄色)
    routeColorルート表示の色(#RRGGBB で指定)#FF0000 (赤色)
    CurrentCoordinate
    lat初期表示位置の緯度(Ndd.mm.ss.ss or Sdd.mm.ss.sss の度分秒表記)東京駅を指してます。あ、舞浜にしときゃ良かった。
    lon初期表示位置の経度(Eddd.mm.ss.ss or Wddd.mm.ss.sss の度分秒表記)
    Data
    dirルート情報を選択する際の初期ディレクトリ/mnt/card
    GPS
    UpdateIntervalGPS受信中の画面を再描画する間隔 (単位はミリ秒)1000 (1秒間隔)
    autoCenteredBoundsGPS測位結果が画面端の場合に自動センタリングする範囲(画面端からの幅をピクセル単位で指定)
    240以上を設定すると常に地図がセンタリングされる
    現在位置を画面中央に寄せたい & Zaurusにやさしい設定は VGA表示なら 200 くらいかな
    50ピクセル
    devFileGPSログ取得元デバイスファイルパス/dev/ttyS3
    logDirGPSログ出力先ディレクトリ(指定ディレクトリのgps.logにログを出力)/mnt/card/gpslog
    gpsOutputGPSログ出力の測地系を指定
    「WGS84」: 世界測地系
    「Tokyo」: Tokyo測地系
    WGS84
    guessLowLevelFixedGPS測位中の条件に捕捉衛星数 3つの場合を含める
    「1」: 含める, 「0」: 含めない
    0 (含めない)
    obsolateTerm地図上に表示する古い移動軌跡の保持間隔 (測位できたを指定回数ごとに内部メモリへ保持します)15回毎
    recentLogNum地図上に表示する最近の移動軌跡の保持データ数600個(GPSのサンプリングが1秒間隔の場合、約10分前までを詳細に表示する)
    recentTerm地図上に表示する最近の移動軌跡の保持間隔毎回 (測位できなかった場合はデータを保持しない)
    startGpsCommandGPS受信開始前に実行するコマンドcardctl resume 0;stty 4800 < /dev/ttyS3
    CFスロットをレジュームして、GPSログ取得元デバイスのボーレートを4800bpsに変更
    stopGpsCommandGPS受信終了後に実行するコマンドcardctl suspend 0
    CFスロットをサスペンド
    General
    controlZaurusSuspend設定値「true」でGPS受信中はZaurusがサスペンドしないように制御する
    LCDの減光とスクリーンセーバーの無効化も行う
    設定値「false」で無効化
    true
    InfoView
    GpsInfoFormatGPS機器から取得した情報をHTMLタグっぽく表示制御
    利用可能なタグの一覧の説明
    <font 12><color #0000FF>GPS Info<br><font 16><color #000000><time 540><font 12> (<satellite_num>)<br>lat: <lat><br>lon: <lon><br>direction: <direction><br>speed: <font 18><speed><br><font 12>height: <height><br>remain: <font 18><color #FF0000><route_remain><br><font 12><color #000000>next: <font 16><route_next>
    GpsInfoWidth情報表示枠幅120ピクセル
    GpsInfoX情報表示枠のX位置(マイナスの場合は下限)-5ピクセル
    GpsInfoY情報表示枠のY位置(マイナスの場合は右限)32ピクセル
    RouteInfoFormatルート情報など地図を書き換える際に更新する情報をHTMLタグっぽく表示制御
    利用可能なタグの一覧の説明
    <font 12><color #0000FF>Route Info<br><color #000000>total: <route_total><br>begin: <route_begin><br>end: <route_end>
    RouteInfoWidth情報表示枠幅100ピクセル
    RouteInfoX情報表示枠のX位置(マイナスの場合は下限)5ピクセル
    RouteInfoY情報表示枠のY位置(マイナスの場合は右限)-5ピクセル
    Keys
    cursorMoveDenカーソルキーで移動する表示地図の範囲を 1/n で指定(分母を指定する)2 (50%)
    shiftCursorMoveDenShift + カーソルキーで移動する表示地図の範囲を 1/n で指定(分母を指定する)1 (100%)
    Maps
    currentMap初期表示する地図ファイルセット0 (1番目のマップ)
    GM_LiteMapDirGM_Lite地図データ格納ディレクトリ/mnt/card/gm_lite/imgs
    map[n]地図ファイルセットの名称,地図データの種別,種別ごとのパラメータ
    種別「M」はモバイルマップNaviデータ: パラメータは縮尺(0〜4)
    種別「G」はGM_Liteの地図データ: パラメータは縮尺(0〜19)
    種別「C」はカスタムマップ: パラメータは地図ファイルセット格納ディレクトリ
    map1 = モバイルマップNavi日本全図,M,0
    map2 = モバイルマップNavi全域地図,M,1
    map3 = モバイルマップNavi広域地図,M,2
    map4 = モバイルマップNavi中域地図,M,3
    map5 = モバイルマップNavi詳細地図,M,4
    map6 = GM_Lite地図6,G,6
    map7 = GM_Lite地図7,G,7
    map8 = GM_Lite地図8,G,8
    map9 = GM_Lite地図9,G,9
    map10 = カスタムマップ 1/150000,C,/mnt/card/maps/1
    mapNum地図ファイルセットの数8つ
    mobileMapNaviMapDirモバイルマップNavi地図データ格納ディレクトリ/mnt/card/sd_map
    Width
    destinationLineWidthルート終点を示す方向線の線幅2
    logWidth移動軌跡の点の直径6
    routeWidthルート表示の線幅6

  6. Zega を起動すれば設定ファイルの内容にあわせて動作します。キーマッピングは以下のとおりです。
    キー動作説明
    カーソルキーキーを押した方向へ地図を東西南北へ50%ずつ移動
    Shift + カーソルキーキーを押した方向へ地図を東西南北へ100%ずつ移動
    Fn + カーソルキーキーを押した方向へ地図を東西南北へ1ピクセルずつ移動
    Cancelキープログラム終了
    g (GPS)GPS受信 ON/OFF (CFカードのレジューム・サスペンドの制御とデバイスI/Oの通信速度を4800bpsに設定します)
    c (centered)GPS受信中に現在位置の地図が画面に表示されていない場合、GPSで測位した座標に自動でセンタリングする機能のON/OFF
    スペースキーGPSで測位した座標に自動でセンタリング (GPS測位中のみ有効)
    f (full screen)全画面表示に切替え
    l (load)ルート情報ファイルの選択・読み込み (ALPSLABのルートデータ(KML形式)とMADMAPSのルートデータ(.mrdファイル)が読み込み可能です)
    GPSログファイル(.logファイル)を指定すると過去ログとしてロードし軌跡を地図上に表示します。
    s (save)ルート情報ファイルの保存 (MADMAPSのルートデータ(.mrdファイル)形式で保存します)
    0 〜 9地図ファイルセットの切り替え
    a (add)現在位置をルートポイントの最後に追加
    BS or Del最後のルートポイントを削除
    o (opposite)ルートの反転
    r (route)ルートの表示・非表示を制御
    h (history)GPS測位軌跡の表示・非表示を制御
    d (destination)ルート終点を示す方向線の表示・非表示を制御
    D (debug)デバッグ情報出力のON/OFF制御
    GPS受信状態などのデバッグ情報を標準出力(コンソール)に出力
    コンソールからZegaを実行しないとデバッグ情報は参照できません

地図を追加・更新した場合の反映方法

地図ファイルを追加・更新・削除した場合は地図ファイルセットが格納されているディレクトリに存在する maplist.dat(地図インデックスファイル) を削除して下さい。 次にZegaで地図を表示・切り替えを行った際に地図インデックスファイルが自動生成されます。
# 地図インデックスファイルを再作成する機能も実装せねば

画面解像度の変更設定

VGA解像度じゃイヤンな場合は以下の手順でQVGA表示可能です。
  1. アプリケーションのホーム画面でZegaのアイコンをタップしてプロパティ画面を表示
  2. 「アプリケーションをVGA(480×680ドット)の画面に最適化して実行する」のチェックを入れる
  3. QVGA解像度でアプリケーションが起動するようになります
Zaurusの仕様でQVGA起動の場合は縦長(240×320ドット)でしか動作しないです。 チェックを外すとVGA解像度で起動します。 アプリケーション起動設定のプロパティ QVGA起動時のScreenShot VGA起動時のScreenShot

関連情報へのリンク

Zegaに関連する情報元へのリンク (URLのアルファベット順)
  1. NMEA-0183フォーマット
    GPS機器の標準的な出力メッセージの仕様
    京都大学の研究室が公開している「GPSの森」のコンテンツの一部です。
  2. 我が輩は、やっぱりB型である。。。
    ユーザ視点で色々と要望を出して頂いているeddieさんのブログです。バイク用ナビとしてZegaを使用されてます。
  3. Zaurus/qpeGPS
    「やまきさんの運営するWikiサイト」っちゅーことで、ここから「madmaps_from_mapfan.pl」を取得できます。
  4. ぷちのいず
    qgmap(GM_Liteの地図ビューアかな?)を公開されているbucchiさんのブログです。
    開発スピードとレスポンスがZegaの比ではないです。(^^;
    rubyの言語ポリシー「多様性は善なり」(まつもとゆきひろさん曰く)の精神に則り、同種のアプリが多数開発されることで生まれる相乗効果に期待大です。
  5. 実用工房
    GM_Lite の開発や Zaurus用に Qpdf3 のパッケージングなどをされている teraさん のブログです。 GM_Lite を重宝させて頂いております。
  6. ZaurusFan! - PDA-Zaurusの非公式ポータルサイト
    Masanoriさん主催のZaurusユーザ向けポータルサイトです。Zegaの紹介とヘッドラインで自分のブログをウォッチして頂いてます。(^^; Zaurusのことでわからないことがあればここの掲示板に問い合わせするのが吉です。2chと違って皆さん親切に回答されていますよ。(とか書いたら2chで叩かれるかな;;)
こっちのサイトもリンクしてちょって方は下のブログ経由でご連絡下さい。
勝手にリンクしちゃイヤンな方はサイトを閉鎖してご連絡下さい。

バグ報告・要望・質問について

バグ報告や優先的に実装して欲しい機能または使い方などについての質問がある場合はこっちのブログにコメントして下さい。

今後の開発予定

不定期に実装を続けていく予定です。いつになるかわかりませんが。。。(^^;
これまでに書いた内容以外で計画している機能は以下のとおり。
MapFan.Netのルートデータ読み込み
MapFan.Netのルートデータにはチェックポイント情報が含まれているので使えると便利かも。
Garmin MapSource format 対応
禁断の地図画像をインターネットからダウンロードする機能の方が絶滅寸前のZaurusっぽいかな (^^;
GarmapCE用のmapinfo.datとqpeGPS用のmaps.txtの読み込み対応
mapinfo.datかmaps.txtを見つけるとZegaカスタムマップ用の地図インデックスファイルに変換して読み込む。
ブックマーク機能
お気に入り場所などを分類してアイコン表示、一発ジャンプする機能。
高度グラフ表示機能
移動軌跡とルートデータより高度グラフを表示。
到着予定時刻表示
移動軌跡とルートデータを元に目的地到着予定時刻を表示。
音案内
ルートデータから右折・左折ポイントを自動判別しポイント近辺で音による自動通知を行う。 ルートから外れた場合も同様に音で通知できると便利かも。
タイムアタック機能
スタートラインとゴールラインをあらかじめ設定しておき、スタート〜ゴールの経過時間を自動計測。 他の人のログを幻体としてリアルタイムに同時表示するのも面白いかも。
WGS84化
地図のWGS84測地系対応とGPS情報のTokyo測地系対応。内部の座標表現をWGS84(世界測地系)で統一する。
PHS基地局情報の取得対応
PHSカードの基地局情報をGPS代わりにする
オプション設定画面
設定の変更をオプションダイアログで設定可能とする。
キーボードでのメニュー制御
「Menu」ボタンでメニューにフォーカスが移動するようにする。
GPS測位中の電源ボタン制御
GPS測位中は電源ボタンを押しても終了しないように制御する。
選択状態をメニュー表示へ反映
縮尺やルートの表示・非表示などをメニューに反映する。
現在位置を囲む○の半径を距離に応じて設定
○の半径を縮尺毎に実際の距離で設定可能とする。
地図表示のヘディングアップモードの追加
GPS測位中で移動速度が一定値以上の場合に進行方法にあわせて地図を回転するモードを追加する。
GPS受信状態の表示
GPS受信中は左上の●が大小するなど補足衛星の数に応じて受信感度が分かるようにする。
トップページへ戻る