GPSの泥沼(^^;


バイクにもナビが欲しいと、ある日突然HPのiPAQ rx5965というGPS付きのポケットPC(いわゆるPDA)を買ってしまいました。
PDA系は昔っからそうですが、ミイラ取りがミイラになるというか、手段が目的になるというか....。
ともかく、楽しい(?)泥沼が始まりました。(^^;
Fazerのページほどまじめに書きませんが、自分用のメモがわりに、思いつくまま記録しておきます。

目次:

  1. GPS関連アプリ
  2. SirfTechを使いこなす
  3. GPSレコーダーやアプリを評価する上で難しい点
  4. SiRF Star IIIのパラメータ考
  5. パラメータ参考値
  6. DGPSは有効?
  7. b-walkerでNMEAログを保存する方法(覚え書き)
  8. 本革モバイルスーツに入れてGPS受信大丈夫?
  9. GPSファームウェアアップデート

  10. 「バイクにナビ」(Fazerのページへ)
※最近更新したところには(ごく最近)か(比較的最近)をつけてあります。

関連リンク:

  • Vector
    WM5で使えるソフトもある程度あります。
  • FreewarePPC.com
    やっぱPPCはアメリカのほうが活発ですね。
  • PocketGear.com
    こちらは有料ソフトが多いかも。
  • ハイパーファクトリー
    iPAQ本体はここでお世話になりました。
  • PDA工房
    バイクに取り付けるためのRAMマウントはここで。

  • ケースやバッテリーなど、モバイルグッズが沢山あります。

GPS関連アプリ

ナビ専用機でなくポケットPCを使うメリットは、有料/無料の多くのアプリケーションが使えるという点です。
メモ代わりに、現在iPAQで使っているGPS関連のアプリについて、ウェブページへのリンクとiPAQでのCOMポートの設定をメモしておきます。
(いじくったあげく何が標準かわからなくなりがちですが、iPAQのほうは設定->GPSで、プログラムポートをCOM7、ハードウェアポートをCOM1、ボーレートを9600、自動管理にチェックの状態です。)
このページのトップへ

SirfTechを使いこなす

作者のウェブページからダウンロードしてPPCにインストールします。
分け判らずに弄くると、GPS使用不能になって戻し方が判らなくなるので、最低限このページの説明と作者ページのReferencesにある文章は一通り目を通してから使うほうが良いでしょう。

大原則

通常NMEAプロトコル(ASCII)になっているSiRFチップと本体の通信を、SiRFプロトコル(バイナリ)に変更してからいろいろな設定をし、最後にいつものボーレート(iPAQは通常9600)のNMEAプロトコルに戻す。慌てると、最後のNMEAに戻すところをしくじって、GPSが使えなくなる。

基本操作

※以下の説明は、Version 1.28を参考にしています。
  1. すべてのGPSアプリケーションを完全に終了させる。
  2. SirfTechを立ち上げる。(2度目からは次の3、4は不要です。)
  3. メニューバーの[Comm]を押し、[Find Port & Baud]を押す。
  4. 自動的にCOM1が9600baudで開かれるはず。下にprotocol NMEAと表示され、Messagesの数が増えてゆけばOK。右上の[ok]を押す。
  5. NMEAデータが自動で表示される。何が表示されるかは、電波をとらえているか否か、さらにGPS情報を補足しているか否かで違う。(GPS捕捉すると、ナビソフトが取り込んでいる主な情報がすべて出てくるので、眺めておくと以後の参考になるかと。)
  6. メニューバーの[NMEA]->[Set Serial Port (Switch to SiRF)]を押す。Nmea Time が刻々と表示されているはず。
  7. デフォルト設定のまま、[Set]を押す。一息おいて[=Baud]を押すと、Nmea Timeが停止する代わりにSirf Timeが刻々と表示されるようになる。右上の[ok]を押す。
  8. 今度はSiRFデータが自動で表示される。NMEAデータより情報量が多いはず。
  9. メニューバーの[SiRF]->[Mode Control]あるいは[Static Navigation]などを押し必要な設定をする。どれも、基本は、次のようになる。
    1. [Get]ボタンを押して最新状態を表示。
    2. 必要なパラメータを変更し[Set]ボタンを押す。
    3. 一息置いてから[Get]ボタンを押して、変更されたことを確認。
    4. 右上の[ok]で閉じる。
  10. メニューバーの[SiRF]->[Switch to NMEA Protocol]を押す。Message Rateをいじくりたい場合(下記参照)を除き、どのパラメータもいじらずに[Set]を押す。一息おいて[=Baud]を押すと、Sirf Timeが停止する代わりにNmea Timeが刻々と変化するようになる。右上の[ok]を押す。
  11. メニューバーの[Exit]を押して、SirfTechを終了させる。

※効果を確認する際、VisualGPSceやb-walkerの衛星画面など、衛星信号のバーグラフが出るアプリを最初にトライすること。正常なら、すぐに衛星番号が表示され、徐徐に信号を補足してゆくのが判るはず。何秒か待って衛星番号すらでなければSiRFとアプリのコミュニケーションが取れていない。(よくあるパターンとしては、NMEAモードに切り替わっていない、Baud Rateを変えてしまった、Message Rateで必要な情報を0にしてしまった、など。)衛星番号さえ出れば、あとは電波と状況次第で数秒〜数分でGPSデータを出力するはず。

このページのトップへ

GPSレコーダーやアプリを評価する上で難しい点

※このページの記録も、これらのことを念頭に置いて読んでくださいね〜。

このページのトップへ

SiRF Star IIIのパラメータ考

いろんなパラメータについて、現在効果を実証中です。随時更新しますが、ある程度書き留めておきます。ちなみに、ここに挙げるパラメータは、変化を実感しやすいものからしにくいものへ、およその順番に並んでいます。DOP Maskから下は、実用上問題が生じるくらい派手に変えないかぎり、変えてもすぐには差を感じないと思います。
※詳しくは、SiRFstarIII Evaluation Kit User Guide を参照。
なお、ここに記したデフォルト値は私のiPAQの場合(iPAQリビジョン1.0、ROMは1.00.00、SiRFのSoftware VersionはGSW3.2.1_3.1.00.12-SDK001P1.00)ですので、その後変更されているかもしれません。

Static Navigation

この機能を有効にすると、移動速度がある値以下のとき位置と方位を固定する。自動車(バイク)用途向け。信号で止まっている時などに地図のふらつきやヘッドアップモードでの回転がなくなる。ただし、徒歩などの移動速度が遅い場合には、しょっちゅう動きが滞るので使わないほうが良い。また、自動車用途でも、停車状態から動き出したときに動き出しが遅く感じるかもしれない。
デフォルトではオンになっている。
私の好みとしては、この機能は使わないほうが良いです。停車時に地図がくるくる回るのは、最新版のb-walkerではアプリ側で抑制されています。

Track Smoothing

位置情報になんらかのスムージングフィルターをかける。位置の軌跡がスムーズになり、マルチパス(ビルなどで反射した電波が重なること)などで位置がバラツクのを抑える効果がある。ヘッドアップモードの地図などで、徒歩時に地図がくるくる回って見づらいときは、これを入れると効果がある。ただし、当然最新の位置に過去の軌跡の影響が残るわけで、細かい動きに対する追従性は悪くなる。
デフォルトではオフになっている。
これは使うべきか否かは微妙ですね。移動のログを取るときには使ったほうが軌跡がきれいです。バイクでは使って違和感はないですが、徒歩では曲がり角でのレスポンスの遅れが若干気になります。アプリから、モード切替が簡単にできれば良いのですが....
何度か東京都心部で使う機会があったのですが、ビルに囲まれた路地で使う場合はこれをオンにしておいたほうが良いと思います。マルチパスのせいかと思うのですが、オフで使うと牛若丸の八方飛びよろしくあちこち飛び回って、自分がどこにいるのか判りづらいのですが、オンにするとややましになります。

Altitude Hold Mode

GPSでは緯度、経度、高度、時刻という4変数を計算するので、本来4つ以上の衛星電波が必要(3Dモード)。これが電波状況によって3つ減ったときには、高度を固定して計算しようというのがAltitude Hold Mode(2Dモード)で、通常Autoにしておけば補足衛星が3つに減ると自動的に2Dモードになる。もちろん2Dモードで固定した高度が間違っていると水平位置もずれる。100m高さ誤差があると、水平位置に30mの誤差を生じるとのこと。
デフォルトではAuto。
これはナビ用途ではAutoにしない手はないです。

Altitude Hold Source

2Dモードになったときに固定する高度の値をどうするか。Last computedなら、最後に3Dモードで計測された高度を使い、Fixedなら別に設定した値で固定する。海の上ならFixedでもありか?
デフォルトでLast computed。
通常Last computedにしておけばOK。

Degraded Mode

補足できる衛星がさらに減って2つか1つになったときに使うのがDegraded Mode。さらに1つか2つ変数を減らす必要があるので、衛星からの信号の到達時間の変動(クロック)あるいは装置の移動方向を、それまでの値を使って固定する。設定は次の5種類。
  • Use direction then clock hold - まず移動方向、次にクロックを固定
  • Use clock then direction - まずクロック、次に移動方向を固定
  • Direction hold only - 移動方向の固定まで(衛星は最低2つ必要)
  • Clock hold only - クロックの固定まで(衛星は最低2つ必要)
  • Disabled - 衛星が3つ未満でもDegraded Modeを使わない(Dead Reckoningがenableなら3つ未満になると即Dead Reckoningになる。)
  • デフォルトでは.....忘れた。(^^; 確かDisabledだったような。
    経験上、捕捉衛星数が1つになるまで頑張るとろくな結果になりません。今はHold clockにしていますが、バイクで使うのならHold directionのほうが良いかもしれません。

    Degraded Timeout

    Degraded Modeでは、時間と共に誤差が増大していくので、このモードを使い続ける時間にリミットをかける。
    デフォルトは30秒。
    経験上、街中徒歩では、ビルや屋根のせいで結構な頻度でDegraded Modeに入り込みます。またバイクでも、高架下や短いトンネルなどでこのモードになります。ちょっと長いように思いますが、当面デフォルトの30秒にしておきます。

    Dead Reckoning Timeout

    ついに捕捉衛星数が0になってしまったときに現れるおばけモードがDead Reckoningモード。最後に得られていた移動方向と速度を保つ。
    デフォルトでは15秒。一定速度直線走行でトンネルに入ったときなどは、これで15秒間勝手に走る。
    高速道路のトンネルなどでは有効ですが、徒歩やバイク市街地走行では、あらぬ方向にどんどん進むのでやっかいです。「おいおい、そっちとちゃうやろ!」とつっこみを入れたくなります。(笑) これは0にして、Dead Reckoningモードは使わないことにします。潔く電波が途絶えたら止まってもらいます。

    DOP Mask

    DOP (Dilution of Precision)とは衛星の位置や信号強度などから推測される位置精度。これが大きくなるような衛星からの信号を計算に使うと誤差が増える要因になる。DOP Maskは、誤差の大きい衛星からの信号を使わないようにする。誤差の大きい衛星信号を使わないというメリットと、使える衛星数が減るというデメリットが生じる。設定は次の5種類。
  • Auto PDOP/HDOP - 衛星4つ以上ならPDOPマスクを使い、3つならHDOPマスクを使う。
  • PDOP only - PDOPマスクのみ使用
  • HDOP only - HDOPマスクのみ使用
  • GDOP only - GDOPマスクのみ使用
  • Disabled - DOP Mask不使用
  • デフォルトではDisabled。
    Auto PDOP/HDOPにして、PDOP ValueやHDOP Valueは5にしています。これを使うほうが、計算誤差による不可思議な横移動が減ります。

    Elevation Mask

    マルチパスを含む確率が高くなる水平線に近い位置にある衛星からの信号を計算に使わないようにする。誤差の大きい衛星信号を使わないというメリットと、使える衛星数が減るというデメリットが生じる。
    デフォルト値は.....忘れた。(^^;
    街中ではこれを厳しくすることによる捕捉衛星数減のほうが影響が大きいように思います。ダメな衛星は、建物によって電波が遮られるので勝手にマスクされるからかもしれません。DOP Maskとは逆に、Navigation Maskを5.0に減らしました。Tracking Maskはデフォルトの0.0のまま。

    Power Mask

    上記2つと同様、信号強度の弱い衛星も誤差を増やす可能性が高いので、それを計算に使わないようにするもの。厳しくすると、やはり使える衛星数が減るというデメリットが生じる。
    iPAQデフォルトは12dB-Hz。
    ここはSurfTechとrx5965のGPSチップとの間に互換性の問題があるみたいで、うまく設定が変えられませんでした。SurfTechでは、SiRFの(かつての?)仕様で20〜50dB-Hzでしか設定できないようです。現状、へたに触らないほうが良いでしょう。
    ※ファームウェアバージョンアップで変えられるようになりました。

    NMEA Message Rate

    NMEAでは目的に合わせて様々なデータを出力します、デフォルトでは、以下の6種のメッセージが出力されています。名前の後の()はデフォルトでのレート(秒)、アンダーラインを付けたのは手持ちのソフトのどこかで使われているらしい値です。
  • Global Positioning System Fixed Data
    GGA (1):UTC時刻、緯度、経度、Fixインジケータ、使用衛星数、HDOP、海抜高度、ジオイドセパレーション、DGPS情報
  • Geographic Position - Latitude/Longitude
    GLL (1):緯度、経度、UTC時刻、ステータス、DGPSモード
  • GNSS DOP and Active Satellites
    GSA (5):2Dモード設定、同状態、位置解析に使用した衛星(最大12個)、PDOP、HDOP、VDOP
  • GNSS Satellites in View
    GSV (5):メッセージ行数、メッセージ行番号、視野内衛星数、{衛星ID、仰角、方位角、SNR値}繰り返し
  • Recommended Minimum Specific GNSS Data
    RMC (1):UTC時刻、ステータス、緯度、経度、対地速度、移動方向、日付
  • Course Over Ground and Ground Speed
    VTG (1):移動方向、対地速度(ノット)、対地速度(km/h)
  • ※詳しくは、NMEA Reference Manual を参照。

    以下は、デフォルトの状態でのNMEAログの例です。
    GPS作動中はこんな文字が延々と読み込まれているわけです。
    $GPGGA,134221.000,35xx.0088,N,140xx.9810,E,1,05,1.8,20.9,M,39.4,M,,0000*6F
    $GPGLL,35xx.0088,N,140xx.9810,E,134221.000,A,A*53
    $GPGSA,A,3,30,18,14,05,12,,,,,,,,2.1,1.8,1.0*30
    $GPGSV,3,1,11,05,74,099,12,12,67,081,17,30,61,184,17,22,56,260,17*7D
    $GPGSV,3,2,11,18,47,198,25,14,38,316,18,09,34,055,,31,09,260,*77
    $GPGSV,3,3,11,06,05,162,,26,03,117,,07,00,172,*4C
    $GPRMC,134221.000,A,35xx.0088,N,140xx.9810,E,1.08,209.56,260207,,,A*64
    $GPVTG,209.56,T,,M,1.08,N,2.0,K,A*0E
    $GPGGA,134222.000,35xx.0080,N,140xx.9802,E,1,04,2.0,21.0,M,39.4,M,,0000*65
    $GPRMC,134222.000,A,35xx.0080,N,140xx.9802,E,1.81,246.13,260207,,,A*67
    $GPVTG,246.13,T,,M,1.81,N,3.3,K,A*07
    $GPGGA,134223.000,35xx.0082,N,140xx.9770,E,1,06,2.2,24.1,M,39.4,M,,0000*68
    $GPRMC,134223.000,A,35xx.0082,N,140xx.9770,E,1.64,271.67,260207,,,A*62
    $GPVTG,271.67,T,,M,1.64,N,3.0,K,A*08
    $GPGGA,134224.000,35xx.0090,N,140xx.9736,E,1,05,2.2,28.3,M,39.4,M,,0000*63
    $GPRMC,134224.000,A,35xx.0090,N,140xx.9736,E,2.04,246.62,260207,,,A*60
    $GPVTG,246.62,T,,M,2.04,N,3.8,K,A*04
    $GPGGA,134225.000,35xx.0086,N,140xx.9724,E,1,06,2.2,28.0,M,39.4,M,,0000*66
    $GPRMC,134225.000,A,35xx.0086,N,140xx.9724,E,0.66,194.51,260207,,,A*6F
    $GPVTG,194.51,T,,M,0.66,N,1.2,K,A*06
    ・
    ・
    ・
    $GPGGA,134311.000,,,,,0,00,,,M,0.0,M,,0000*53
    $GPGLL,,,,,134311.000,V,N*7F
    $GPGSA,A,1,,,,,,,,,,,,,,,*1E
    $GPGSV,3,1,11,05,74,099,,12,67,081,,30,61,184,,22,56,260,*78
    $GPGSV,3,2,11,18,47,198,,14,38,316,12,09,34,055,,31,09,260,*7A
    $GPGSV,3,3,11,06,05,162,,26,03,117,,07,00,172,*4C
    $GPRMC,134311.000,V,,,,,,,260207,,,N*49
    $GPVTG,,T,,M,,N,,K,N*2C
    $GPGGA,134312.000,,,,,0,00,,,M,0.0,M,,0000*50
    $GPRMC,134312.000,V,,,,,,,260207,,,N*4A
    $GPVTG,,T,,M,,N,,K,N*2C
    $GPGGA,134313.000,,,,,0,00,,,M,0.0,M,,0000*51
    $GPRMC,134313.000,V,,,,,,,260207,,,N*4B
    $GPVTG,,T,,M,,N,,K,N*2C
    $GPGGA,134314.000,,,,,0,00,,,M,0.0,M,,0000*56
    $GPRMC,134314.000,V,,,,,,,260207,,,N*4C
    $GPVTG,,T,,M,,N,,K,N*2C
    $GPGGA,134315.000,,,,,0,00,,,M,0.0,M,,0000*57
    $GPRMC,134315.000,V,,,,,,,260207,,,N*4D
    $GPVTG,,T,,M,,N,,K,N*2C
    
    前半は位置情報捕捉中の5秒ぶん、後半はGPS信号無しの状態の5秒ぶんです。
    $GPの後の3文字がデータの種類を表し、最後の*の後の数字はチェックサムです。

    どのデータを何秒間隔で出力するかはSurfTechでプロトコルをSiRFからNMEAに戻すときに設定できますが、NMEAのときにメニューバーのNMEA->Set Message Rateを実行しても変えることができます。Rateを0にすればそのデータを出力しなくなります。

    私が使っているアプリの範囲では、GLLとVTGは無くても問題ないようです。GPSチップとアプリの間の通信に要する時間を減らすため、この2つは0にしています。ポケットマップルデジタルでの表示に、ややサクサク感が出たような....
    Use Checksumはチェック入れたままにしておいて下さい。はずすとb-waklerでデータを読めなくなるようです。


  • GGA (1)
  • GLL (0)
  • GSA (2)
  • GSV (2)
  • RMC (1)
  • VTG (0)
  • の状態で取ったNMEAログ(上と同じく5秒ぶん)はこのようになります。
    $GPGGA,132326.000,35xx.9972,N,140xx.9730,E,1,05,5.8,-40.6,M,39.4,M,,0000*48
    $GPGSA,A,3,30,18,05,09,12,,,,,,,,7.9,5.8,5.4*35
    $GPGSV,3,1,10,05,72,134,15,12,68,108,14,18,56,205,20,22,56,278,20*7A
    $GPGSV,3,2,10,30,51,185,17,09,40,048,14,14,31,312,11,26,08,111,*7A
    $GPGSV,3,3,10,31,04,254,,29,00,115,*73
    $GPRMC,132326.000,A,35xx.9972,N,140xx.9730,E,2.02,36.46,260207,,,A*55
    $GPGGA,132327.000,35xx.9984,N,140xx.9726,E,1,06,1.8,-38.8,M,39.4,M,,0000*41
    $GPRMC,132327.000,A,35xx.9984,N,140xx.9726,E,1.41,56.07,260207,,,A*5D
    $GPGGA,132328.000,35xx.9989,N,140xx.9725,E,1,04,2.6,-37.1,M,39.4,M,,0000*49
    $GPGSA,A,3,30,22,05,12,,,,,,,,,2.7,2.6,1.0*37
    $GPGSV,3,1,10,05,72,134,15,12,68,108,14,18,56,205,07,22,56,278,15*79
    $GPGSV,3,2,10,30,51,185,16,09,40,048,,14,31,312,11,26,08,111,*7E
    $GPGSV,3,3,10,31,04,254,,29,00,115,*73
    $GPRMC,132328.000,A,35xx.9989,N,140xx.9725,E,1.15,96.06,260207,,,A*50
    $GPGGA,132329.000,35xx.9988,N,140xx.9721,E,1,04,2.6,-37.7,M,39.4,M,,0000*4B
    $GPRMC,132329.000,A,35xx.9988,N,140xx.9721,E,0.28,192.94,260207,,,A*65
    $GPGGA,132330.000,35xx.9989,N,140xx.9718,E,1,04,2.6,-38.8,M,39.4,M,,0000*48
    $GPGLL,35xx.9989,N,140xx.9718,E,132330.000,A,A*5D
    $GPGSA,A,3,30,22,05,12,,,,,,,,,2.7,2.6,1.0*37
    $GPGSV,3,1,10,05,72,134,15,12,68,108,13,18,56,205,12,22,56,278,15*7A
    $GPGSV,3,2,10,30,51,185,16,09,40,048,,14,31,312,,26,08,111,*7E
    $GPGSV,3,3,10,31,04,254,,29,00,115,*73
    $GPRMC,132330.000,A,35xx.9989,N,140xx.9718,E,0.48,141.71,260207,,,A*65
    
    一番重いGSVのレートを2秒にしているので、かえってデータ量が多くなっています。
    ナビ使用時には衛星電波の状況をこんなにマメにチェックする必要無いので、GSVのレートを5秒程度にしたほうが良いと思います。

    このページのトップへ

    パラメータ参考値

    「低めのビルがある市街地の徒歩ナビ」用に試行錯誤して最適化してみた「現時点での」設定を紹介します。もちろん、これだけパラメータが多いのは、用途や何を重視するかによってベストが違うからなので、目的や好みによってはこれがベストとは限りません。

  • +印のところがファクトリーセッティングと異なります。
  • 更新日時:2007年3月11日
  • [Mode Control]
    - Altitude Hold Mode: Auto
    - Altitude Hold Source: Last computed
    + Degraded Mode: Hold clock
    - Degraded Timeout: 10
    + Dead Reckoning Timeout: 5
    - Track Smoothing: 無し
    
    [Static Navigation]
    + 無し
    
    [DOP Mask]
    + DOP Selection: Auto PDOP/HDOP
    + GDOP Value: 5
    + PDOP Value: 5
    + HDOP Value: 5
    
    [Elevation Mask]
    - Tracking Mask: 0.0
    + Navigation Mask: 5.0
    
    [Power Mask]
    ※ここはSurfTechとrx5965の間に互換性の問題があるみたい。触らないほうが良い。
    
    [Swich to NMEA Protocpl] NMEAに戻るとき
    + Update Rate: 上から1, 0, 2, 2, 1, 0, 0...
    + Use Checksums: チェック
    + Debug Messages: 白抜きチェック(設定を変更しないという意味)
    - Baudrate: 9600
    
    このページのトップへ

    DGPSは有効?

    とあるGPS大先輩のブログによると、兄弟機と言っても過言ではないmioで、DGPS(Differential GPS)が使えるらしい。
    ちなみに、IT用語辞典によると、DGPSとは...
    位置の分かっている基準局が発信するFM放送の電波を利用して、GPSの計測結果の誤差を修正して精度を高める技術。基準局でGPSによる測量を行い、実際の位置とGPSで算出された位置のずれを中波やFM放送などの地上波で送信することにより、GPS衛星からの信号により計測した結果を補正する。通常のGPSでは100m程度の誤差が生じるが、DGPSによっておおむね5m程度に誤差が軽減される。ただし、100mの誤差は米国防総省が提供していたGPSに安全保障を理由として故意にノイズが混入されていたために発生したものであり、ノイズ混入が行われなくなった現在ではDGPSを採用しなくても誤差は10m程度までに収まる。
    だそうです。
    中波やFM周波数帯を使った基準局は以前からあるようですが、これは別の受信機がないと使えません。地上局で出す補正情報を静止衛星を経由して送信するSBAS(Satellite Based Augumentation System)は、日本でもかの運輸多目的衛星を使ったMSASが試験運用(PRN番号:129,137)されているようです。GPSと同じ周波数なので、SiRFチップはこれを受信できるようです。
    とはいえ、あまり期待はしないほうが良いでしょう。
    SiRFのマニュアルを見ると、次のような問題点が書いてあります。
    まあ、ともかく、大先輩お勧めの設定を参考に試してみました。
    SurfTechを使って、他のパラメータのときと同様SiRFコマンドで設定します。
    [DGPS Source]
    + DGPS Source:SBAS
    
    [DGPS Mode]
    + DGPS Selection:Auto
    
    [SBAS]  (ここはSetできるがGetが正常に働かないので注意)
    + SBAS PRIN:Auto(あるいはPRN129か137)
    + SBAS Mode:Testing
    + Timeout:Default
    
    [SiRF -> Set Message Rate] 次の2組を順次Setする
    + MID: 27 DGPS Status
    + Update Rate[s]:1
    + MID: 29 Nav.Lib. Differential GPS Data
    + Update Rate[s]:1
    
    試してみると、なんとVisualGPSceでちゃんとDGPSモードが表示されました!
    これがそのときの証拠のログです:
    $GPGGA,113022.000,35xx.5989,N,140xx.2453,E,1,07,2.3,22.8,M,39.4,M,18.8,0000*7C
    
    赤い数字がDGPSの'Age of Diff. Corr.'というパラメータで、DGPSモードでなければ次のように空白になってたはずです。
    $GPGGA,113023.000,35xx.5984,N,140xx.2462,E,1,07,2.3,24.9,M,39.4,M,,0000*6A
    
    精度は?というと...今日は妙に衛星の調子が良いみたいで、DGPSの効果かどうかがよくわかりません。何日かかけて違いを探ってみたいと思います。

    徒歩ナビで日を変えて3回くらいトライした限り、1回目は半々くらいでDGPSモードに入り、2回目はまったく入らず、3回目は時間にして1割くらいDGPSモードに入りました。MSASは試験運用ですから、信号そのものが出ているかどうかという問題もあるのかもしれません。
    国土交通省航空局「MSAS現在の送信状況」を見ると、停止しているかどうかは判ります。
    肝心の精度向上ですが、SiRFのマニュアルに書かれているとおり、DGPSになる状況はそもそも電波状況が良いので体感できないみたいですね〜。

    その後、SBAS信号が安定して拾える日にちょっと実験してみました。
    高い建物に囲まれて、晴れているにもかかわらず捕捉できる衛星の数が3〜5でふらふらする(つまり時々2Dモードになる)ような比較的電波状況の悪い場所に固定して、連続して数分間づつ位置計測しました。
    データ変換覚え書き:
    1. NMEAログ記録
    2. GPSBabelで 'NMEA 0183 sentences' -> 'Tab delimited fields usuful for...'
      (Mac版は日本語名フォルダ使えないので注意!)
    3. グラフソフトで読み込み
    これは、水平位置をプロットしたもので、赤がDGPS状態、青が通常のSGPS状態です。
    どちらもかなりふらふらしています。標準偏差を見ても似たり寄ったりですね。やはり電波状況が悪いことのほうがはるかに影響が大きいようです。
    ○の大きさは捕捉衛星数を表していて、DGPSで計っていたときのほうが捕捉衛星数がたまたま少なかったようです。これも、差が出ない原因かもしれません。
    こちらは、同じ測定から、高度の時間変動をプロットしたものです。
    高さに関しては、DGPSのほうがふらつきが少ないようです。これは、これまでに試した時も同様の印象でした。

    この実験からも判るように、そもそもGPS電波状況の悪いところではDGPSによる精度向上効果はあまりないようです。
    ちなみに、電波状況の良い開けた場所(衛星6〜7個捕捉)でSGPSで計測すると右の図のようになります。
    図のスケールが違うのでご注意下さい。
    まだベストではないかもしれませんが、かなり偏差が小さくなっています。DGPSかどうかより、いかに多くの衛星電波をクリアに受信するかのほうがはるかに影響が大きいですね。
    なお、時間あたりのデータ点数には差はありませんでしたが、どうもDGPSモードでは表示がもたつくような印象があります。あくまで推測ですが、位置確定に時間がかかる代わりに直前までの移動方向に少し先走るようです。高速道路のカーブなどで、遅れて外側にふくらむように位置がトレースされることがSGPSのときより目立つように思います。
    電波状況の良いときに固定位置を高さを含めて精度良く計りたいときにはDGPSのメリットあり、ナビ用途や軌跡の記録用途にはメリットなしだと思います。

    このページのトップへ

    b-walkerでNMEAログを保存する方法(覚え書き)

    設定ウィンドウの「移動履歴を保存する」という囲みの右半分に意味ありげな空間があります。そこを6回連続でタップすると、NMEAというチェックボックスが現れます。これにチェックを入れるとNMEAログが保存されます。
    保存される場所と名前は、/Storage Card/NMEALOG.TXTです。

    これを消去しない限り、2回目、3回目と、このファイルの末尾にどんどん追加されてゆくようです。
    不要になったら、NMEAのチェックを外すのを忘れないように!
    その後、NMEALOG.TXTが書き出されなくなってしまいました。現時点で原因不明!
    解決策ご存じの方は、是非お教え下さい。m(_ _)m

    このページのトップへ

    本革モバイルスーツに入れてGPS受信大丈夫?

    バイクナビ以外の用途で日頃持ち歩くのに、落として壊すのが心配です。そこで、入れたまま操作ができるケースが欲しいと思って探していたのですが、結局これまでにも使っていたことがあるエクストリームリミットの「高級本革モバイルスーツ(手帳モデル) 」を買いました。
    革が立派に厚くっていかにも頑丈そうなのですが、入れた状態でGPSの信号が弱くなってしまうのではないかと少々心配になりました。電波強度はNMEAのSNR値で読めるわけですから、ちょと確かめてみました。
    これがNMEAログから抜き出したいくつかの衛星のSNR値の時間経過で、最初はスーツ内で、その後スーツから出して、最後にまたスーツに入れて計りました。
    スーツから出したほうがSNRがやや高くなっている衛星もありますが、意外に変わらないですね。
    これなら問題無く使えそうで安心しました。
    その後、どうもスーツに入っていると電波が弱いような気がしたので、もっと補足衛星数の多い別の場所でテストしなおしてみました。
    左の図は、前と同じように、スーツ内->スーツ外->スーツ内と連続して測定したSNR値の推移です。いくつかの衛星では、スーツ内でかなり値が小さくなっています。前回なぜあんなに差が小さかったのかは不明ですが、どうやらそれなりに電波は弱まるようです。どの程度結果に影響するかというと、徒歩ナビでの位置の暴れ具合の差がなんとか判る程度です。
    エイヤっとGPSアンテナのあたり(横長に置いてボタン類を右にしたときの左上)の革をくりぬいてみました(^^;)が、それでも差はあるようです。
    GPSを優先するときにはモバイルスーツから出したほうが良さそうですね....
    このページのトップへ

    GPSファームウェアアップデート

    本家HPのウェブページの奥深くで、GPSファームウェアのアップデートが密かにアナウンスされていました。(2007.1.31)
    5965人柱を自認(^^;)するからには、やらないわけにはいきません。早速アップデートしてみました。
    効能書きを見ると、
  • GPSの全体的なパフォーマンスの向上
  • 衛星信号が弱いときのトラッキングの向上
  • ナビゲーション精度の向上
  • 歩行(低速)時のパフォーマンスの向上
  • が期待されるようです。 「必須」にはなっていないようですが、「推奨」になっているのに日本ではなぜアナウンスされていないのでしょう?
    b-walkerとの間で問題が起きないかどうかが心配ですが.....

    アップデートは、母艦PCに接続しないとできないようです。マック使いとしては、泣く泣く知り合いのWin2000搭載PCを借りて実行しました。一度目はなぜか失敗したのですが、もう一度実行したらOKでした。
    SiRFのSoftware Versionは
    GSW3.2.1_3.1.00.12-SDK001P1.00 から
    GSW3.2.2_3.1.00.12-SDK001P1.01 へ変更されています。

    早速、目に見えるパラメータを比較してみます。
    パラメータ GSW3.2.1 GSW3.2.2 私的設定値
    [Mode Control]
    Altitude Hold Mode Auto Auto Auto
    Altitude Hold Source Last computed Last computed Last computed
    Degraded Mode Disable Disable Hold clock
    Degraded Timeout 30 30 10
    Dead Reckoning Timeout 15? 10 5
    Track Smoothing 無し 無し 無し
    [Static Navigation]
      有り 無し 無し
    [DOP Mask]
    DOP Selection: Disabled Disabled Disabled
    GDOP Value 10 10 10
    PDOP Value 10 10 10
    HDOP Value 10 10 10
    [Elevation Mask]
    Tracking Mask 0.0 0.0 0.0
    Navigation Mask 10.0? 5.0 5.0
    [Power Mask]
    Tracking Mask 0 0 0
    Navigation Mask 12 18 12
    「?」のついた値は記憶が怪しい(ファクトリーセッティングを記録されている方、ぜひお教えください!)ので除くと、違いとしては、Static NavigationをやめたのとPower Maskが12dB-Hzから18dB-Hzに大きくなったことでしょうか。
    「歩行時のパフォーマンスの向上」ってのはStatic Navigationやめたってことですね。(笑)
    あと、以前はPower Maskとして20未満の値が入れられなかったのですが、今回のバージョンアップで入れられるようになりました。
    ちょっと使ってみた感じでは、電波状況の悪いところでの位置補足に要する時間が短くなったような気がする(これは状況次第で大きく変わるので...)のと、ビル陰のいままで位置が暴れぎみだったところで安定するようになったようです。

    お約束の定量評価もやってみました。DGPSは有効?のときにとったのと同じビル陰になりやすい場所で位置の時間変化を記録しました。
    この実験では、パラメータは3.2.2のデフォルト値にしてあります。
    3.2.1のデータは以前のものですので、厳密な比較ではありません。この場所はいつ計っても位置がふらふらするのですが、比較的ふらつきが少ないですね。丸が大きいのは補足衛星数が多いからなのですが、これがアップデートの効果かもしれません。

    その後、何回かb-walker、PMDなどで使ってみましたが、少なくともネガティブな変化はなさそうです。
    公平に比べられないのであくまで印象ですが、アップデート直後に感じたとおり、位置補足に要する時間がやや短くなり、また、これまでより位置計算に使う衛星数が増えているようです。そのメリットを生かすために、ファームウェアアップデート後は上の表の「私的設定値」のようになるべく衛星を多く使うように設定しています。たいていの場合、少しでも多くの衛星を使ったほうが位置が無難な範囲に収束するようです。特に、市街地で衛星電波が次々にとぎれるような状況では、衛星に意図的な制限をかけるより、使える限り多くの衛星電波を使うほうがふらつかないようです。

    このページのトップへ

    Masa

    ホームへ戻る