OSQZSS

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

USBシリアルとGPS受信機の相性

2014-10-16 11:53:45 | みちびき
GPS受信機ユーザのあるある.

GPS受信機のシリアル出力をUSBシリアル変換でUSBポートに接続すると,
シリアルマウスと認識されてイラッとくる.

いまひとつ発生する条件が不明なのと,解決手段がよく判らない.

とりあえず,これを試してみよう.

Microsoft Community: Windows 7 recognized USB GPS as a serial Mouse in Windows 7
コメント (2)

RTKGPS+

2014-09-30 10:01:31 | RTKLIB
Android版RTKNAVIのRTKGPSがRTKGPS+として復活!

Google Play: RTKGPS+

作者は違うけど,ほぼオリジナルを引き継いだ感じ.
GitHubでソースも公開されているので,後でビルドしてみよう.

早速インストールしてCHOFに接続してみました.

 (クリックで拡大)

 (クリックで拡大)

 (クリックで拡大)

RTKGPS+のマップ表示では,外付けのSDカードがなくても
タイルがダウンロードされるようです.

MADOCAプロダクトでPPPも試そう.

【追記】PPPの精度に効いてくる疑似距離誤差の設定がRTKGPS+では
見当たらない.ANTEXやPCVの選択もできないようだ.

しばらくMADOCAプロダクトを使ってPPPモードで動かしてみたけれど,
1メートル程度の測位誤差でふらふらしている感じ.

OpenStreetMapのズームも,PPPのばらつきが判るほど拡大できない.
RTKPLOTに相当する表示機能がないのが残念だ.
コメント

MADOCAプロダクトでPPP

2014-09-29 12:28:32 | みちびき
JAXAが開発を進めているGPS+GLONASS+QZSSの精密軌道・クロック推定システムである
MADOCAによる補正データのネットワーク配信が始まりました.

QZ-Vision: MADOCAプロダクトリアルタイムインターネット配信開始のお知らせ

誰でもアクセスできますが,ユーザ登録が必要です.
MADOCA Real-Time ProductsサイトのApplicationのページからApplication Formを
ダウンロードし,必要事項を記載してサポートディスクにEmailで送ります.

同ページでRTKNAVIによるMADOCAプロダクトの使い方も紹介されていますが,
個人的にメモを残しておきます.

基本的には,IGS Real-Time Serviceなど,他のNtripによる配信サービスと同じです.

Input StreamsとしてRoverには,MGEX局である調布(CHOF)を選びました.



CorrectionにMADOCAのmountpointのひとつであるMDC1を選びます.



MADOCAに含まれる精密軌道は,ephemerisに対する補正データなので,
何らかの形でephemerisも受信しなければなりません.CHOF局のRTCMは
観測値だけでephemerisは含まれていないため,Base Stationsとして
RTCM3EPH-MGEXを選び,ephemerisもネットワーク経由で受信します.



Optionsの設定は,Applicationページに紹介されていたマニュアルを
参考にしました.









Filesタブにおいて,igs08.atxにはGPSやGLONASSのアンテナ位相中心の
情報が含まれています.このファイルは,National Geodetic Surveyの
ANTCALで公開しており,RTKLIBのDataフォルダにも入っています.

一方,Roverのアンテナ位相中心の情報を含む.pcvは,受信アンテナに応じて,
ユーザが準備する必要があります.代表的なアンテナについては,
RTKLIBのDataフォルダに入っているngs_abs.pcvを使うことができますが,
CHOF局のアンテナであるTrimbleのTRM57971.00は含まれていません.

これら受信局アンテナのPCVは,ANTCALでANTINFOとして公開されています.
TrimbleのリストからTRM57971.00のANTINFOを検索し,madoca.pcvという
ファイルを作りました.

.pcvにリストアップされている受信局アンテナは,Positionsタブの
Antenna TypeでAutoを選択しておくと,RTCMに受信局のアンテナ情報が
含まれていれば,自動的に選択してくれます.

しかし,今回はCHOFのアンテナタイプが判っていますので,
プルダウンからTRM57971.00を選んでいます.

これで準備完了です.Startボタンをクリックして,測位を開始します.

 (クリックで拡大)

みちびきも観測されていますが,RTCM3EPH-MGEXからは
ephemerisが取得できず,測位には使われていません.

24時間動かしてみた結果は,こちら.

 (クリックで拡大)

何とも言えない微妙な精度です…
悪くはないけれど,センチメートル級と呼ぶのは躊躇します.

