OSQZSS

オープンソース準天頂衛星(QZSS)受信機

RTKPOSTで精密測位

2014-04-25 00:20:41 | RTKLIB
RTKNAVIの使い方で設置した基地局の精密なアンテナ位置を求めるために,
まずは測位の基準点となる電子基準点のデータをダウンロードしました.

基地局の観測データは,u-blox社が提供するGPS評価用ソフトウェアの
u-centerを使って取得します.

ublox: u-center GNSS evaluation software for Windows

u-centerと受信機の接続については,こちらをご参照ください.



ここでは,取得されたデータのファイル名をbase_140412_013700.ubxとします.

 (クリックで拡大)

まず,RTKCONVを使用して,このUBXフォーマットのファイルから,標準的な
RINEXフォーマットの観測ファイルと衛星軌道情報ファイルを生成します.

 (クリックで拡大)

RTKCONVを起動し,RTCM, RCV RAW or RINEX OBSのボックスで,UBXファイルを
選択します.Formatには,プルダウンメニューからu-bloxを選びます.
出力ファイルには,RINEX OBS/NAV/GNAV/HNAV/QNAV/LNAV and SBSのリストから,
OBSとNAVをチェックします.

 (クリックで拡大)

次に,Optionsボタンをクリックして,生成するRINEXファイルの詳細を設定します.
ここでは,RINEX Versionに,電子基準点からダウンロードしたRINEXと同じ2.10を選びました.
LEA-4Tの場合,Satellite SystemsはGPSのみ,FrequenciesはL1のみとなります.
Observation TypesにはC(疑似距離),L(搬送波位相),D(ドップラー),S(信号強度)を
選んでいます.

 (クリックで拡大)

設定後にConvertをクリックすると,観測ファイルのOBSと衛星軌道情報ファイルのNAVが
生成されます.

 (クリックで拡大)

これで,基準局のアンテナ位置を求めるために必要なファイルがすべて揃いました.
精密測位を実施するために,RTKPOSTを起動します.

 (クリックで拡大)

RINEX OBS: Roverには,精密位置を求めたい基地局の観測ファイルを選びます.
RINEX OBS: Base Stationには,電子基準点の観測ファイルを選びます.
RINEX NAV/CLKには,衛星軌道情報ファイルを選びます.

 (クリックで拡大)

次に,Optionsボタンをクリックして,測位演算の詳細を設定します.

Setting 1のタブでは,Positioning ModeにKinematicを選びます.
FrequenciesはL1のみ,Elevation Maskは15度としました.

 (クリックで拡大)

Setting 2のタブでは,Integer Ambiguity ResとしてContinuousを選びました.

 (クリックで拡大)

Positionsのタブでは,Base Stationである電子基準点の座標を指定します.
ここでは,電子基準点データ提供サービスからダウンロードした千葉市川の
日々の座標値から,最新の値を入力しました.

 (クリックで拡大)

設定後にExecuteボタンをクリックすると,測位演算が開始されます.

 (クリックで拡大)

ここでは,base_140412_013700.posというファイルに測位結果が出力されます.

Plotボタンをクリックすると,この測位結果をグラフ表示することができます.
黄色の点がInteger Ambiguityが解けていないFloat解,緑色の点が搬送波位相の
波数が解けたFix解となります.

 (クリックで拡大)

Viewボタンをクリックすると,測位結果のテキストファイルが開かれます.
Qの列が測位解の状態を示しており,2がFloat解,1がFix解となります.

 (クリックで拡大)

基地局アンテナの精密位置には,Qが1であるFix解の座標を使用します.
コメント (0) |  トラックバック (0) | 

電子基準点データの取得

2014-04-24 23:06:23 | RTKLIB
RTKNAVIの使い方で設置した基地局のアンテナ位置を求めるために,
近くの電子基準点データを用いて精密測位を実施します.

電子基準点のデータは,国土地理院の電子基準点データ提供サービス
公開されています.

まず,メインメニューから提供サービスをクリックしてサインインをします.

 (クリックで拡大)

ログインIDとパスワードを入力して,提供サービスにログインします.
はじめて提供サービスを受ける方は,ユーザー登録が必要です.

 (クリックで拡大)

提供サービスのメニューから,電子基準点選択をクリックします.

 (クリックで拡大)

地図上の赤点が電子基準点の位置になります.表示地区変更のプルダウン
メニューから,希望する電子基準点の地域を選びます.赤点をクリックすると,
その電子基準点が選択され,選択した電子基準点のボックスに表示されます.
ここでは,千葉市川の電子基準点を選んでいます.基準点を選択したら,
メニューから日付指定・点情報表示をクリックします.

 (クリックで拡大)

