自転車でGPS (準備編)
100km程度のロード・トレーニングをほぼ毎週行っているが、同じコースでは飽きてしまうので、毎回違ったコースを走るようにしている。そのため新コースの開拓は欠かせないし、それが楽しみのひとつでもある。事前に地図を見て大まかなコースを頭に描いておいてからスタートするが、初めて通る場所では道を間違えやすいので、ときどき地図を見て確認することが必要となる。しかしトレーニングのために自転車に乗っているので、一端走り出したなら(地図を見たい状況でも)極力止まりたくない。心拍が高まって調子よく走っているときはなおさらだ。しかし走りながら紙の地図を拡げて位置を確認するのは難しい。
そこで、現在位置に合わせて適切な地図を自動的に見せてくれる装置、すなわちGPSナビゲーションシステムが欲しくなる。クルマに関してはカーナビがすでに普及しているが、これそのものを自転車で使うのは無理だ。自転車ではハンディタイプが適する。
既存のハンディGPSシステムとして市販されているものではGarmin社のeTrexシリーズが有名である。地図表示ができないものもあるがそれは論外として、地図表示ができる eTrex Legend 日本版は標準価格59,800円。小型軽量で日常生活防水だが、6万円近い価格なのにモノクロ4階調液晶というのは納得しがたい。また日本詳細地図MapSourceは別売りである。
同社にはPDAタイプのiQue 3600もあり、320×480ドット16bitカラーのTFT液晶を有するが、現時点では国内販売はされていないようだ。また新製品GPSMAP 60Cは有望だがこれも国内販売はまだである。
他社の製品としてPDAタイプのMio168が発表され国内販売も予定されている(39,800円)。
カーナビならぬ自転車ナビとして考慮すべき点は
などがあげられる。
Zaurus SL-C860をハンディGPSに
とりあえず手持ちのPDA(Zaurus SL-C860,以下 Zaurus)をハンディGPSナビに仕立てることにする。同PDAは透過型液晶であるため、直射日光が当たるような屋外での使用に適さないことは承知の上だ。自転車での使用を最終目標とするが、まずはハンディGPSとして機能するかどうかを検証する。
| 用意したもの | 備考 | |
| PDA | SHARP Zaurus SL-C860 | 手持ち品。透過型液晶であることが弱点・・・ |
| GPSカード | IO-DATA CFGPS2 | 付属ソフトはZaurusでは使えない |
| GPSソフト | qpeGPS | Linux PDA用GPSソフト |
| PC用地図ソフト | カシミール3D | PC用地図ソフトの定番。フリーソフトウェア |
| 5万分の1地形図 | カシミール3D解説本に付属 | 付属の電子地図がお買い得 |
| 地図の切り出し | マップカッタープラグイン | PCからPDAに転送する地図画像pngファイルの作成 |
| 地図情報変換 | garmap2qpegps.rb | Garmap形式からqpeGPSのmaps.txt形式への変換。一部修正 |
| Windows用ruby | Ruby-mswin32 | 上記スクリプトを実行するため |
GPSカードの装着
Zaurusの電源を切り、CFスロットにCFGPS2を装着し、電源ON。
qpeGPSのインストール
qpeGPSのサイトから以下の2つのバイナリ・パッケージをダウンロードし、SL-C860にインストール。
zlib_1.1.4_arm.ipk
qpegps_0_9_2_arm.ipk
qpeGPSの設定
1. qpeGPSを起動する。画面の解像度は自動的に240×320となる。インストール後に初めて起動したときは
"Cannot connect to GPS!" と警告が出るがこれは異常ではない。この場合は中央の再試行ボタンを押す(Zaurusを再起動したときも同様)。
2. GPSタブを選択し、Args内の ttyS0 を ttyS3 に変更する(出典)。

3. Configタブを選択し、GEO DatumのGPSおよびMapの欄をともにTOKYO, Japanとする。
(CFGPS2のデフォルトの測地系がTokyoであるため)
4. その他、表示単位を適当に変更。