12時と24時に30分ほどデータ配信が停止するのも気になるところ.
今後のアップデートに期待しています.

折角のネットワーク配信なので,もっとユーザが増えて,
いろいろな環境での測位結果を公開して欲しい.

【追記】測位誤差をプロットする際のCHOFの精密位置は
三鷹の電子基準点を使って,RTKで求めています.

緯度:35.674544543 [度]
経度:139.531062059 [度]
高度:93.9147 [m]

【追記2】taro君のアドバイスに従い,Code/Carrier-Phase Error Ratioを
1000に変更して,再挑戦してみました.



RTKLIBでのPPPの実装はカルマンフィルタを使っているため,疑似距離の
観測誤差を大きく(重みを小さく)しないと,PPPの結果が疑似距離誤差に
引っ張られてしまうようです.

新しい設定での結果が,こちら.

 (クリックで拡大)

時々補正データが途切れていますが,解が収束すると水平方向は+/-10cmに,
鉛直方向は+/-20cmに収まっています.Ambiguity resolutionをOFFにしている
ことを考えると,十分な性能です.

微妙な精度なんて言って,ごめんなさい.
コメント (2)

Space Capable Miniature GNSS Receiver

2014-08-30 15:34:51 | 小型衛星
鋭意開発中の小型衛星用GPS受信機ですが,実はGLONASSにも対応した
GNSS受信機だったりします.

GLONASS対応の動作確認をどうしようかと悩んでいたところ,SPIRENT
ご厚意で,マルチGNSS対応のシミュレータを試用させていただきました.

GSS6700: Multi-GNSS Constellation Simulator System

ちなみに,シミュレータでGPSの軌道を設定する際にはYUMA almanacを使いますが,
GLONASSの場合はAGLというフォーマットのalmanacファイルが以下のFTPサイトから
ダウンロードできます.

ftp://ftp.glonass-iac.ru/MCC/ALMANAC/

すでに,GPSシミュレータで使用したシナリオがあるので,追加するのはこれだけ.
早速,受信機を繋げて試験開始です.



この圧倒的な衛星数!

 (クリックで拡大)

しかし,残念なことに,GLONASSのinter-frequency biasesが原因でGPSのみの結果
比較して測位精度は劣化します.衛星軌道では,可視衛星が頻繁に切り替わるため,
測位誤差もその度に大きく変化します.

 (クリックで拡大)

それでも各軸6m以下の位置誤差なので,実用上,小型衛星の運用には問題ないレベルです.

もちろん,ロケット搭載を考慮したハイダイナミクス対応も健在.観測ロケット程度の
軌道では可視衛星がほとんど変化しないために,測位誤差もほぼ一定です.

 (クリックで拡大)

可視衛星数と測位精度のどちらを優先するのかは,ミッションごとのトレードオフかと
思います.常に姿勢が地球指向で,GNSSアンテナが天頂を向いている衛星であれば,
周りに障害物のない衛星軌道ではGPSだけでも十分な衛星数が確保できます.

しかし,小型衛星には姿勢の安定しないものが多く,可視衛星数も大きく変化します.
例えば,衛星が90度傾き,アンテナが水平線を向くと,単純に衛星数が半分となります.
こうなると,GPSのみでは,十分な可視衛星が確保できなくなります.そんなときに
GLONASSも使うことができれば,姿勢によらず安定した測位が可能になるかもしれません.

また,ロケットのように,構造的にアンテナの設置場所が制限されるプラットフォームでは,
十分な可視衛星を確保するために,GLONASSも使用した方が有効です.

さて,これでほぼ機能的にはspace "capable"なGNSS受信機が完成しました.
受信機モジュールのサイズは17mm×23mm,消費電流は3.3Vで50mAと小型・省電力.
これでGPSとGLONASSに対応と至れり尽くせりです.

しかし,受信機モジュールのハードウェアは完全に市販品.果たして衛星軌道での
放射線環境に耐えることができるのかどうか,未知数です.

放射線の総量での劣化を評価するトータルドーズ試験は,大学の研究室や
産業技術センターなどで実施できるのですが,シングルイベントとなると
実施できる施設も限られ,予算的にも厳しいです.

そこで,GNSS受信機の搭載に興味があり,放射線試験をお手伝いしてくださる
大学の衛星プロジェクトを大募集!

もちろん,放射線耐性なんて気にせず,一足飛びに衛星に搭載して軌道実証でも
かまいません.

