RTK-GPS測位の基礎と プログラミング (9) Basics of RTK-GPS Positioning and Its Programing 東京海洋大産学官連携研究員/技術コンサルタント 高須 知二 Tomoji TAKASU 内容 • パッケージ構成 • プログラム構成 • 共通ヘッダ・共通ルーチン • RINEX読み込み • 整数最小二乗 • RTK測位 • 後処理基線解析AP http://gpspp.sakura.ne.jp パッケージ構成 • rtklib_1.0.tar.gz ./src : ソースプログラム ./test : テストプログラム・データ ./util : ユーティリティ ./doc : 文書 ./gcc : 構築環境GCC ./msc : 構築環境MSC ./icc : 構築環境Intel C+MKL http://gpspp.sakura.ne.jp プログラム構成 • rtklib.h rtkcmn.c readrnx.c lambda.c geoid.c rtkpos.c rnx2rtkp.c • pos2kml.c : : : : : : : : 共通ヘッダ 共通ルーチン RINEXファイル読み込み 整数最小二乗 ジオイドモデル RTK測位 RTK測位メイン 変換ユーティリティ http://gpspp.sakura.ne.jp 共通ヘッダ • 定数 • 共通型 gtime_t : 時刻構造体 obsd_t : 観測データレコード obs_t : 観測データ構造体 eph_t : 航法メッセージレコード nav_t : 航法メッセージ構造体 • 関数プロトタイプ宣言 http://gpspp.sakura.ne.jp 共通ルーチン (1) • 行列・ベクトル演算 mat(),zeros(),eye() : 行列生成 dot(),norm() : 内積, euclidノルム matmul(), matinv() : 行列積、逆行列 solve() : 線形方程式 lsq() : 最小二乗法 filter() : Kalmanフィルタ更新 matprint() : 行列・ベクトル印刷 http://gpspp.sakura.ne.jp 共通ルーチン (2) • 文字列・時刻操作 str2num() : 文字列→数値 str2time(),time2str() : 時刻→文字列 gpst2time(),time2gpst() : GPST→時刻 gpst2utc(),utc2gpst(): GPST→UTC timeadd() : 時刻加算 timediff() : 時刻差 http://gpspp.sakura.ne.jp 共通ルーチン (3) • 座標変換 ecef2pos() pos2ecef() ecef2enu() enu2ecef() covenu() geoidh() : : : : : : ECEF→緯度経度高度 緯度経度高度→ECEF ECEF→局地座標系 局地座標系→ECEF 局地座標系共分散 ジオイド高 http://gpspp.sakura.ne.jp 共通ルーチン (4) • 航法ルーチン eph2pos() : 航法msg→衛星位置 satpos() : 衛星位置・衛星時計計算 geodist() : 幾何学距離計算 ionmodel() : 電離層モデル tropmodel() : 対流圏モデル pntpos() : 単独測位 http://gpspp.sakura.ne.jp RINEX読み込み • int readrnx(char **files, int n, obs_t *obs, nav_t *nav) files n obs nav I I O O RINEXファイル ファイル数 観測データ 航法メッセージ http://gpspp.sakura.ne.jp 整数最小二乗 • int lambda(int n, int m, double *a, double *Q, double *F, double *s) n,m a Q F s I I I O O パラメータ数,Fix解数 Float解 Float解共分散 Fix解 重み付残差二乗和 http://gpspp.sakura.ne.jp RTK測位 • void rtkpos(infunc_t input, outfunc_t output, int mode, int nf, double *rb, double elmin, double thres, int opt) input I 入力コールバック output I 出力コールバック mode,nf,rb,elmin,thres,opt I 測位パラメータ http://gpspp.sakura.ne.jp RTK測位 rtkpos() 観測データ入力 単独測位 精密相対測位 整数Ambiguity決定 測位解出力 http://gpspp.sakura.ne.jp 精密相対測位 共通衛星選択 状態変数時間更新 二重差残差計算 観測誤差共分散計算 Kalmanフィルタ更新 http://gpspp.sakura.ne.jp 整数Ambiguity決定 2重差バイアス生成 整数最小二乗 Fail 検定 Float解→Fix解計算 http://gpspp.sakura.ne.jp 後処理基線解析AP • rnx2rtkp [option...] file file [...] -h -o output -p mode -m mask -f freq -v thres -i -e -g -t -u col -s sep -r x y z print help output file mode (0:single,1:dgps,2:static,3:kinematic) elevation mask angle (deg) number of frequencies (1:L1,2:L1+L2) threshold of ratio-test for integer ambiguity validation instantaneous integer ambiguity resolution output x/y/z-ecef position [latitude/longitude/height] output latitude/longitude in the form of ddd mm ss.ss output time in the form of yyyy/mm/dd hh:mm:ss.ss columns of time under decimal point field separator reference (base) receiver ecef pos (m) http://gpspp.sakura.ne.jp 性能評価 • 定点測位 電子基準点 基線長 評価内容 • 移動体測位 自動車走行 基線長 評価内容 : 2004/1/1-12/31(30s) : 0.3,3.3,4.3,~33.1km : FIX率、精度 : 42分(1Hz),54分(2Hz) : 0.1~3.1km : FIX率、走行軌跡 http://gpspp.sakura.ne.jp
© Copyright 2024 ExpyDoc