ここで,選択した電子基準点のID番号を控えておいてください.
後ほど,この電子基準点の座標を知るために必要になります.

電子基準点メニューで,ダウンロードするデータの期間を指定します.
期間を指定したら,観測データの一覧をクリックします.

 (クリックで拡大)

観測データ一覧から,希望する期間のデータをチェックして,
ダウンロードページへをクリックします.

 (クリックで拡大)

観測データ詳細一覧のページが開きますので,希望する時間帯の
観測ファイルをダウンロードします.

 (クリックで拡大)

ここでは,30231020.14o.gzという圧縮ファイルがダウンロードされました.
この圧縮ファイルの解凍には,7-ZIPがお勧めです.
解凍された観測ファイルは,RINEXというフォーマットのテキストファイルになります.
RINEXの詳細については,こちらをご参照ください.

 (クリックで拡大)

基地局の精密な位置を求めるためには,この電子基準点の位置が基準になります.
電子基準点の位置をダウンロードするために,提供サービスメニューに戻り,
日々の座標値[F3]をクリックします.

 (クリックで拡大)

リストの中から,観測データをダウンロードした電子基準点のIDがついている
ファイルを選びます.千葉市川のIDは93023ですので,93023.14.posを開きます.

 (クリックで拡大)

このファイルには,国土地理院が解析した電子基準点の座標データが記録されています.

 (クリックで拡大)

さて,これで基地局のアンテナ位置を求めるための基準となる電子基準点の
観測データとその座標が揃いました.

次は,これらのデータをRTKPOSTで解析します.
コメント (0) |  トラックバック (0) | 

準天頂衛星アプリコンテスト

2014-04-23 19:48:55 | みちびき
準天頂衛星をはじめとした衛星測位サービスを利用する
Androidアプリのコンテストが開催されます.

qzs.jp: 準天頂衛星アプリコンテスト2014の開催について

開催期間中に自作のAndroidアプリをGoogle Playに
アップロードして,ダウンロード数を競うようです.

上位50名に賞品としてNexus 7が贈られますが,
2012年のWi-Fiモデルと微妙.

価格.com: Nexus 7 Wi-Fiモデル 32GB [2012]

それでも,Androidアプリを勉強する良い機会なので,
チャレンジしてみたいと思います.

募集サイトは5月上旬にオープンとのこと.
希望者にNexus 7の貸し出しもしてくれるそうです.
コメント (0) |  トラックバック (0) | 

NAVIO: Raspberry Pi autopilot

2014-04-18 11:39:25 | RTKLIB
DIY Dronesの記事で,NAVIOというRaspberry Piのシールドを知った.

NAVIO: Raspberry Pi autopilot



RTKLIBを動かしているデモも公開されている.
アンテナはTallysmanのようだ.

NAVIO: RTK demonstration

DIY Dronesでのコメントによると,NAVIOの価格は$165らしい.

こういうのを見ると,Beaglebone用のcapeも作りたくなるな.
コメント (0) |  トラックバック (0) | 

RTKNAVIの使い方

2014-04-13 20:50:48 | RTKLIB
GPS受信機2台でローカルなRTKを試してみたいと,LEA-4T評価基板
2個購入される方がちらほら.折角なので,ラジコンカーでの実験を例に,
RTKNAVIの基本的な使い方を紹介したいと思います.

走行中の実験では,まったくFIXしてくれなかったので,今回はラジコンカーの
LEA-4Tに直接USBで接続して,静止状態でRTKを試みます.

 (クリックで拡大)

USBで接続されたLEA-4Tは,シリアルポートとして認識されます.
ここでは,基地局がCOM28,ラジコンカーがCOM3に接続されています.

 (クリックで拡大)

RTKNAVIを起動したら,まず画面右上のIボタン(Input Streams)をクリックして,
入力データのインターフェイスを指定します.

 (クリックで拡大)

今回の例では,RoverもBase Stationもシリアル接続ですので,
TypeにSerialを選びます.また,受信機はどちらもLEA-4Tですので,
Formatはu-bloxになります.

 (クリックで拡大)

さらに,Typeの隣のOptのボタンをクリックして,シリアルポートの
オプションを設定します.