試験用と衛星搭載用の受信機モジュールは無償で提供させていただきます.
ご興味のある方は,osqzss at gmail.comまでご連絡ください.
コメント

衛星運用局用NTPサーバ

2014-08-28 15:33:27 | 小型衛星
Raspberry PiとGPS受信機を使ったNTPサーバが無事に動いたので,
小型衛星の運用局に設置してきました.

自作のublox基板を使う予定だったのですが,ケースに納まるように,
市販のキットを購入しました.

habsupplies: Raspberry Pi GPS Addon Board

2機の小型衛星を同時に運用していますが,運用局サーバはそれぞれ
独立しているため,NTPサーバも2台準備します.



ケースはRSオンラインで購入しました.高さ方向に余裕があり,
GPS受信機基板を納めるのに丁度良いです.

RSオンライン: Raspberry Pi Type B ケース

アンテナのケーブルを通すために,LANとUSBポートの間の仕切りを
カットしました.ケースの素材も柔らかく,加工は簡単です.



SDカードに書き込んだRaspbianのIPアドレスは,デフォルトでDHCPと
なっているので,これを固定IPに変更します.

$ sudo emacs /etc/network/interfaces

設定ファイルのiface eth0 inet dhcpのラインを,例えば以下のように
書き換えます.

iface eth0 inet static
address 192.168.2.15
netmask 255.255.255.0
gateway 192.168.2.1


これでRaspberry Pi側の準備は整いました.運用局のLANに接続します.



ところが,設定した固定IPにSSHでログインしてntpqで動作を確認したところ,
サーバ名の先頭に何も記号が表示されず,いつまで経っても同期しません.

どうやら一旦電源を落としたため,Raspberry Piのクロックが現在時刻とは
大きく異なる値に初期化されているようです.そこで,クライアントの時刻を
dateコマンドで設定し直します.

$ sudo date --set 2014-08-28
$ sudo date --set 15:33:27


ntpdを再起動してしばらく待つと,GPS受信機のNMEAとPPSに同期できました.

同様に,運用局サーバからも,ntpdateで時刻を設定することができました.

$ sudo ntpdate 192.168.2.15

このとき,ntpdが動作しているとthe NTP socket is in use, exitingという
エラーが表示されます.この場合は,一旦ntpdを停止させます.

$ sudo /etc/init.d/ntpd stop

これで運用局サーバでもntpdで時刻同期ができるかと思ったのですが,
どうも上手く動いてくれません.ntp.confの設定がどこか間違っていると
思うのですが,いまのところ原因不明です.

接続しているNTPサーバはどうせ1台なので,デーモンを常駐させるより,
cronで定期的にntpdateを実行した方が良いのかな?

【追記】しかし,habsuppliesのGPS基板は,ちょっと高い.
1ポンドが170円くらいだから,約6,800円.
Aliexpressで格安のNEO-6Mが1,000円以下で購入できるので,
自作した方が安かったな.
NEO-6Mなら,unofficialなコマンドでrawデータも出力できるし,
RTKLIBでも楽しめそうだ.

【追記2】基板を作ることになったら,I2C接続のRTCも搭載しよう.
コメント

GPS+BeiDouの1周波RTK

2014-08-25 12:21:52 | RTKLIB
ほぼデバッグ要員として開発のお手伝いをしていた
SkytraqのRAWデータ対応GPS+BeiDou受信機で,
何とかRTKが動くようになってきました.

実験の結果が,NavSparkのblogで公開されています.

NavSpark Blog: Single Frequency Receiver RTK Result Comparison

受信機モジュールの型番はS1722F8-BD-RAW.
実験で使ったRTKLIBは,BeiDouの出力フォーマットに
対応したカスタム版です.

そのうち,GitHubでmergeとかできるのかな?
コメント

Galileo衛星打ち上げ失敗

2014-08-24 12:37:17 | みちびき
8月22日に打ち上げられた2機のGalileo衛星が,軌道投入に失敗したようです.

Arianespace: Galileo satellites experience orbital injection anomaly on Soyuz launch
sorae.jp: ソユーズ・ロケット、ガリレオ衛星の打ち上げに失敗 予定軌道を大きく外す

celestrakから,これら衛星の軌道要素が公開されていたので,
Orbitronで軌道をプロットしてみました.

まず,正常なGalileo衛星の軌道として,E11をプロットしてみます.

celestrak: NORAD/elements/galileo.txt

 (クリックで拡大)

