16. GNSS
gnssオブジェクトは、GNSS機能を提供する組み込みオブジェクトです。
機能概要:
- SpresenseのGNSS機能を使用して位置情報を取得するインタフェースを提供します。
GNSS Global Object
Methods()/Properties | Summary | Version | Note |
---|---|---|---|
gnss.start() | GNSS測位を開始します。 | 02.00.00+ | |
gnss.stop() | GNSS測位を停止します。 | 02.00.00+ |
Details
gnss.start(callback[,cycle[,startMode[,satellite]]])
GNSS測位を開始します。
GNSS測位コールバックは測位開始直後に1回目のコールバックが行われ、以降、そのタイミングを基準とした指定周期のコールバックが開始されます。その後、測位がはじめて確定(Fix)したタイミングで、即時コールバックが発生し、以降、そのタイミングを基準とした指定周期のコールバックとなります。一度測位が確定した後は、測位が外れ再確定したとしても、コールバックのタイミングは維持されます。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
callback(pos) | function | mandatory | GNSS測位コールバック 指定された測位周期でコールバック処理を実行します。 pos : {Position} GNSS測位情報 | |
cycle | number | optional | 測位周期[秒] 設定範囲: 1~86400 デフォルト値は1となります。 | |
startMode | number | optional | スタートモード 0: Cold Start 1: Warm Start 2: Hot Start デフォルト値は0となります。 | 直近の測位データ、時間、有効な衛星軌道情報を保持していない状態で、 "Warm Start"もしくは、 "Hot Start"した場合は、 "Cold Start"と同様に衛星の捕捉から開始されます。詳細についてはこちらを参照してください。 |
satellite | number | optional | 測位に使用する衛星システムをビット指定します。 設定範囲: 0~255 bit 0: GPS bit 1: GLONASS bit 2: SBAS bit 3: QZSS-L1C/A bit 4: IMES bit 5: QZSS-L1S bit 6: BeiDou bit 7: Galileo デフォルト値は3(GPS+GLONASS)となります。 0を指定した場合は、強制的にデフォルト値となります。 | 詳細な情報、組み合わせに関する制約についてはこちらを参照してください。 |
return | boolean | - | true: 成功 false: 失敗 |
{Position}
Name | Type | Summary | Note |
---|---|---|---|
.pos_fixmode | number | 位置Fixモード 1: Invalid 2: 2D 3: 3D | Fixモードが2以上場合、位置情報が有効であることを示します。 |
.vel_fixmode | number | 速度Fixモード 1: Invalid 2: 2D VZ 3: 2D Offset 4: 3D 5: 1D 6: PRED | Fixモードが2以上場合、速度情報が有効であることを示します。 |
.svtype | number | 利用している衛星システム bit 0: GPS bit 1: GLONASS bit 2: SBAS bit 3: QZSS-L1C/A bit 4: IMES bit 5: QZSS-L1S bit 6: BeiDou bit 7: Galileo | |
.numsv | number | 可視衛星数 | |
.numsv_tracking | number | 追尾衛星数 | |
.numsv_calcpos | number | 位置演算に利用している衛星数 | |
.numsv_calcvel | number | 速度演算に利用している衛星数 | |
.datetime | number | GPS時間(Unixtime)[ms] | |
.latitude | number | 緯度[度] | |
.longitude | number | 経度[度] | |
.altitude | number | 高度[m] | |
.geoid | number | ジオイド高[m] | |
.velocity | number | 速度[m/s] | |
.direction | number | 方位[度] |
gnss.stop([backup])
GNSS測位を停止します。
尚、GNSS測位コールバック内から本メソッドを実行することはできません。
GNSS測位を停止したとしても、最終測位データ及び衛星軌道情報は、SRAM上に保持されているため、"Hot Start"で測位を再開することができます。デバイスの電源がオフになると、SRAM上のデータは消失するため、測位開始は"Cold Start"となります。
デバイスの電源をオフする前に、最終測位データ及び衛星軌道情報をフラッシュメモリにバックアップすることができます。バックアップされたデータは、次回デバイス起動時、自動的にSRAM上に展開され、"Hot Start"に利用されます。但し、衛星軌道情報の有効期限が満了していた場合やデータが破損していた場合は"Cold Start"となります。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
backup | boolean | optional | 最終測位データ及び衛星軌道情報を内部ストレージ(フラッシュメモリ)にバックアップします。 true: 有効 false: 無効 デフォルト値はfalseとなります。 | フラッシュメモリは頻繁に書き込みを行うと、メモリ故障の原因となりますので、デバイスの電源をオフにする際など、特定のタイミングだけに限定することを推奨します。 |
return | boolean | - | true: 成功 false: 失敗 |
オブジェクトの使用例
Sample1
GNSS測位情報を3秒毎に表示するサンプルです。
gnss.start(function(pos) {
print(new Date(pos.datetime).toString()
+ ',' + '0x' + ('00' + pos.svtype.toString(16).toUpperCase()).substr(-2)
+ ',' + pos.numsv
+ ',' + pos.numsv_tracking
+ ',' + pos.numsv_calcpos
+ ',' + pos.numsv_calcvel
+ ',' + pos.pos_fixmode
+ ',' + pos.vel_fixmode
+ ',' + pos.latitude.toFixed(6)
+ ',' + pos.longitude.toFixed(6)
+ ',' + pos.altitude.toFixed(1)
+ ',' + pos.geoid.toFixed(1)
+ ',' + pos.velocity.toFixed(1)
+ ',' + pos.direction.toFixed(1));
}, 3); //3s, cold start, GPS+GLONASS
Sample2
有効なFixモードを連続で検出した場合、GNSS測位を停止するサンプルです。
var NUM_OF_CONSECUTIVE_FIXES = 10;
var fixCnt = 0;
var cb_pos = function(pos) {
if(pos.pos_fixmode > 1) fixCnt++;
else fixCnt = 0;
print(new Date(pos.datetime).toString()
+ ',' + pos.numsv_tracking
+ ',' + pos.pos_fixmode
+ ',' + pos.latitude.toFixed(6)
+ ',' + pos.longitude.toFixed(6)
+ ',' + fixCnt);
}
gnss.start(cb_pos, 1, 2, 0x2B); //1s, hot start, GPS+GLONASS+QZSS-L1C/A+QZSS-L1S
while(1) {
if(fixCnt >= NUM_OF_CONSECUTIVE_FIXES) break;
};
gnss.stop();
print('finish');
Updated: 2022-06-02