u-bloxの受信機をRTKNAVIに接続する場合,受信機出力としてUBXフォーマットの
RXM-RAWとRXM-SFRBが必要になります.RXM-RAWには搬送波位相などの観測データが,
RXM-SFRBには放送歴などの航法メッセージが含まれています.

次に,測位結果を保存するために,Oボタン(Output Streams)をクリックして,
出力データのインターフェイスを指定します.

 (クリックで拡大)

ここでは,PC上のファイルに保存するためにTypeにFileを選びました.
さらに,出力先をOutput File Pathsで指定します.

 (クリックで拡大)

Input Streamsとして入力されるデータも,後解析のためにログとして保存することができます.
L(Log Streams)のボタンをクリックして,ログデータのインターフェイスを指定します.

 (クリックで拡大)

出力データと同様にTypeにFileを選び,Log File Pathsでログファイルを指定します.

 (クリックで拡大)

これで入出力インターフェイスの指定が完了しました.
次に,Optionsボタンをクリックして,RTKのオプションを設定して行きます.

 (クリックで拡大)

まず,Setting1のタブで,Positioning ModeにKinematicを選びます.
Frequenciesは1周波受信機ですので,L1に設定します.

 (クリックで拡大)

Setting2のタブでは,Integer Ambiguity ResとしてInstantaneousを選びました.

 (クリックで拡大)

事前に測位しておいた基地局のアンテナ位置は,PositionsタブのBase Stationで指定します.

 (クリックで拡大)

さて,これで一通りの準備が整いました.Startボタンをクリックして,測位を開始します.

 (クリックで拡大)

しばらくすると,測位結果や受信信号の強度などがRTKNAVIの画面に表示されます.

 (クリックで拡大)

画面右上,Lボタンの下にある三角形のアイコンをクリックすると,表示画面を
切り替えることができます.

 (クリックで拡大)

測位結果をグラフで表示するためには,PlotボタンをクリックしてRTKPLOTを起動します.

 (クリックで拡大)

以上がRTKNAVIの基本的な操作になります.

RTKは結局FIXせず,残念な結果でした.ログファイルに記録した観測データがありますので,
これをRTKPOSTで後処理することで,いろいろな設定を試してみたいと思います.

【追記】高須さんの実験結果を見る限り,ublox社のパッチアンテナとLEA-4Tの組み合わせで,
基線長7kmでも結構FIXしている.

GPS L1アンテナ・受信機評価

何がダメなのだろう?
コメント (6) |  トラックバック (0) | 

ラジコンカーのRTK測位

2014-04-12 19:55:57 | RTKLIB
良く晴れた実験日和.

RTKの実験にBeagleboneをラジコンカーに積もうとしたけれど,
意外と大きくてかさばる.

RTKLIBがubloxのフォーマットに対応しているのだから,
そのまま送れば良いかと妥協して,xbeeのピッチ変換基板を
その辺のジャンク基板から作成.



そして,合体.



これをラジコンカーに搭載して,roverの完成.

 (クリックで拡大)

本来であれば,移動体側でRTK測位をすべきだろうけれど,
今回はroverのrawデータを基地局に送信して,そちらで測位.

 (クリックで拡大)

基準局の受信機もublox.
アンテナは簡易的にカメラの三脚で設置している.

 (クリックで拡大)

基準局アンテナの位置を精密に求めたいのだが,
一番近い電子基準点でも30kmほど離れている.

さすがに1周波の受信機で,この基線長のRTKは厳しいので,
とりあえずしばらく測位した後,測位結果の平均値を基準局の位置とした.

後はラジコンカーを走らせながら,RTKNAVIで測位するだけなのだが,
まったくFIXしない…





まず怪しいのはアンテナかな.基地局だけでも良いアンテナにすべきか?
あと,ラジコンカーが走行中に飛び跳ね,結構姿勢が安定しない.
それも受信信号に影響しそうだ.

また,20mも離れるとxbeeの通信が切れてしまう.通信は悩みどころ.
roverからrawデータ以外にも,モニタ目的で放送歴や測位結果などを送信している.
rawデータだけに限定してbaudrateを下げれば,もう少し状況が改善される?

それでも,移動体に1Hzの測位だと隙間だらけなので,できれば4Hzくらいに
データの頻度を上げたい.

久々にラジコンカーを走らせたけれど,軌跡をモニタしながらコントロールするのは楽しい.
いろいろと課題の残る実験でしたが,ラジコンも測位も満喫しました.
コメント (0) |  トラックバック (0) | 

測位演算の効率化