次に,軌道投入に失敗したGalileo衛星の軌道をプロットしみます.

最近30日間に打ち上げられた衛星のTLEファイルの中で,衛星カタログ番号の
40128Uから40130Uが,2機のGalileo衛星とFregatと呼ばれるソユーズの
上段部になります.

celestrak: NORAD/elements/tle-new.txt

 (クリックで拡大)

これはひどい…

すでに打ち上げられていた4機の内,E20に不具合が発生して
信号が停止したり,他の衛星も信号強度が低下したりと,
何かとトラブル続きのGalileoですが,今回の失敗で計画が
さらに遅れそうです.

【追記】ちなみに,Galileo衛星を搭載したFregat上段部はこんな感じ.

Arianspace: Integration of the "upper composite" is underway for Arianespace's August 21 dual-passenger Soyuz mission

そして,分離のイメージイラスト.


(c) ESA
コメント

Orbitronで楽しもう

2014-08-20 22:22:38 | 小型衛星
ちょっとオフトピックかもしれませんが,位置情報ということで
Orbitronでほどよし衛星の軌道を眺めて楽しもうという記事です.

ほどよし衛星を始め,低軌道衛星の軌道情報はTLE(Two-Line Elements)という
フォーマットで公開されています.

wikipedia:Two-line element set

このTLEから衛星軌道を計算し,地図上にプロットしてくれるソフトウェアがあります.
その中のひとつが,Orbitronです.

現在時刻の衛星位置をGoogle Maps上にリアルタイムで表示してくれるサイトもありますが,
Orbitronであれば,未来の衛星位置も予測することができます.

衛星軌道から撮影された地上の画像を次々とアップしているほどよし衛星が,
次はどこを撮影するのだろうと予想しながら楽しむことができます.

Facebook: hodoyoshisat

Orbitronのインストーラは,下記のサイトからダウンロードできます.
現時点でのバージョンは,3.71です.

Orbitron: Downloads

ついでに,World mapsからColoured HiResをダウンロードしておきます.

インストーラを起動すると,デフォルトでProgram Filesにインストールしようとします.
しかし,TLEのアップデートなど,定期的にファイルを上書きする必要があるため,
書き込みに管理者のアクセス許可を必要とするフォルダは不便です.

そこで,インストール先には,C:\Orbitronなど,アクセスが自由なフォルダを
指定することをお勧めします.

 (クリックで拡大)

インストール後にOrbitronを起動すると,まずTLEが古いのでアップデートするかどうか
質問されます.ほどよし衛星以外の衛星までアップデートされますが,とりあえず全て
新しくしておきます.

また,デフォルトでフルスクリーン表示ですが,画面右上をクリックするとメニューが表示され,
フルスクリーンモードを解除することができます.

さて,デフォルトの画面はこんな感じです.ここから少しずつ設定を好みに合わせて行きます.

 (クリックで拡大)

まずは,画面下部のタブからVisualisationをクリックし,描画の設定を変えてみます.
個人的にはこんな感じ.

 (クリックで拡大)

次にLocationタブをクリックしてTokyoを選びます.
さらに,マップ上をクリックして動かし,Tokyoを中心に持ってきました.

 (クリックして拡大)

マップがデフォルトのBlueではなんとなく寂しいので,インストーラと一緒に
ダウンロードしたColoured HiResに差し替えます.

まず,ダウンロードしたcoloured-hr.zipを解凍し,World-Coloured-HiRes.bmpを
Orbitron\Dataフォルダにコピーします.

次に,Mainのタブに戻り,工具のイラストのアイコンをクリックして,Setupを開きます.
ここで,World mapのタブをクリックし,PresetにUserを,Map imageにColoured-HiResを選択します.

 (クリックで拡大)

これで,メイン画面のマップが高解像度のカラー画像になりました.

 (クリックで拡大)

さて,これでやっと,ほどよし衛星の軌道をプロットする準備ができました.
画面右のLoad TLEボタンをクリックして,TLEフォルダからresource.txtを選択します.
このファイルの中に,ほどよし衛星のTLEが記録されています.

 (クリックで拡大)

resource.txtをロードすると,Satellitesタブの中にHODOYOSHI-3とHODOYOSHI-4が見つかります.
これらをチェックすると,マップ上に軌道がプロットされます.

 (クリックで拡大)

デフォルトでは現在時刻の衛星位置を表示していますが,ModeをReal timeからSimulationに
切り替えることで,任意の時刻の衛星位置をプロットすることができます.

