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,

 このケースでは,OpenLog Artemis (IMU ユニット付)の IMU ユニットの「加速度,ジャイロスコープ,方位磁場」の値も記録されている。 データはテキストファイルで micro SD カードに記録される。データは CSV 形式(コンマで区切られたデータ)で記録されている。 最初の行に各データの名前が記されており,最初の2個は RTC (Real Time Clock) のデータ(日付と時刻)である。 次に加速度のデータ (aX, aY, aZ),ジャイロスコープのデータ (gX, gY, gZ),磁場のデータ (mX, mY, mZ),温度のデータ (imu_degC) が並んでいる。 それ以降は GNSS 関連のデータとなっている。

 GNSS (GPS) のデータは,順に,日付,時刻,Latitude (緯度),Longitude (経度),Altitude (高度),SIV (Satellite in View),FixType (衛星捕捉状態), 水平速度,方位,pDOP (Position Dilution of Precision), 出力レート (Hz) である。

各データの単位は https://github.com/sparkfun/OpenLog_Artemis/blob/main/SENSOR_UNITS.md に記載がある。
(1) 日付と時刻は UTC (Coordinated Universal Time,協定世界時) であり,JST (Japan Standard Time, 日本標準時) にするには 9時間 (32,400 秒) を足さないといけない。
(2) Latitude と Longitude は 10-7 倍すると通常の緯度,経度になる。例えば Longitude = 1358144528 なら,東経 135.8144528 度を意味する。
(3) Altitude は mm 単位なので 10-3 を掛けると m 単位になる。
(4) SIV は捕捉している衛星の数であり多い方が位置の精度が高くなる。
(5) FixType は 0 - 5 の数字であり,0:No detection, 1:Dead Reckoning Only (推測航法のみ), 2:2D, 3:3D, 4:GNSS + Dead Reckoning, 5:Time Only となっているらしい。この中では「3:3D」がいいような気がする。
(6) 速度は mm/s 単位なので 10-3 を掛けると m/s 単位になる。
(7) 方位は 10-5 を掛けたものが北を 0 度する角度(単位は度)である。右回りに測るので,東が 90 度,南が 180 度,西が 270 度となる。
(8) pDOP は位置の精度を示す指標であり,記録された値に 10-2 を掛けたものが pDOP の値となる。この数値は小さい方が位置の精度がより良いことを示す。 得られたデータの最初の方は pDOP = 9999 (*10-2) が並んでいる。そこでは SIV = 0, FixType = 0, 速度 0 mm/s となっている。 これは SW を入れた直後は衛星を捕捉できてないことを意味し,位置情報にはほぼ意味がないことを示している。 Wikipedia によると, 通常は pDOP は 1 以上の数字であり,1〜2 なら位置の精度が Excellent,2〜5 なら Good,5〜10 なら Moderate,11〜20 で Fair,20 以上で Poor らしい。 上記の例だと 最後の3行は pDOP = 1.76, 1.67, 1.67 となっていて,位置精度が Excellent ということを示している。
(9) 出力レートは,記録の出力の頻度であり,この例だと1個のデータを記録するのに 1.015 秒なしは 1.016 秒かかってることを示している(はず)。

 ちなみに ICM ユニット(ICM-20948 IMU)のデータの単位は,加速度が ミリg(g は重力加速度),ジャイロスコープは 度/秒 (deg/sec),方位磁場は μT (micro Tesla),温度は ℃ (摂氏) である。

後は,この「1秒ごとのデータ」を適度に間引けば GNSS のログとして使えることになる。

0 件のコメント: