OSQZSS

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

マルチGNSSスマートフォン

2014-05-31 14:14:26 | Android
BroadcomのFrank van Diggelenによるスマートフォン向けの
BeiDou/Galileo/GLONASS/GPS/QZSS/SBASチップに関する記事.

GPS World: Interchangeability Accomplished

BCM47531がすでに対応しており,実機での動作写真もある.
今年にはこのチップを搭載したスマートフォンやタブレットが出てくるらしい.
これは楽しみ.

【追記】市場の規模を考えたら,BeiDou対応は当然だよな.

Broadcom: New GNSS Location Chip with Support for Chinese BeiDou Satellite System
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RTKLIBでマルチGNSS測位

2014-05-28 12:51:32 | RTKLIB
RTKLIBが新しいパッチ(rtklib_2.4.2_p6)でBeiDouを含めた測位に
公式に対応したので,Taro君のテストデータをダウンロードして,
移動体でのマルチGNSS測位を試してみました.

Taro +memo: RTKLIBでMulti-GNSS-RTK

オプションは評価結果のPDFファイルで説明されている設定と一緒です.

 (クリックで拡大)

 (クリックで拡大)

GPSのみと,GPS+GLONASS+QZSS+BeiDouでの精密測位の結果は以下通り.

 (クリックで拡大)

 (クリックで拡大)

Google Earthの3次元マップで見てみると,どこで測位精度が劣化しているか
一目瞭然で面白い.

 (クリックで拡大)

それでも,高層ビルの多い都市部で,70%近いFIX率はすごい.

【追記】本家のチューニングは95%を超えている!

日記・備考録: 2014/05/28

【追記2】と思いきや,どうやら間違った位置にFIXしているようだ.
結局70%近辺に落ち着いている.

日記・備考録: 2014/05/29
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RTKLIBのBeiDou対応

2014-05-27 10:08:27 | RTKLIB
RTKLIBの新しいパッチ(rtklib_2.4.2_p5)が公開され,
BeiDouを含めた測位に正式に対応しました.

RTKLIB: Support Information

そこで,早速,マルチシステムでの測位を試してみました.
赤点がGPSのみ,青点がGPS+GLONASS+BeiDou+QZSSでの
single point positioningの結果になります.

 (クリックで拡大)

ばらつきは減少しますが,オープンスカイなので,全体的な誤差としては
あまり変化がありません.静止衛星が多いBeiDouの影響で,
北東-南西方向に伸びた誤差分布になる傾向があります.

スカイプロットはこんな感じ.最大で25機,常に20機以上の衛星が可視です.
QZSSが見えている時間帯を選んだので,このときGalileoは見えていません.

 (クリックで拡大)

ひとつ残念なのが,今回のアップデートで,GPS以外の衛星システム単独での
測位ができなくなったことです.例えばGPS-BeiDouなど,GPSを含めた測位は
実行できるのですが,BeiDou単独での測位ができません.

これまではGPS以外のシステム単独でも測位が実施できたので,
これはもとに戻して欲しいな.

あと,しばらく航法メッセージの異常が続いていたBeiDouのC04が,
何事もなかったのように正常な運用に戻っていました.

 (クリックで拡大)

結局,なにもアナウンスがなかったけれど,いったい何があったんだろう?

【追記】記事を書いていて思ったのだが,マルチシステムでの測位が普通になった今,
single point positioningの和訳が単独測位というのは紛らわしい.GPSとGLONASSの
単独測位と書かれたら,システムとして単独ではないのに単独測位とはこれいかにと
思ってしまう.

【追記2】GPS以外の衛星測位システム単独での測位に対応したパッチ(rtklib_2.4.2_p6)が
公開されました.ありがとうございます!

赤がGPSのみ,青がBeiDouのみでのsingle point positioning結果になります.
BeiDou単独での測位誤差の分布は,衛星配置への依存性が顕著です.
オープンスカイで誤差が4m以上になるのは,ちょっといただけない.

 (クリックで拡大)
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

GPSによるロケットの飛行安全

2014-05-20 09:57:53 | ロケット
先日,GPS IIF-6衛星を打ち上げたDelta 4ロケットは,
飛行安全のための追尾に,これまでのレーダーではなく
ロケットに搭載されたGPS受信機を利用したそうです.

Spaceflight Now: Rockets leap into the 21st century with GPS upgrade

JAXAもH-IIAの高度化として,レーダー局を廃止して,
機体搭載型の飛行安全航法センサを開発するらしい.

文部科学省: 宇宙輸送系研究開発に係る平成 27 年度の取組の検討状況について