しかし,TLEはあくまでも予測軌道であり,あまり先の軌道を予測すると精度が低下します.
また,TLEファイルも定期的にアップデートしなければなりません.

デフォルトでは,すべての衛星のTLEをアップデートする設定になっていますが,
とりあえずは,ほどよし衛星が含まれるresource.txtのみで十分です.
TLEのアップデートは,SetupのTLE updaterタブで設定することができます.
例として,ここではresource.txtのみをアップデートするグループを作成しています.

 (クリックで拡大)

Satellitesタブで複数の衛星を選択しても,マップ上にプロットされる軌道はひとつだけです.
プロットする衛星は,Show nextボタンをクリックすることで,切り替えることができます.

さらに,Dataタブをクリックすると,現在選択されている衛星の軌道データが表示されます.
例えば,緯度・経度情報からGoogle Mapsにマーカーを表示させることで,ほどよし衛星が
どこに居るのか,詳細な位置を知ることができます.

Googleマップ座標取得

衛星がどこを飛んでいるのか,軌道を眺めているだけでも不思議と楽しいです.
コメント

Raspberry PiでNTPサーバ

2014-08-11 15:54:03 | 小型衛星
某小型衛星の運用局は,セキュリティの関係でインターネットには接続されていません.
運用局のPCやデータサーバの時刻同期に外部のNTPサーバにアクセス出来ないのは
とても不便なので,Raspberry Piを使ってLAN接続のNTPサーバを作成してみました.



まず,GPS受信機のPPS信号に同期するNTPサーバ用にリビルドされた
Raspbian wheezyのイメージを下記のサイトからダウンロードします.

Raspberry Pi NTP server image

次に,このイメージをWin32 Disk ImagerでSDカードに書き込みます.

準備はこれだけのようです.SDカードをRaspberry Piに差し込み,電源を入れれば
NTPサーバとしてbootしてくれます.

/etc/ntp.confの設定などは,下記のサイトを参考にしました.

5 minute guide to making an GPS synchronised NTP Server based on a Pi
GPSのPPS信号を使った Stratum-1 NTPサーバの作り方
Raspberry PiでNTP Stratum 1サーバーを作る

ntpq -pでNTPサーバの動作を確認すると,こんな感じ.

 (クリックで拡大)

これで良いのかな?
とりあえず,運用局PCに接続してみよう.

【追記】STM32+ubloxのNTPサーバが販売されていた.

Laureline GPS NTP Server

地味にRaspberry Piの発熱が気になっていたので,STM32の方が消費電力は少なそう.
あと,オンボードのクロックもTCXOか.
ケースも付いてこの値段なら,こちらの方がお買い得だな.

【追記2】NMEAのシリアル出力はPPS信号から遅れて出力されるため,
NEMAに同期させる場合は,そのオフセットを指定する必要があります.
このオフセットの値は,ntp.confで定義されています.

$ sudo emacs /etc/ntp.conf

次の行のtime1の値を適当に調整します.

fudge 127.127.28.0 time1 +0.165

編集後にNTPサーバを再起動すると,新しいオフセット値が反映されます.

$ sudo /etc/init.d/ntp restart

【追記3】オリジナルのRaspbianのイメージではTTYに使われている
シリアル通信を,NTPサーバのイメージではGPSのUARTに使います.
そのため,Raspberry Piをネットに接続したときに,SSHでアクセス
したくても,IPアドレスが確認できません.

ホスト側で検索できないものかと情報を探してみたら,Raspberry Piの
Helpページに解説がありました.nmapというツールで,ホストに接続されて
いるデバイスのIPアドレスが検索できるようです.

raspberrypi.org: IP Address
コメント

測位アルゴリズムの改修

2014-08-02 19:26:55 | 小型衛星
サマースクールの合間に,小型衛星用GPS受信機
測位アルゴリズムを改修.ダイナミクスに制限のある
カルマンフィルタではなく,シンプルに最小二乗法を
実装しました.

GPS信号シミュレータの衛星シナリオで試験したところ,
Radial方向のオフセットがほぼ解消されました.

まだRadial方向とTangential方向に数十cmほどの
オフセットがありますが,これを取り除くとなると
大赤字大改修になりそうなので,これで良しとします.

 (クリックで拡大)

 (クリックで拡大)

もちろん,ロケットでもいける!

 (クリックで拡大)

 (クリックで拡大)

自作受信機の意味ねーな.
コメント