この例では、Claw GPS シミュレーターは GPS トランスコーダーとして動作します. 過去に移動車両上などで記録した NMEA センテンスにいくつかのSCPIコマンドを付け加えたデータを Claw にアップロードして記録した軌跡を Claw に生成させます.
例が NMEA_Transfer.txt として SimCon ソフトウェアパッケージに含まれています. このサンプルファイルは C:\Program Files\Jackson Labs\SimCon にあります(PCにより異なる場合があります). その開始と終了部分を抜き出したのが以下です. NMEA GGAとRMCのセンテンスを置き換えていただければ任意のトランスコードによるシミュレーションが可能になります.
始まりの何行かは Claw GPS シミュレーターをトランスコードモードにして NMEA センテンスを受け付けるようにします.エラーチェッキングは行われません.
GPSシミュレーションは多くの場合,モノトニックでない時刻と新たな衛星の配置で行われますから,GPS受信機が同期するにはコールド状態から新規にアルマナックとエフェメリスを含む Navigation Message を受信しなければなりません. Navigation Message は 50bit/s とゆっくりした速度で送られてきますので,それを受信するのに12.5分かかります.ウォームやホット状態のGPS受信機はいったんコールド状態に戻るのに時間がかかることがあります.ですから,シミュレーションシナリオを作成するにあたっては GPS との同期に必要な時間もシミュレーションを提供することを考えねばなりません.
NMEAセンテンスは Claw に記憶されることはなく,順次読み込まれていきますからデータの量に制限はありませんが,SimConを実行するPCはClawに接続したままにしておかねばなりません.
SimCon から Claw に供給する SCPI プログラムに含む NMEA センテンスは
- GGAとRMCが含まれていなければなりません
- GGAが時刻と経度緯度標高を供給します
- RMCが年月日を供給します
- 毎秒のデータがなければなりません
- GGAとRMCの時刻は完全に一致していなければなりません
- パリティーは正しくなければなりません
- ディファレンシャルGPSに関する項目は空欄でかまいません
- 移動速度と移動方位は使わないので 0.0 でかまいません
- GPS受信機がGPSと同期するまで足踏みさせるなり,捨てるなりさせる部分が必要になるかもしれません
NMEAセンテンスを含む SCPI プログラムファイルは Terminal ペインの Upload ボタンを使って Claw に送ります.SimCon は自動的に NMEA センテンスの前に "sim:nmea" SCPI コマンドを付加しながら,1秒毎に緯度経度標高の情報を Claw に送ります.
GPS測位では地球を楕円体としてモデル化した WGS84 楕円体からの高さ(楕円体高)を算出します.NMEAに標高とジオイド高があるのは,楕円体高は標高とジオイド高の合計だからです.CLAW に入力する NMEA では,楕円体高を標高に入力してジオイド高は0.0としておくこともできます.標高とジオイド高と楕円体高との関係は国土地理院の説明を参照下さい.なお,標高から楕円体高を求めるのに必要な特定の地点のジオイド高は,国土地理院のサイトの一括計算でまとめて調べることが出来ます.
また任意の経路の NMEA データを表示ないし作成するサイトもあります( github ).このサイトでは標高は出ません.
なお、NMEAで軌跡を再現する時点のGPS衛星の配置を再現したい場合はその時点の衛星の軌道上方を RINEX フォーマットで CLAW に読み込ませます.RINEX フォーマットの軌道情報を CLAW に読み込ませる方法は「当日の衛星配置を正確に再現してシミュレーション」を参照下さい.
以下の例の$ではじまるNMEAセンテンスを入れ替えて,それ以外のscpiコマンドはそのままにしてください.
-----------------------------------------------------------------------------------------------------------------
sim:mode manual
sim:command stop
wait 2
gps:port scpi <<< SCPIポートからNMEAセンテンスによるデータを受け取るようにします
gps:type:mode nmea
gps:reset once
sync:source:mode nmea <<< 1PPS信号ではなく,1秒毎のNMEAに同期します
wait 2
out:power -120 <<< 出力レベルを設定します
sim:mode transcode <<< 以降の NMEA センテンスによりトランスコードモードを実行します
$GPGGA,205401.00,3609.6731,N,11519.0879,W,1,06,1.5,902.5,M,-28.9,M,,*5A
$GPRMC,205401.00,A,3609.6731,N,11519.0879,W,0.0,0.0,110618,,*28
$GPGGA,205402.00,3609.6731,N,11519.0879,W,1,06,1.5,902.3,M,-28.9,M,,*5F
$GPRMC,205402.00,A,3609.6731,N,11519.0879,W,0.0,0.0,110618,,*2B
毎秒 NMEAセンテンス を送出
$GPGGA,211746.00,3609.6709,N,11519.0869,W,1,08,0.9,911.0,M,-28.9,M,,*51
$GPRMC,211746.00,A,3609.6709,N,11519.0869,W,0.0,0.0,110618,,*27
$GPGGA,211747.00,3609.6709,N,11519.0869,W,1,08,0.9,911.0,M,-28.9,M,,*50
$GPRMC,211747.00,A,3609.6709,N,11519.0869,W,0.0,0.0,110618,,*26
gps:type:mode auto
gps:port rs232
sync:source:mode gps
-----------------------------------------------------------------------------------------------------------------
NMEA の GGA と RMC センテンスを簡単に説明します.それぞれのセンテンスにはチェックサムがありますから,時刻と座標データからNMEAセンテンスを作る際にはチェックサムの計算を忘れないようにします.RMCの移動速度と移動方位はトランスコードには使われないため空欄でかまいません.
$GPGGA センテンスの例
$GPGGA,205401.00,3609.6731,N,11519.0879,W,1,06,1.5,902.5,M,-28.9,M,,*5A
カンマ区切りをばらします
値 |
説明 |
書式、内容 |
205401.00 |
UTC時刻 |
hhmmss.ss |
3609.6731 |
緯度 |
dddmm.mmmm |
N |
北緯か南緯か |
N か S |
11519.0879 |
経度 |
dddmm.mmmm |
W |
東経か西経か |
E か W |
1 |
位置品位 |
0 位置特定出来ていない 1 標準モード 2 ディファレンシャルGPS |
06 |
受信衛星数 |
SVの数 |
1.5 |
HDOP |
|
902.5 |
海抜 |
ジオイド高と海抜を合計して入力することも出来ます |
M |
海抜の単位 |
meter |
-28.9 |
ジオイドの高さ |
ジオイド高と海抜をまとめて海抜に入力した場合は0.0にします |
M |
ジオイドの高さの単位 |
meter |
|
DGPS |
ディファレンシャルGPS使用時は最後のRTCM通信からの時間 |
|
DGPS ID |
ディファレンシャルGPSの基準点ID |
*5A |
チェックサム |
$と*で挟まれた文字列の8ビットXORを取り,2桁の16進数で表現 |
$GPRMC センテンスの例
$GPRMC,205401.00,A,3609.6731,N,11519.0879,W,0.0,0.0,110618,,*28
値 |
説明 |
書式、内容 |
205401.00 |
UTC時刻 |
hhmmss.ss |
A |
ステータス |
A 測位中 V 未測位 |
3609.6731 |
緯度 |
dddmm.mmmm |
N |
北緯か南緯か |
N か S |
11519.0879 |
経度 |
dddmm.mmmm |
W |
東経か西経か |
E か W |
0.0 |
地上移動速度 |
単位ノット Speed Over Ground トランスコードには使わない |
0.0 |
地上移動方位 |
0~359.9° Course Over Ground トランスコードには使わない |
110618 |
UTC日付 |
ddmmyy |
|
磁気偏差 |
0~180.0° トランスコードには使わない |
|
磁気偏差向き |
E 東より W 西より トランスコードには使わない |
|
測位モード |
A:Autonomous 測位中 D:DGPS E:DR トランスコードには使わない |
*26 |
チェックサム |
$と*で挟まれた文字列の8ビットXORを取り,2桁の16進数で表現 |
scpiコマンドを含むNMEAのファイルが用意できたら SimCon を起動します
Claw GPS シミュレーターをUSBで接続し,SimCon とコネクトします
Treminal ペインを開き Upload ボタンを使いテキストファイルをClawに送ります.Upload は1023週番号ロールオーバーや閏秒など既に定義されたシミュレーションシナリオをClawに読み込ませるのに使います.
過去や未来のシミュレーションを行う場合は,シミュレーションを開始する前にターゲットのGPS受信機のアルマナックをクリアしておくのを忘れないで下さい.シミュレーションの日付が受信機のメモリーに記憶されている日付と大きく異なるとGPS測位に非常に時間がかかったり,測位できないことがあります.それぞれのGPS受信機のマニュアルを参照下さい。
|