ロケット搭載用GPS受信機の時代が来る!
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Androidで位置ゲーム

2014-05-19 23:29:06 | Android
準天頂衛星アプリコンテストに向けて作成中の位置ゲームが
やっと形になってきた.

GPSで測位がきるよう,屋外で一通りの動作を確認.



UIのセンスが皆無であることには目をつぶるとして,
とりあえず実現したかった最小限の機能は実装できた.

ネタばらしをすると,その昔に作ってみたいと思いながらも
手を出さずに終わってしまったReverse Geocache Puzzleの
Androidアプリ.

Arduiniana: The Reverse Geocache Puzzle



実際に宝箱を開けるというハードウェアが持つ独特の魅力には
敵わないけれど,Android端末だけで同じ機能が実現できるのは
お手軽で良い.

【追記】AVDでGoogle Mapsは表示できるようになったものの,
Backボタンで地図を表示しているActivityから戻ろうとすると,
LogCatに次のようなエラーを出力してクラッシュしてしまう.



どうやらOpenGL ES 2.0の問題のようだが,解決法が判らない.
ARM EABI v7aのSystem Imageではサポートされていない?

stackoverflow: Does the Android Emulator support OpenGL ES 2.0?

【追記2】x86 System ImageのGoogle APIsを使ってみたけれど
同じようにクラッシュする.stackoverflowに同じ現象が報告されて
いるけれど,解決法はなし.実機では発生しないので無視しても
良いのだけれど,なにかと不便だ.

stackoverflow: Google Maps activity crashes with SIGSEGV on back button
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

BeiDouの航法メッセージ

2014-05-15 05:30:12 | RTKLIB
高須さんのところにskytraqから送られてきたrawデータ対応の
GPS+BeiDou受信機をお借りして評価しています.



NavSparkのBeiDou版かと思っていたら,モジュールタイプでした.
多分中身は同じで,CAN5125とVenus 8なのでしょう.
ファームウェアはrawデータ対応のカスタム品です.

観測データについては,GPSのrawデータ出力に対応している
S1315F-RAWと同じフォーマットなので,問題なくデコードできます.

しかし,BeiDouの航法メッセージのデコードが面倒なうえに,
ファームウェアがバグだらけ.ほぼskytraqのバグ取り要員です.
バグを指摘すると,次の日には新しいファームウェアが送られてきます.
1週間も経たずに,すでに2回もファームウェアが更新されました.

S1315F-RAWを評価したときを思い出します.歴史は繰り返される

ソフトウェア受信機でBeiDouの単独測位をしてから1年以上経つので,
ほどんど仕様を忘れており,同じところでつまづいています.

そんな訳で,備忘録.

1. 航法メッセージにはD1とD2の2種類がある.MEO/IGSOはD1,GEOはD2を放送.
2. D1が50bpsなのに対して,D2は500bps.
3. D1のサブフレームは6秒毎に繰り返される.一方,D2は0.6秒毎.
4. 5つのサブフレームで1つのフレームを構成.D1は30秒,D2は3秒で1フレーム.
5. D1のSOWは,それが含まれるサブフレームの先頭が送信された時刻を示す.
(GPSの場合は,次のサブフレームが送信される時刻.)
6. D2のSOWは,それが含まれるフレームの先頭が送信された時刻を示す.
(サブフレームではないので注意.5つのサブフレームのSOWは同じ.)
7. D1のephemerisは,サブフレーム1~3に含まれる.
8. D2のephemerisは,サブフレーム1のページ1~10に含まれる.
9. D2のサブフレーム1は最初の150ビットのみが有効.残りはリザーブ.
(リザーブは0と1の繰り返し.)

これだけ思い出すのに,結局BeiDouのICDを再度読み直す羽目に.
almanacをデコードする元気がなくなったので,とりあえずephemerisだけで良しとします.

さて,GPS+BeiDouの評価をしていて気付いたのですが,いくつかの
BeiDou衛星が正常に受信できていません.



2007年に打ち上げられたC30は電波を出していないようで,
そもそも受信ができません.

C13はhealthフラグが立っていました.メンテナンス中でしょうか.
C02は東京からだと仰角が低く,受信が難しいようです.

問題はC04です.受信強度が高く,healthフラグも問題ないのですが,
なぜかephemerisが正常と判断されません.

ephemerisのパラメータをひとつひとつ調べてみると,
Week Numberが3000週を超えるような大きな値を示していました.
今週は,正しくは436です.

これは明らかな異常で,healthフラグを立てるべきなのですが,
普通に運用されています.