2014-04-11 17:30:46 | ロケット
リソースの潤沢なPCであれば問題ありませんが,組み込みシステムの
マイコンで疑似距離と放送歴から単独測位を実施しようとすると,
処理能力が不足しがちです.

特に,放送歴から衛星位置を求める演算は,三角関数を多用します.
さらに,測位演算のiterationのたびに,すべての衛星位置を再計算するのは,
非常に効率の悪い実装になります.

そこで,この衛星位置の計算を効率化する手段として,衛星の位置,速度,
加速度をある一定周期で計算し,その間は等加速度運動と仮定して
2次関数から衛星位置を求める方法が考えられます.

ICD-GPS-200には,放送歴から衛星位置を求めるアルゴリズムしか
説明されていませんが,下記の論文などで,速度,加速度の
導出方法が示されています.

GPS Satellite Velocity and Acceleration Determination using the Broadcast Ephemeris

ちゃんとした評価をしたことがありませんが,実装してみての実感として,
10秒間隔でも単独測位には十分な精度で衛星位置を近似することができます.

可視のGPS衛星は多くても10機程度なので,1秒に1衛星,放送歴から位置,
速度,加速度を計算するだけて良いことになります.

これでずいぶんと演算負荷を軽減できるのではないでしょうか.
お試しください.

【追記】高須さんにiterationごとの衛星位置の計算は不要とご指摘いただいた.
確かに,疑似距離と衛星クロックパラメータが与えられれば,受信時刻から
逆算して信号の送信時刻を求めることができる.その時刻での衛星位置さえ
計算しておけば,再計算は不要だ.RTKLIBでは,この方法が実装されている.

坂井さんの「GPSのための実用プログラミング」を始め,多くのテキストでは
疑似距離の残差を求める際に,観測時刻における衛星と受信機の位置から
幾何学距離を求め,その伝搬遅延を差し引いて信号の送信時刻を求めている.

そのため,iterationのたびに衛星位置を再計算しているのだが,
これが不要とは思いつかなかった.

そんなわけで,2次関数での外挿は無用の長物に…

【追記2】それでもこのままでは悔しいので,2次関数で外挿された衛星位置の
誤差を評価してみた.放送歴から計算した衛星位置に対して,外挿した場合の
衛星位置の差をプロットしてみると,10秒程度であれば数cmの誤差に収まっている.
放送歴のUREが1m程度なので,十分に小さな近似誤差だと言える.



効率化への貢献度が下がってしまった外挿法だけれども,測位解の出力頻度を
上げたいときなど,さらなる演算負荷低減の役に立つかな.

コメント (1) |  トラックバック (0) | 

Beagleboneの無線化

2014-04-10 22:49:39 | RTKLIB
amazonで面白そうなUSBハブを発見.Beagleboneに丁度良さそう.

amazon: ELECOM USBハブ USB2.0対応 バスパワー 3ポート U2H-PP3BBK



3ポートあるので,Wi-FiのドングルとLEA-4T,XBeeを接続.



USBシリアルのポートにはモバイルバッテリから給電.
これで独立して動作するプラットフォームができた.



これが2台あれば,一方はbase stationとしてstr2strを,
もう一方はroverとしてrtkrcvを実行すれば,RTKができる!

そう,2台あれば…



【追記】str2strの使い方がhelpを見てもいまひとつ理解できなかったので
ソースコードを確認.例えば,USBで接続したubloxからのrawデータを
RTCM 3に変換してtcpsvrに出力したいときは,こんなオプションになります.

str2str -in serial://ttyACM0:57600#ubx -out tcpsvr://localhost:52001#rtcm3

 (クリックで拡大)
コメント (0) |  トラックバック (0) | 

LEA-4T評価基板の頒布案内

2014-04-08 07:56:48 | RTKLIB


搬送波位相の出力に対応したublox社製GPS受信機モジュールLEA-4Tの
評価基板の頒布を始めました.価格は送料込で4,000円になります.

 (クリックで拡大)

 (クリックで拡大)

BeagleboneでRTKLIBを動かした際に使用したものを,ホットプレートによる
リフローで量産したものです.あくまでも個人が趣味で設計したものであり,
性能を保証するものではありません.

USBケーブルやGPSアンテナは付属しませんのでご注意ください.
GPSアンテナは,SMAコネクタのものが接続できます.

スイッチサイエンス:GPSアンテナ 28dB 5m SMAコネクタ型

発送前にはGPS信号の受信および測位の動作を確認いたしますが,
この評価基板によって生じたいかなる故障や損害について,
いかなる責任も負いません.

