Phantom4RTKのPPK処理

Phantom4RTKで撮影したデータをPPK(Post Processing Kinematic)するためのメモです。

処理の概要

  • Phantom4RTKではGNSSの2周波の観測データを取得できます。対応しているGNSSは、GPS(米)、GLONASS(露)、BeiDou(中)、Galileo(欧)です(みちびき(日)は未対応)。
  • 観測データおよび航行データは、0.2秒間隔(5Hz)で取得して、RTCM3.2 MSM5 形式のファイル「PPKRAW.bin」に保存されます。また、観測データをRINEX形式に変換したファイル「Rinex.obs」も保存されます。(PPKRAW.binを、FormatにRTCM3を指定しrtkconvで変換すると、Rinex.obsと同様の観測データのほかに、航行データが取得できます。)
  • また、各画像の撮影時刻と、観測データを受信したアンテナの位置と画像を撮影したCMOSセンサーの位置の差は「Timestamp.MRK」に保存されます。
  • 観測データをRTKLIBで処理することで正確な位置を算出し、CMOSセンサーとの位置の差を考慮して撮影画像に正確な位置を付与します。
  • その際、観測データの位置情報は0.2秒間隔で、撮影位置とは一致していないので、観測データの取得時刻と撮影時刻の関係から線形補間します。

RTKLIBで正確な位置を算出

移動局(Rover)のデータにはRinex.obsを使用し、基準局(Base)と航行データ(.nav)は、近くの電子基準点のデータをダウンロードして使用します。RTKLIBの処理の詳細は、以下を参照してください。

ポイントとしては、次の処理のためにRTKLIBののOptionsのOutputの設定でHeaderをOFFにして、Time formatをww ssss GPST(1980年1月6日からの週数と週始めからの秒数)にして、Field separatorを「,」にしておきます。また、HeightはGeodeticにして出力を標高値にしておきます。(こうすることで、後述のMetashapeで処理した後のdemデータが、標高値になります(未実施なので要確認)。←おそらく問題ないと思いますが、楕円体高で処理した場合とで精度に違いが出ないか少し気になってます。)

Phantom 4 RTK - PPK Processing Workflow | Drone Data Processing
https://swest.toppers.jp/SWEST21/program/pdfs/s5a_public.pdf
https://www.naro.affrc.go.jp/publicity_report/publication/files/drone_gnss.pdf

撮影位置を補間

RTKLIBの処理で作成した.posファイル(0.2秒間隔の位置情報)と撮影時刻を記録した「Timestamp.MRK」から撮影位置を算出します。
算出には、以下からダウンロードできるEXCELファイルを利用します。
使用方法は、以下のサイトとファイルに書いてある通りですが、position fileの貼り付けは、別のシートで.posファイルをカンマ区切りで読み込んでおいて貼り付けると簡単です。(数式の列番号が間違っているところがあるので、自分で修正が必要です。)

Phantom 4 RTK - PPK Processing Workflow | Drone Data Processing

撮影位置を画像に付与

EXCELから出力されたcsvファイル(画像のファイル名と位置情報の対応情報)をMetashapeでインポートすれば、画像に位置情報を付与できます。
以下の資料にもあるように解の精度(Fix,Float,Single)によって位置精度を変更するように改造すると良いかもしれません。(以下資料のTimestamp Converterは公開されていない?ようです)

以下の12ページ目参照
Phantom4 RTKで、後処理キネマティック(PPK)をする方法


精度の目安は、fixで水平0.03m 垂直0.05m floatで水平、垂直0.5mにしようと思います。あと、画像がサブフォルダに分かれていて同じファイル名が複数あるとcsvと対応づけできないので、Metashapeに読み込む前にファイル名をフォルダ名+ファイル名に変換しておきます。

参考バッチファイル
フォルダ名をファイル名の頭に追加するバッチ| OKWAVE