結構重大な不具合かと思うのですが,GNSS界隈でもまったく
ニュースになっていません.なにか見落としている?

【追記】Trimble NetR9でモニタしてみると,healthフラグが立っている
C02は正常に認識されて赤く表示されていますが,C04のephemerisは
IODEが認識されていないのにhealthフラグはクリアです.
やっぱり異常だよな,これ.

 (クリックで拡大)
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Nexus 7でQZSS

2014-05-14 07:04:33 | Android
準天頂衛星アプリコンテストの説明を読むと,Nexus 7 (2012)のWi-Fiモデルは,
準天頂衛星のL1-C/A信号を受信することができると書かれています.

しかし,これ,どうやって確認すれば良いのでしょうか?

そこで,Nexus 7に搭載されているGPS受信機の出力をモニタするために,
u-centerのAndroidアプリをインストールしました.

u-blox: u-center GPS evaluation App

Android版のu-centerにはNMEAモニタが搭載されており,
そこから受信機の状態を知ることができそうです.

 (クリックで拡大)

NMEAフォーマットの詳細は省くとして,$に続く最初の2文字はtalker IDと呼ばれ,
GPがGPS,GNがGPSとGLONASSのmixed data,QZがQZSSを示します.

それに続く3文字のうち,GSVが可視と予測される衛星,
GSAが測位演算に使われている衛星を示しています.

Nexus 7のNMEA出力を見てみると,QZGSAに衛星番号01があることから,
測位演算にQZSSの初号機,みちびきが使われていることが判ります.

GNGSAがあるため,GLONASSも受信しているのかと期待したのですが,
どうやら,Nexus 7 (2012)ではGLONASSは受信できていないようです.
Nexus 7 (2013)の仕様を見ると,こちらはGLONASSも受信できます.
コンテストの賞品,こっちにしてくれないかな…

ASUS: Nexus 7 (2013) スペック

QZGSVからは,仰角が69度,方位角が191度に衛星が見えていることが
判ります.これをGNSS Radarで予測した位置と比較すると,ほぼ同じです.
これがQZSS衛星で間違いないようです.

 (クリックで拡大)

さて,残った$PGLORは何でしょうか?

一般的に,$の次のPはProprietary(所有の,独占の)を意味しており,
受信機メーカが独自に決めたフォーマットを示しています.

どこのメーカのフォーマットかと調べてみたら,Global Locateのものであることが判りました.
この会社は,2007年6月にBroadcomに買収されています.

Broadcom to Acquire Global Locate, Inc., a Provider of Industry-Leading GPS Chips and Software

ネットで検索しても,フォーマットの仕様を見つけることはできませんでした.
衛星番号や通信の状態など,なんとなくは予想できそうですが,
仕様をご存じの方がいらっしゃいましたら教えてください.
A-GPS関連のセンテンスなのかな?
コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

BluetoothでRtkGpsに接続

2014-05-13 22:30:41 | Android
準天頂衛星アプリコンテストでお借りしたNexus 7が届きました.
早速,Android版のRTKLIBであるRtkGpsをインストールしてみます.

Licenseを読むと,ソースコードも実行ファイルも配布は自由のようですので,
下記のリンクにアップしておきます.

http://www.muse.dti.ne.jp/ebinuma/download/rtkgps/

まず,apkファイルをインストールするために,SettingsのSecurityから,
Unknown sourcesをチェックしておきます.

 (クリックで拡大)

apkファイルをインストールする方法はいくつかあるようですが,
gmailのアドレスに送ったapkファイルへのリンク先を
Nexus 7で開くのが一番簡単そうです.

RktGpsには,Bluetooth経由でLEA-4Tを接続します.
ラジコンカーのRTK実験で作成したXBeeのピッチ変換基板に
ランニングエレクトロニクスのSBXBTを接続します.



BluetoothのUSBドングルには,その辺に転がっていたPlanexの
BT-Micro3E2Xを使いました.

SBXBTのファームウェアは,@HirakuTOIDAさんのアドバイス通りに
接続先のbaudrateを115200に固定したものに書き換えています.
LEA-4Tのシリアル出力もそれに合わせておきます.

Avionics for HPA: XBeeタイプマイコン基板 SBXBTでHPA_Navi IIを無線化する

さて,LEA-4TとSBXBTに給電してからNexus 7のBluetoothをONにすると,
SBXBTが見つかります.デバイス名をタップしてPINに0000を入力すると,
pairingできます.

 (クリックで拡大)

RtkGpsでは,まずメニューからInput streamsを選び,GPS受信機との
入力インターフェイスを設定します.

 (クリックで拡大)

