2023年5月24日水曜日

GNSS (GPS) データから距離を求める

 ここ数回続けて GNSS (GPS) 関連の投稿をしている。 今回は GNSS (GPS) のデータから距離を求める話を書こう。

 距離については,以前 GPS 経路データから求めた距離の誤差について というのを書いた。 その時は六甲全山縦走路の距離に関して,GNSS (GPS) で得られた経路の距離の誤差について考えたものだった。 今回は,距離の求め方について書こうと思う。ま,ほとんどどっかのサイトの受け売りやけどね。

 地図上の距離を求めるには定規で測って縮尺を考えて距離を出す,というのも考えられるが,GNSS (GPS) で経路を記録していると,緯度+経度,という情報が得られる。 そこで,2点間の緯度と経度の情報を使って距離を求める,というのが今回のお話し。

緯度の経度について

 まず,距離を求める前に緯度と経度の話を書こう。
緯度は英語で「Latitude」,経度は「Longitude」と言う。 なので,計算スクリプトで lat やら Lat やらとあれば「緯度」を示し,lng や Lng, 場合によっては lon や Lon とあれば「経度」を表していると考えて欲しい。 ちなみに「高度」は「Altitude」が使われることが多い(と思う)。

2023年5月23日火曜日

SparkFun GNSS NEO-M9N + OpenLog Artemis で構成した GNSS ロガーのログ

 前回の投稿で,SparkFun 製の GNSS NEO-M9N ユニットと SparkFun 製の OpenLog Artemis で作った GNSS ロガーのことを書いた。今回のその GNSS ログについて書こうと思う。

 SparkFun 製 OpenLog Artemis は,Microcontroller の Apollo 3 Blue MCU を持つ Artemis Module で構成されたログ記録用のユニットである。それに SparkFun 製の GPS Breakout - NEO-M9N, U.FL (Qwiic) という GNSS ユニット,LiPo バッテリーを組み合わせると簡単に GNSS ロガーができる。SW をつなげる以外はほぼコネクタをつなげるだけ,でできる。

 その場合の GNSS のログは,OpenLog Artemis にプログラムされている形式で記録される。 以下にその例を示そう。
rtcDate,rtcTime,aX,aY,aZ,gX,gY,gZ,mX,mY,mZ,imu_degC,gps_Date,gps_Time,gps_Lat,gps_Long,gps_Alt,gps_SIV,gps_FixType,gps_GroundSpeed,gps_Heading,gps_pDOP,output_Hz,
01/01/2000,00:10:25.74,326.66,-913.57,-221.19,0.18,0.60,-0.25,-3.60,-5.10,-16.95,35.70,05/16/2023,05:58:15.000,350301689,1357728753,153510,0,0,0,23701918,9999,0.984,
01/01/2000,00:10:26.74,330.08,-923.34,-224.61,0.47,0.60,3.05,-3.30,-3.75,-18.90,35.46,05/16/2023,05:58:16.000,350301689,1357728753,153510,0,0,0,23701918,9999,0.984,
01/01/2000,00:10:27.75,326.66,-936.04,-217.29,-1.44,1.17,0.04,-4.20,-5.85,-13.05,35.46,05/16/2023,05:58:17.000,350301689,1357728753,153510,0,0,0,23701918,9999,0.984,
01/01/2000,00:10:28.75,330.57,-926.27,-238.77,-0.29,-1.0,-0.70,-2.85,-4.05,-15.15,35.46,05/16/2023,05:58:18.000,350301689,1357728753,153510,0,0,0,23701918,9999,0.984,
01/01/2000,00:10:29.76,330.08,-916.50,-208.50,0.27,-1.14,-0.30,-5.40,-4.35,-16.50,35.41,05/16/2023,05:58:19.000,350301689,1357728753,153510,0,0,0,23701918,9999,0.984,
01/01/2000,00:10:30.76,330.57,-923.34,-209.96,-1.18,1.53,-0.24,-4.20,-4.80,-15.90,35.70,05/16/2023,05:58:20.000,350301689,1357728753,153510,0,0,0,23701918,9999,0.984,
....
01/01/2000,00:37:46.67,320.80,-581.05,-425.29,-12.73,-6.39,-8.52,-23.55,6.45,-9.60,39.63,05/16/2023,06:25:37.000,348934290,1355106946,144510,0,0,0,25642680,9999,0.984,
01/01/2000,00:37:47.68,96.19,-470.70,-528.81,7.64,-4.62,-11.46,-20.70,9.0,-7.50,39.15,05/16/2023,06:25:38.000,348934290,1355106946,144510,0,0,0,25642680,9999,0.985,
01/01/2000,00:37:48.69,259.28,-1590.33,-871.58,-7.19,-3.47,-32.61,-24.0,14.25,-12.45,39.39,05/16/2023,06:25:39.000,348934290,1355106946,144510,0,0,0,25642680,9999,0.985,
01/01/2000,00:37:49.69,217.29,-411.13,-810.06,-6.67,21.91,39.07,-32.55,23.40,-10.35,39.24,05/16/2023,06:25:40.000,348934290,1355106946,144510,0,0,0,25642680,9999,0.985,
01/01/2000,00:37:50.70,490.72,-383.30,-527.83,10.15,1.86,14.40,-36.45,22.95,-18.30,39.48,05/16/2023,06:25:41.000,349718091,1358144528,145559,4,2,2749,25642680,258,0.985,
01/01/2000,00:37:51.71,259.77,-958.01,-951.66,-42.80,8.94,6.55,-43.95,24.0,-18.30,39.29,05/16/2023,06:25:42.000,349718458,1358144645,140839,7,3,1830,14312410,261,0.985,
01/01/2000,00:37:52.71,272.46,-431.15,-659.18,30.15,-22.78,-44.46,-37.65,23.85,-22.05,39.48,05/16/2023,06:25:43.000,349718704,1358143742,135256,7,3,1194,14318840,261,0.985,
01/01/2000,00:37:53.72,159.67,-394.53,-519.04,4.99,20.63,9.93,-33.45,21.75,-25.80,39.39,05/16/2023,06:25:44.000,349719339,1358143424,121481,9,3,890,13825742,240,0.985,
01/01/2000,00:37:54.73,-4.39,-623.05,-746.09,-17.57,28.05,82.57,-47.70,23.10,-20.70,39.39,05/16/2023,06:25:45.000,349719530,1358143564,118751,12,3,484,13825742,176,0.985,
01/01/2000,00:37:55.73,195.31,-1654.79,-700.20,5.57,-47.44,-106.35,-36.0,26.55,-22.20,39.48,05/16/2023,06:25:46.000,349719732,1358143546,113840,13,3,879,16785064,167,0.985,
01/01/2000,00:37:56.74,434.57,-520.02,-1026.86,-32.24,-12.02,4.37,-43.35,22.65,-19.50,39.29,05/16/2023,06:25:47.000,349719762,1358143542,110599,13,3,1022,17545512,167,0.985,

2023年5月17日水曜日

SparkFun GNSS NEO-M9N と SparkFun OpenLog Artemis で GNSS ロガーを作った(ほぼ線をつないだだけやけど…)

 久々の投稿の気がするが,まぁ,気にしないでおこう。

 今回は GNSS ロガーを組み上げた,というお話し。 組み上げたと言っても,Qwiic というシステムのケーブルでつないだだけ,という工作ともなんとも言えない話になっている。 ま,一応,いろいろとあるので備忘録を兼ねて書いておこうと思ったのが今回の投稿。

 まず,GNSS ロガーについてだが,これは GPS ロガーとほぼ同義語として使ってる。 GPS というのはアメリカが開発した衛星測位システムであり,同様の衛星測位システムとして,ヨーロッパの Galileo,ロシアの GLONASS,中国の北斗 (BeiDou) や,日本のみちびき (QZSS) などがあり,その総称として GNSS (Global Navigation Satellite System) が使われているので,ここでは GNSS ロガーと記載している。

 これまでも登山の行動経路の記録のために GPS ユニットや GNSS ユニットと SparkFun 製 OpenLog(シリアル通信上に流れてきたデータを単純に記録し続けるユニット)を組み合わせたお手製の GNSS ロガーを作ってきた。
Gms-g9 を使った GNSS ロガーに挑戦してみた
GNSS ロガー (Gms-g9 使用) の2号機を作る
ランニングエレクトロニクス社製 Gms-g9 基板使用 GNSS ロガー 3号機の製作
など…。

 しかし,それらも徐々にヘタってきた。GNSS ユニットがヘタったというよりは,基板のはんだ付けやら,基板用のミニスイッチなどがヘタってきた感じで,うまくログを記録できないケースも出てきた。そこで新しくなにかできないか?と思っていた時に見つけたのが SparkFun 製 OpenLog Artemis と SparkFun 製の GPS Breakout - NEO-M9N, U.FL (Qwiic) だった(NEO-M9N Breakout board は,Chip Antenna がついたものや,SMA コネクターのものもある)。

 この OpenLog Artemis と NEO-M9N board は Qwiic という接続システムを搭載しており,Qwiic 専用のケーブル(50mm100mm,など)を使えば,はんだ付けなしでコントローラーとセンサー類を接続できる。 そこで,今回はこれを使って GNSS ロガーを作ってみた。