5. qpeGPSを終了。
6. ターミナルからログインして以下のコマンドを実行し、ディレクトリやファイルの属性を変更する。
% su
# chmod 777 /home/QtDesktop/qpegps/tracks
# chmod 777 /home/QtDesktop/qpegps/maps
# chown zaurus /home/QtDesktop/qpegps/maps/maps.txt
7. qpeGPSを再び起動し、GPSタブを選択。
8. CFGPS2ではGPSデバイス名は???となる。ここが緑色になればデバイスが正常に認識されている。
9. 数分以内に複数の衛星を捕捉し、緯度・経度が表示されればOK。
地図のインポート(動作確認用)
(カシミール3DおよびRubyのPCへのインストール手順は省略)
1. カシミール3Dを起動し、現在位置を含む5万分の1地形図を表示させる。
2. [表示]→[パレットの選択]から『マップカッター専用』を選択する。
3. [編集]→[選択範囲を決める]を選択し、現在位置を中心に切り取る矩形領域を適当に選択。縦横ともに1000ピクセル程度が適当か?
4. [ツール]→[マップカッター]→[切り出し]を選択。
出力形式はGarmapCE形式,
出力する測地系は Tokyo
ファイル種類はPNG形式
カラーは8ビットまたは4ビット
分割数は枚数で指定,横1枚,縦1枚
「GarmapCE形式では分割数を3x3以上にする必要があります」と警告が出るが気にしない。
OKを押せば画像ファイルを生成。カシミール3Dを終了。
5. DOS窓から画像ファイルを出力したフォルダに移動。
6. 修正済みのRubyスクリプトも同じフォルダにコピーしておく。
7. DOS窓からスクリプトを実行
ruby garmap2qpegps.rb mapinfo.dat > maps.txt
8. 必要なら地図画像ファイル名を適当に変更し、それに合わせて maps.txt 内の記述も変更しておく。
9. 地図画像PNGファイルと maps.txt をSL-C Zaurus の地図用ディレクトリ /home/QtDesktop/qpegps/maps/
にコピー。
動作確認
1. qpeGPSを起動し、Infoタブから地図画像PNGファイルを選択。

2. GPSタブで現在位置が捕捉できていることを確認してからMapタブを選択し、現在位置が中央に表示されればOK。

3. Trackタブからwriteとreadにチェックを入れファイル名を付けておくと、軌跡が記録され、画面に表示される。

地図のインポート(本番用)
qpeGPSは現在のところベクトル形式の地図を扱えない。PNG形式はBMP形式よりファイルサイズがコンパクトだが、縮尺5万分の1地図で自転車での行動範囲(例えば半径50km圏内)を網羅するならかなりの容量となる。そのためSDメモリカードの導入が必須となる。
カシミール3Dを使って必要な領域を選択し、分割数を適当に設定しマップカッターにより切り出せばよいが、qpeGPSのドキュメントに以下の記述がある。
If Your maps are overlapping by 240 pixel vertically and 320 pixel horizontally
(screen size), You will never see the end of a map, because qpeGPS then
will always select the map which fills the screen.
つまり、隣接する地図画像は画面サイズ分の重なりが必要らしい。隣接する複数の画像を並べて表示する機能を持たないのだろう。そのため地図画像を切り出す際に重なりを作る必要がある。しかしカシミール3Dのマップカッタープラグインはそのような仕様にはなっていない。重なりを持たせながら地図を1枚1枚切り出すのは非常に面倒だ。その作業を簡単に行う方法はこちら。
カーナビとして使ってみる
ハンディGPSとなったZaurusをとりあえずクルマで使ってみる。電源は100V ACインバータとACアダプタを介して供給。画面の輝度を上げれば日中の車内でも十分な明るさになる。固定した位置はカーナビ付きのクルマであればカーナビの画面が来る辺り。つまりフロントガラスよりも内側に引っ込んだ位置だが、GPSカードはかなり高感度。衛星をロストすることはほとんどなかった。簡易カーナビとしては十分に使える印象だ。ルート検索はできないが。
備考
デフォルトではqpeGPSを起動すると画面の解像度がQVGA(240×320)となる。起動アイコン長押しでSL-C
Zaurus本来の解像度(VGAモード;480×640)にすることができるが、VGAモードだとノイズの発生により衛星の捕捉性能が落ちるようだ。
今後の課題
1. 自転車への固定方法
2. ハブダイナモからの電源供給
3. 反射型液晶を有する別のPDAへの変更
実践編へ