14
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

KLab EngineerAdvent Calendar 2018

Day 1

SpresenseのGPSがQZSSのL1Sに対応したらしいので使ってみる

Last updated at Posted at 2018-12-01

Spresenseとは?

Spresenseとは、Sonyが発売した小型マイコンボードです。
https://developer.sony.com/ja/develop/spresense/

特徴は、

  • GPS機能搭載(アンテナもメインボードに搭載、複数の衛星タイプに対応)
  • ハイレゾオーディオ
  • マルチコアプロセッサで強い
  • 省電力・小型

といったところです。
開発はArduino互換と、独自の組み込みOSを使うのとの2とおりです。

とくにこの大きさで低消費電力で、簡単に扱えて
これだけ多機能なマイコンボードは少なく、色々と使えそうなボードです。
私は、今年8月のMaker Faire Tokyoで購入して、遊んでいます。

QZSSのL1Sとは

QZSSは準天頂衛星のことで、日本が打ち上げた「みちびき」シリーズのことを指します。
準天頂衛星「みちびき」は、GPSと互換の測位信号を、日本近辺でなるべく天頂に近い位置から配信することで、特に都市部などでの測位精度をあげることが大きな役割となっています。

しかし、それだけではGPSの理論精度に、より近い精度で測位が可能になるだけです。
実は準天頂衛星には、L1Sや、L6といった、GPSを補完するための信号を送る仕組みが搭載されています。

今回注目するL1Sは、L1C/Aという通常のGPS・QZSSで使っている電波の周波数帯と同じ周波数帯で、電離層遅延の補正信号などを送信するものです。
そのため、これまでのGPS受信機と同じ無線受信機で、受信後のデータの処理さえ行ってあげれば利用することができ、既存のGPS受信機の設計の軽微な変更で利用可能になるという利点があります。

Spresenseの最近のアップデートで、このL1S信号の処理ができるようになったということで、実際に使ってみました。

使ってみる

https://developer.sony.com/ja/develop/spresense/developer-tools/get-started-using-arduino-ide/set-up-the-arduino-ide
こちらを参考にして、まずはArduino開発環境を整えます。
Spresenseの開発キットに関しては、最新のものを利用してください。 

さて、GNSS(全球衛星測位システム、まぁつまりGPSとかのことをまとめてこういう言い方をします)のサンプルスケッチを見てみましょう。
https://github.com/sonydevworld/spresense-arduino-compatible/blob/master/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/GNSS/examples/gnss/gnss.ino

129~130行目に利用する衛星の設定があります。みちびきのGPS互換信号とL1S信号を使うように設定しています。GPSは、デフォルトで使うようになっています。

    Gnss.select(QZ_L1CA);  // Michibiki complement
    Gnss.select(QZ_L1S);   // Michibiki augmentation(Valid only in Japan)

https://github.com/sonydevworld/spresense-arduino-compatible/blob/master/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/GNSS/GNSS.h
また、こちらをみると、

enum SpSatelliteType {
    GPS       = (1U << 0),
    GLONASS   = (1U << 1),
    SBAS      = (1U << 2),
    QZ_L1CA   = (1U << 3),
    QZ_L1S    = (1U << 5),
    UNKNOWN   = 0,
};

とあり、GLONASSなどにも対応していることがわかります。
今回は、上記のサンプルコードを用いてGPS・QZSS・QZSS L1Sを組み合わせて測位を試してみました。

結果を見てみる

シリアルから取得した結果の地理座標部分だけをCSVにして、Google Mapsのマイマップ機能を使って地図上に表示します。

マイマップ機能で新規の地図を作成すると、CSVからのインポートができます、
GoogleDriveなどに保存したCSVファイルなどからインポートすることができます。

実際にやってみた結果が、以下のような図になります。

SpresenseGPS検証

これは、いくつかの場所で静止状態で測位を続けたときの座標群を表示していますが、
かなり大きなずれがあることがわかります。
六本木ヒルズの周辺なので、やはりビル群による電波の反射などがあり精度がでにくいのではないかと思いました。

まとめ

あまり芳しくない結果になってしまいましたが、やはりGPS的な仕組みにとって、都市部は難しいフィールドだということでしょうか。
ともあれ、ログを確認したところではちゃんとL1Sの信号も拾っていますし、設定を代えて試したところGLONASSも拾えていることがわかったので、
今後より本格的な検証をしていこうと思います。

14
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?