以上の注意をご理解いただいた上で頒布を希望される方は
osqzss at gmail.comまでご連絡ください.

【動作確認】

1. 評価基板が届きましたら,まずu-centerをインストールしてください.

ublox: u-center GNSS evaluation software for Windows

2. 評価基板のジャンパがBUS側に接続されていることをご確認ください.



3. アンテナを接続してください.

4. USBケーブルでPCと接続すると,ドライバーがインストールされ,
シリアルポートとしてLEA-4Tと通信できるようになります.



5. u-centerを起動し,適切なCOMポートを選択してください.
Baudrateは57600ですが,u-centerは自動的に選択して接続します.



6. 出荷状態で,LEA-4TからはNAV-SOL,NAV-SVINFO,RXM-RAW,RXM-SFRBが
出力されています.これらのデータが受信されていることを確認してください.

 (クリックで拡大)

より詳細なu-centerの使い方については,下記の説明書などが参考になります.

GPS 評価用ソフトウェア 『u-center』 簡易マニュアル
u-center GPS 評価ソフトウェア ユーザーガイド
コメント (0) |  トラックバック (0) | 

MGEXでGalileo Fixes

2014-04-06 08:28:51 | RTKLIB
ESAのCertification of Galileo fixesに応募しようと,
東京からGalileoが4機可視となる早朝から調布のMGEX局にアクセス.

しかし,Galileo衛星はしっかりと4機観測されるものの,
RTCMでephemerisが流れていないのか,測位に使うことができません.

 (クリックで拡大)

MGEXのstation tableを見ると,CHOF7では,Galileoのephemerisである
message type 1045と1046に対応しているようです.

RTCMがダメならrawデータにアクセスしようと,mountpointにCHOF0を選んだのですが,
こちらには接続できず.他のサイトも,rawデータのmountpointに接続できません.
何か別の手順が必要なのかな?

【追記】RTCM 3のmessage typeを忘れるのでメモ.

1001 GPS L1 code and phase
1002 GPS L1 code and phase and ambiguities and carrier to noise ratio
1003 GPS L1 and L1 code and phase
1004 GPS L1 and L2 code and phase and ambiguities and carrier to noise ratio
1005 Station coordinates XZY for antenna reference point
1006 Station coordinates XYZ for antenna reference point and antenna height
1007 Antenna descriptor and ID
1008 Antenna serial number
1009 GLONASS L1 code and phase
1010 GLONASS L1 code and phase and ambiguities and carrier to noise ratio
1011 GLONASS L1 and L1 code and phase
1012 GLONASS L1 and L2 code and phase and ambiguities and carrier to noise ratio
1013 Modified julian date, leep second, configured message types and intervall
1014-1017 Network RTK (MAK) messages
1019 GPS Ephemeris
1020 GLONASS Ephemeris
1045-1046 Galileo Ephemeris
1071-1077 GPS-MSM data
1081-1087 GLONASS-MSM data
1091-1097 Galileo-MSM data
1101-1107 SBAS-MSM data
1111-1117 QZSS-MSM data
1121-1127 BeiDou-MSM data


【追記2】コメントで高須さんからGalileoのephemerisの受信方法を
教えていただいたので,早速試してみました.

まず,RTKNAVIのInput Streamsの(2) Base Stationに,NTRIP Clientを追加します.
FormatはRTCM 3になります.

 (クリックで拡大)

(1) Roverは,これまで通りに,調布のMGEX局に接続します.



(2) Base Stationには,MountpointとしてRTCM3EPH-MGEXを入力します.



IGS Real-time Pilot Projectなどで配信されているephemerisの情報は,
GDCのサイトで紹介されています.

GDC: Broadcast Ephemeris from EUREF & IGS Real-time GNSS Resources

続いて,RTKNAVIのOptionsからMiscタブを選び,Navigation Message Selectionに
Allか(2) Base Stationを選びます.

 (クリックで拡大)

RTKNAVIをStartしてしばらく経つと,E12のephemerisが受信され,skyplot上に表示されました.
この時間帯に東京からGalileoは1機しか観測できませんが,GPSとの複合測位ができています.

 (クリックで拡大)

(2) Base Stationで受信しているRTCM 3のstreamを見てみると,Galileoのephemerisである
Message Type 1046が確かに受信されています.

 (クリックで拡大)

これでGalileoのみでの単独測位の準備が整いました.
次に4機可視になるのはいつだろう?
コメント (2) |  トラックバック (0) |