OSQZSS

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

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ほどの
オフセットがありますが,これを取り除くとなると
大赤字大改修になりそうなので,これで良しとします.

 (クリックで拡大)

 (クリックで拡大)

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

 (クリックで拡大)

 (クリックで拡大)

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

衛星軌道での測位精度

2014-07-27 10:19:22 | 小型衛星
どうやらこの受信機,測位演算が最小二乗法ではなく
カルマンフィルタのようだ.

もともと車程度のダイナミクスを想定しているため,
衛星軌道での速度となると,不要なオフセットが発生してしまう.

確認のために,GPS信号シミュレータで太陽同期軌道のシナリオを実行.

 (クリックで拡大)

ファームウェアの改修で随分とオフセットが減少したけれど,
まだ数mほどradial方向に残っている.
ここまできたら,これも何とかしたい.

 (クリックで拡大)

それでも,衛星軌道でのコールドスタートで,
1分以内に測位が開始されるのはすばらしい.
これだけでも,かんばる価値がある!
コメント

Summer School on GNSS

2014-07-17 19:11:19 | 小型衛星
小型衛星用GNSS受信機の開発でメールをやり取りしている
エンジニアが,測位航法学会が開催するサマースクールに
参加することを知った.

測位航法学会:Summer School on GNSS 2014

メールではお互いにニックネームで呼び合っていたから
気が付かなかったよ!

受信機ファームウェアの開発をがっつりやっている方なので
会うのがとても楽しみ.

メールのやり取りだけではなかなか進まない改修作業が
一気にはかどるかも.
コメント

小型衛星用GPS受信機

2014-07-05 18:10:04 | 小型衛星
これまでにも市販品を改造したり,FPGAで受信機を開発したりして
みたけれど,サイズも消費電力も,CubeSatのような超小型衛星に
搭載するには大きすぎて,なかなかフライトのチャンスがありません.

最新のチップセットで,小型で省電力な衛星搭載用GPS受信機を
入手したいという欲望に勝てず,ついにメーカーと交渉して特別な
ファームウェアの受信機モジュールをロットトレイで発注するという
暴挙にでてみました.



早速インターフェイス基板を設計してGPS信号シミュレータで
試験したところ,衛星高度でも問題なく測位しています.

信号補足も地上と同じくらいに早く,コールドスタートからでも
測位まで1分程度です.



さすがメーカー製,測位性能がすばらしい.

さて,次は放射線試験だ.
コメント