今回は,単独測位を試すために,INPUT ROVERのみをONにして,
TypeからBluetoothを選びます.

 (クリックで拡大)

次にStream settingsをタップして,Bluetooth deviceにparingしている
SBXBTを選択します.

 (クリックで拡大)

Formatにはu-blox LEA-*Tを選びます.

 (クリックで拡大)

これで単独測位の準備が整いました.メニューからServerをONにすると
LEA-4Tに接続して,測位が開始されます.



お借りしたNexus 7はWi-Fi版ですが,モバイルWi-Fiルータを使えば
ntrip経由で基準局に接続することもできます.

次はリアルタイムでRTKを試してみよう.

【追記】HPA_Navi IIとの接続も確認.
ubloxからの出力は,2番目のXBeeのポートに直結しています.

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

AndroidでGoogle Maps

2014-05-10 09:30:07 | Android
衛星測位のアプリケーションならGoogle Mapを使ってみたいので,
Google Maps Android API v2の勉強.

頻繁に開発ツールやAPIがアップデートされているためか,検索でヒットする
サイトの説明が結構ばらばらです.SDKもインストールしたばかりなので,
Google Developersの最新情報を参考に,作業を進めます.

Google Maps API: Getting Started

非常に丁寧な説明で,基本的に順番通りに進めて行けば良いのですが,
説明がテキストベースということもあり,API keyの取得には戸惑いました.
ここは,スクリーンショットが豊富な解説サイトが参考になります.

Google Maps Android API v2 - Tutorial
Android working with Google Maps V2

さて,Getting Startedでは,Add a mapでサンプルをビルドするところまでしか
説明されていません.

とりあえずエミュレータでで実行してみたのですが,まずは失敗.

 (クリックで拡大)

エラーメッセージを頼りに検索してみたら,こんなスレッドを発見.

stackoverflow: This app won't run unless you update Google Play Services

UPDATE
The Google maps API v2 is now installed on the latest Google system images (api:19 ARM or x86).
So your application should just work with the new images. There is no need to install these files.


どうやらGoogle Maps API v2をサポートしているsystem imageはAPI Level 19以上のようです.
そこで,AVDのTargetをGoogle APIsのLevel 19で作りなおし.

 (クリックで拡大)

これで無事にGoogle Mapsがエミュレータで動作しました.

 (クリックで拡大)
コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RtkGpsとOpenStreetMap

2014-05-09 00:15:38 | Android
エミュレータ上で測位が確認できたRtkGpsですが,メニューからMapを開いてみると
ただの方眼紙が表示されて,地図は空っぽです.

 (クリックで拡大)

Map表示には,デフォルトでAndroid版のOpenStreetMapライブラリであるosmdroidを
使っているようです.

osmdroid: OpenStreetMap-Tools for Android

確かにlibsフォルダの中にそれらしいライブラリがあります.

エミュレータで地図を表示させようとしたときのLogCatのメッセージを見ると,
Problem downloading MapTileという警告が出ています.

osmdroid関連の問題だろうと検索してみると,stackoverflowでこんなスレッドを発見.

Osmdroid and Mapnik tile provider no longer working
Downloading maptile: /0/0/0 HTTP response: HTTP/1.1 403 Forbidden

そこで,まずはsrc/ru0xdc/rtkgps/MapFragment.javaのTile SourceをMAPNIKから
MAPQUESTOSMに変更してみました.

 (クリックで拡大)

しかし,これで警告は消えるのですが,地図はあいかわらず空っぽのままです.

半分あきらめてosmdroidのソースコードを眺めていたのですが,MapTileの保存先に
外部メモリが指定されていることに気づきました.

osmdroid-android/src/main/java/org/osmdroid/tileprovider/constants/OpenStreetMapTileProviderConstants.java

/** Base path for osmdroid files. Zip files are in this folder. */
public static final File OSMDROID_PATH = new File(Environment.getExternalStorageDirectory(), "osmdroid");


そう言えば,osmdroidのwikiにも,エミュレータの設定でSDカードの容量を指定するように
書いてあったような.

osmdroid wiki: How to compile and run using Eclipse

SDカードスロットのないNexus 7をターゲットにしていたので無視していたのですが,
wikiの指示通りに設定したところ,無事に地図が表示されました.RTFM

 (クリックで拡大)

測位結果が赤色なので,隣にpegmanが立っていると,殺人現場みたいですね…

さて,これでソースコードから一通りの機能がビルドできようになりました.
次は実機にbluetooth経由でubloxのrawデータを接続しよう.

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする