(57)【特許請求の範囲】
【請求項１】
１つまたは複数のプロセッサと、
１つまたは複数のコンピューター可読媒体であって、
全地球測位システム（ＧＰＳ）信号の複数のチャンクを受信するステップであって、前記複数のチャンクのうちの個々のチャンクは、ＧＰＳ信号のセグメントの代表であり、前記複数のチャンクのうちの個々のチャンクは、時間間隔をあけて置かれる、ステップと、
可視衛星を識別するために、コード位相およびドップラー周波数の組合せを通して前記複数のチャンク内の衛星固有のＣ／Ａ（Ｃｏａｒｓｅ／Ａｃｑｕｉｓｉｔｉｏｎ）コードを検索するステップと、
前記可視衛星の各々について、第１のコード位相と第２のコード位相との差異を計算するステップであって、前記第１のコード位相が前記複数のチャンクのうちの第１のチャンクに関連付けられ、前記第２のコード位相が前記複数のチャンクのうちの第２のチャンクに関連付けられる、計算するステップと、
この差異が閾値差異を下回る各可視衛星を衛星のセットに追加するステップと、
前記衛星のセットに部分的に基づいて位置を推定するステップと
を含む処理を実行するための、前記１つまたは複数のプロセッサによって実行可能な命令を保持する、１つまたは複数のコンピューター可読媒体と
を備える演算デバイス。
【請求項２】
可視衛星を前記衛星のセットに追加するステップは、前記位置に関するデータに少なくとも部分的に基づき、
前記処理は、追加された前記衛星に部分的に基づいて前記位置を再び推定するステップをさらに備えると
をさらに含む、請求項１に記載の演算デバイス。
【請求項３】
前記衛星固有のＣ／Ａコードを検索するステップが、前記複数のチャンクの各々のチャンクに対し独立的に実行される、請求項１に記載の演算デバイス。
【請求項４】
前記複数のチャンクの各々のチャンクの長さは少なくとも１ミリ秒である、請求項１に記載の演算デバイス。
【請求項５】
前記位置が、前記複数のチャンクの収集された時刻、前記衛星のセットおよびエフェメリスデータ、ならびに前記衛星のセットの各衛星に関する擬似距離データに基づいて推定される、請求項１に記載の演算デバイス。
【請求項６】
前記衛星固有のＣ／Ａコードを検索するステップが、停止基準に達するまで繰り返し実行される、請求項１に記載の演算デバイス。
【請求項７】
前記停止基準は、
所定数の繰り返し、
所定数の可視衛星が識別されていること、または
演算デバイスが前記チャンクから任意の追加の衛星を識別することができないこと
のうち少なくとも１つを含む、請求項６に記載の演算デバイス。
【請求項８】
１つまたは複数のプロセッサによって実行されたとき、前記１つまたは複数のプロセッサに、
複数の全地球測位システム（ＧＰＳ）信号チャンクから識別された複数の衛星に関するデータを受信させ、ここで、
前記複数のＧＳＰ信号チャンクのうち個々のチャンクは、複数のＧＰＳ信号サンプルのうち１つのＧＰＳ信号サンプルの部分を含み、
前記データが複数のコード位相を含み、
前記複数のコード位相の各々が前記複数の衛星のうちの１つおよび前記複数のＧＰＳ信号チャンクのうちの１つに関連付けられており、
前記複数のＧＰＳ信号チャンクのうち個々のチャンクは時間間隔をあけて置かれ、
前記時間間隔の個々のものは等しくなく、
前記複数の衛星の各衛星について、前記複数のＧＰＳ信号チャンクの各々についての前記複数のコード位相のうちの個々のコード位相間の差異を計算させ、
前記複数の衛星のうち１つの衛星に対する前記差異の大多数が、閾値差異よりも小さいことを判定させ、
前記衛星に衛星のセットを追加させ、
前記衛星のセットを出力させる
命令を記憶するコンピューター可読記憶媒体。
【請求項９】
請求項８に記載のコンピューター可読記憶媒体であって、１つまたは複数のプロセッサにより実行されたとき、前記１つまたは複数のプロセッサに、
前記複数のＧＰＳ信号チャンクを受信させ、
コード位相およびドップラー周波数の組合せを通して前記複数のＧＰＳ信号チャンクの各ＧＰＳ信号チャンクにおける衛星固有のＣ／Ａ（Ｃｏａｒｓｅ／Ａｃｑｕｉｓｉｔｉｏｎ）コードを検索することにより、前記複数のＧＰＳ信号チャンクから第１の衛星を識別させ、
前記複数のＧＰＳ信号チャンクから前記第１の衛星と関連する信号を除去させ、
前記コード位相およびドップラー周波数の組合せを通して前記複数のＧＰＳ信号サンプルのＧＰＳ信号サンプルの各々における前記衛星固有のＣ／Ａコードを検索することにより、前記複数のＧＰＳ信号チャンクから第２の衛星を識別させる、命令をさらに記憶し、
前記複数の衛星に関連する前記データは、前記第１の衛星及び前記第２の衛星と関連するデータである、コンピューター可読記憶媒体。
【請求項１０】
前記複数のＧＰＳ信号チャンクの長さは少なくとも１ミリ秒である、請求項８に記載のコンピューター可読記憶媒体。
【請求項１１】
請求項８に記載のコンピューター可読記憶媒体であって、前記１つまたは複数のプロセッサにより実行されたとき、前記１つまたは複数のプロセッサに、前記衛星のセットに基づいて第１の位置を推定させる命令をさらに記憶する、コンピューター可読記憶媒体。
【請求項１２】
請求項１１に記載のコンピューター可読記憶媒体であって、前記１つ又は複数のプロセッサにより実行されたとき、前記１つ又は複数のプロセッサに、
前記複数の衛星のうち追加の衛星に関する前記複数のコード位相のうち個々のコード位相間の前記差異が、前記閾値差異よりも大きいことを判定させ、
前記第１の位置に関するデータに基づいて前記衛星のセットに前記追加の衛星を追加させ、
前記追加の衛星に部分的に基づいて第２の位置を推定させ、
前記第２の位置を出力させる、
命令をさらに備える、コンピューター可読記憶媒体。
【請求項１３】
第１の全地球測位システム（ＧＰＳ）信号チャンク及び第２のＧＰＳ信号チャンクを受信するステップであって、前記第１のＧＰＳ信号チャンク及び第２のＧＰＳ信号チャンクは時間間隔をあけて置かれており、前記第１のＧＰＳ信号チャンク及び前記第２のＧＰＳ信号チャンクは、ＧＰＳ信号のセグメントの個々の代表である、ステップと、
コード位相およびドップラー周波数の組合せを通して前記第１のＧＰＳ信号チャンクにおける衛星固有のＣ／Ａ（Ｃｏａｒｓｅ／Ａｃｑｕｉｓｉｔｉｏｎ）コードを検索することにより、前記第１のＧＰＳ信号チャンクから第１の衛星を識別するステップと、
前記第１の衛星を衛星のセットに追加するステップと、
前記第１の衛星に関連付けられた信号を前記第１のＧＰＳ信号チャンクから除去するステップと、
前記コード位相およびドップラー周波数の組合せを通して前記第１のＧＰＳ信号チャンクにおける前記衛星固有のＣ／Ａコードを検索することにより、前記第１のＧＰＳ信号チャンクから第２の衛星を識別するステップと、
前記第２の衛星を前記衛星のセットに追加するステップと、
前記衛星のセットを出力するステップと
を含む方法。
【請求項１４】
前記第２の衛星に関連付けられた信号を前記第１のＧＰＳ信号チャンクから除去するステップと、
前記コード位相およびドップラー周波数の組合せを通して前記第１のＧＰＳ信号チャンクにおける前記衛星固有のＣ／Ａコードを検索することにより、前記第１のＧＰＳ信号チャンクから第３の衛星を識別するステップと、
前記衛星のセットを出力する前に、前記第３の衛星を前記衛星のセットに追加するステップと
をさらに含む、請求項１３に記載の方法。
【請求項１５】
前記コード位相およびドップラー周波数の組合せを通して前記第２のＧＰＳ信号チャンクにおける前記衛星固有のＣ／Ａコードを検索することにより、前記第２のＧＰＳ信号チャンクから第１の追加の衛星を識別するステップと、
前記第２のＧＰＳ信号チャンクにおいて識別された前記第１の衛星を第２の衛星のセットに追加するステップと、
前記第２のＧＰＳ信号チャンクにおいて識別された前記第１の衛星に関連付けられた信号を前記第２のＧＰＳ信号チャンクから除去するステップと、
前記コード位相およびドップラー周波数の組合せを通して前記ＧＰＳ信号チャンクにおける前記衛星固有のＣ／Ａコードを検索することにより、前記第２のＧＰＳ信号チャンクから第２の衛星を識別するステップと、
前記第２のＧＰＳ信号チャンクにおいて識別された前記第２の衛星を前記衛星のセットに追加するステップと、
前記第２の衛星のセットを出力するステップと
をさらに含む、請求項１３に記載の方法。
【請求項１６】
前記第１のＧＰＳ信号チャンクに関連付けられた第１のコード位相と前記第２のＧＰＳ信号チャンクに関連付けられた第２のコード位相との差異を判定するステップであって、前記第１のコード位相および第２のコード位相が１つの衛星に関連付けられる、ステップと、
前記差異を閾値差異と比較するステップと、
前記差異が前記閾値差異を下回ることを判定するステップと
前記第１の衛星に関するデータに少なくとも部分的に基づいて位置を推定するステップと
をさらに含む、請求項１５に記載の方法。
【請求項１７】
前記第１のＧＰＳ信号チャンクにおいて識別された前記第１の衛星は、前記第２のＧＰＳ信号チャンクにおいて識別された前記第１の追加の衛星と同じである、請求項１５に記載の方法。
【請求項１８】
前記第１のＧＰＳ信号チャンクの長さは少なくとも１ミリ秒である、請求項１３に記載の方法。
【請求項１９】
前記第１の衛星に関連付けられた前記信号は、マッチング追跡計算を実行することにより検出され、前記ＧＰＳ信号から除去される、請求項１３に記載の方法。
【請求項２０】
前記第１の衛星に関連付けられた前記信号は、直交マッチング追跡計算を実行することにより検出され、前記ＧＰＳ信号チャンクから除去される、請求項１３に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]全地球測位システム（ＧＰＳ）は、通常、ＧＰＳ受信機を含むデバイスと、複数のＧＰＳ衛星とからなる。ＧＰＳ受信機は、デバイスの位置を判定するために、ＧＰＳ衛星からブロードキャストされたＧＰＳ信号を受信し、デコードするよう構成される。ＧＰＳ衛星信号の各々は、衛星固有のエンコードを用いて送信され、このエンコードは、ブロードキャスト元の（broadcasting）ＧＰＳ衛星を識別するために、ＧＰＳ受信機によって使用され得る。ＧＰＳ受信機は、衛星信号をデコードし、ブロードキャスト元のＧＰＳ衛星を識別し、そしてデコードされた信号から抽出されたデータに対して一連の演算を施すことにより、デバイスの位置を計算することができる。
【０００２】
[0002]昨今のデバイスの多くがＧＰＳ受信機を含んでおり、位置情報サービス（location based services）を提供するアプリケーションをサポートする。通常、ＧＰＳシステムは、正確にＧＰＳ信号をデコードし、ブロードキャスト元のＧＰＳ衛星を識別するために、ＧＰＳ信号を３０秒間でサンプリングする。しかしながら、ＧＰＳ信号のサンプリングは電力集約的プロセスであり、モバイルデバイス上で今日利用可能な多くの位置情報アプリケーションは、定期的または継続的な位置検出を要求する。したがって、ＧＰＳ受信機は、多くの場合、モバイルデバイスにとって利用可能な最も正確かつ信頼性のある位置情報を提供するものの、他のソースが好まれる場合も多い。例えば、モバイルデバイスは、ＧＰＳ受信機、セルタワー（cell-tower）信号、ＦＭラジオ信号、および／またはＷｉＦｉ署名を含む、種々のソースのうちの１つから、位置情報を取得することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
[0003]この「発明の概要」は、「発明を実施するための形態」において以下でさらに説明される概念の抜粋を、簡略化した形態で紹介するために設けられる。この「発明の概要」は、特許請求される主題の主要な特徴または必須の特徴を特定することを意図するものではなく、また特許請求される主題の範囲を判断する際の補助として使用されることを意図するものでもない。
【課題を解決するための手段】
【０００４】
[0004]モバイルデバイスの位置を判定するために使用可能な、全地球測位システム（ＧＰＳ）を含むモバイルデバイスの実装形態が、本明細書に開示される。一例では、モバイルデバイスは、位置の判定を補助するために、サーバーを利用する。例えば、モバイルデバイスは、ＧＰＳ受信機と、サーバーと通信する通信インターフェースとを含む。モバイルデバイスは、ＧＰＳ受信機を使用してＧＰＳ信号をサンプリングし、そのサンプルを処理のためサーバーに提供することができる。一例では、モバイルデバイスは、１つまたは複数の数ミリ秒（ｍｓ）となるチャンク内のＧＰＳ信号をサンプリングするよう構成され、サーバーは、そのチャンクを処理し、モバイルデバイスの位置を判定するよう構成される。
【０００５】
[0005]「発明を実施するための形態」は、添付の図を参照しながら説明される。各図において、参照番号の左端の桁（複数可）が、その参照番号の最初に登場する図を特定する。類似の特徴およびコンポーネントを参照するために、同一の番号が各図面で一貫して使用される。
【図面の簡単な説明】
【０００６】
【図１】[0006]いくつかの実装形態による、ＧＰＳシステムの例の絵画図である。
【図２】[0007]いくつかの実装形態による、ＧＰＳシステムの例示的フレームワークのブロック図である。
【図３】[0008]いくつかの実装形態による、モバイルデバイスの例示的フレームワークのブロック図である。
【図４】[0009]いくつかの実装形態による、モバイルデバイスの位置を推定するための例示的プロセスの流れ図である。
【図５】[0010]いくつかの実装形態による、可視衛星のセットを識別するための例示的プロセスの流れ図である。
【図６】[0011]いくつかの実装形態による、可視衛星のセットから良好な衛星のセットを選択するための例示的プロセスの流れ図である。
【図７】[0012]いくつかの実装形態による、モバイルデバイスの位置を推定するための例示的プロセスの流れ図である。
【発明を実施するための形態】
【０００７】
[0013]開示される技法は、モバイルデバイスに関する位置を判定するための、ＧＰＳシステムの実装形態を描き出す。典型的なシステムでは、ＧＰＳ受信機が起動すると、ＧＰＳ受信機は一連の電力集約的ステップを実行して、モバイルデバイスの位置を判定し、保持する。第１に、ＧＰＳ受信機は捕捉フェーズに入る。捕捉フェーズにおいて、ＧＰＳ受信機は、各可視ＧＰＳ衛星からのＧＰＳ信号をサンプリングし、デコードする。ＧＰＳ信号は、タイムスタンプおよびエフェメリスデータ（送信元衛星（transmitting satellite）の位置および軌跡に関するデータ）を含む。第２に、ＧＰＳ受信機は、デコードされたＧＰＳ信号から抽出されたタイムスタンプおよびエフェメリスデータに基づく一連の計算を実行して、初期位置を判定する。第３に、ＧＰＳ受信機は追跡フェーズに入り、モバイルデバイスの位置を保持する。
【０００８】
[0014]１つまたは複数のＧＰＳ衛星からの信号全体をサンプリングし、デコードするために、ＧＰＳ受信機は、ある間隔の間（通常は３０秒間）、オンにされる。ＧＰＳ受信機が、そのような長時間にわたり部分的にオンのままとなるのは、ＧＰＳ衛星が極めて低レート（通常、５０ビット／秒（ｂｐｓ）の範囲）でデータを送信するよう構成され、またＧＰＳ信号に含まれるデータを復元するために、約３２，０００個のサンプルが使用されるからである。
【０００９】
[0015]次に、ＧＰＳ受信機は、モバイルデバイスの可視範囲内（in view of）にある全てのＧＰＳ衛星（すなわち、受信したＧＰＳ信号をブロードキャストしたＧＰＳ衛星）を識別しようと試みる。この試みは、ＧＰＳ信号の中に、衛星固有となるＣ／Ａ（Ｃｏａｒｓｅ／Ａｃｑｕｉｓｉｔｉｏｎ）コードの存在を、１つまたは複数検出することによって行われる。各ＧＰＳ受信機は、全てのＧＰＳ衛星についてのＣ／Ａコードを含む、Ｃ／Ａコードテンプレートを記憶する。Ｃ／Ａコードは互いが直交となるようデザインされ、それにより、テンプレートがＧＰＳ信号と比較されたとき、可視ＧＰＳ衛星に対応するＣ／Ａコードが信号のスパイクを引き起こす。よって、ＧＰＳ受信機は、Ｃ／Ａテンプレートを受信したＧＰＳ信号と比較して、どのＧＰＳ衛星がブロードキャストを開始しているかを判定することができる。
【００１０】
[0016]しかし、Ｃ／ＡコードテンプレートをＧＰＳ信号と比較する際、ＧＰＳ受信機は、衛星とＧＰＳ受信機との両者の移動によって引き起こされる、ＧＰＳ信号のドップラーシフトを補償する。例えば、上昇するＧＰＳ衛星（モバイルデバイスの可視範囲に入ってくる衛星）は、最大８００メートル／秒（ｍ／ｓ）の速度でＧＰＳ受信機に向って移動し、４．２キロヘルツ（ｋＨｚ）の周波数シフトを引き起こす。同様に、下降するＧＰＳ衛星（モバイルデバイスの可視範囲を去っていく衛星）は、最大８００ｍ／ｓの速度でＧＰＳ受信機から遠ざかり、−４．２ｋＨｚの周波数シフトを引き起こす。ＧＰＳ受信機は、Ｃ／Ａコードテンプレートを使用してブロードキャスト元のＧＰＳ衛星を正しく識別するために、一定の許容誤差範囲内（例えば、５００Ｈｚ以内）でドップラーシフトを補償する必要がある。したがって、衛星の移動に加えてＧＰＳ受信機の動きも補償するために、ＧＰＳ受信機は、多くの場合、可視ＧＰＳ衛星についての判定を確定する前に、ドップラーシフト計算と、対応するＣ／Ａコードの比較とを、数回にわたって実行する。
【００１１】
[0017]初期位置を識別するために、ＧＰＳ受信機は、モバイルデバイスと可視ＧＰＳ衛星の各々との間の距離も判定する。この距離は「擬似距離」と呼ばれる。擬似距離は、ＧＰＳ信号の伝搬遅延を使用して計算することができる。伝搬遅延は、ミリ秒部と、「コード位相」と呼ばれるサブミリ秒部との２つの部分に分けられる。ミリ秒部は、パケットフレームからデコードすることができ、コード位相は、ＧＰＳ信号内でのＣ／Ａコードの１ｍｓ周期の繰り返しを監視することによって判定することができる。
【００１２】
[0018]ひとたびＧＰＳ受信機が可視衛星を識別し、ＧＰＳ信号をデコードし、そして擬似距離を計算すると、そのＧＰＳ受信機は、初期位置を計算する。初期位置が判定された後、ＧＰＳ受信機は追跡フェーズに切り替わり、モバイルデバイスの位置を保持する。追跡フェーズ中、ＧＰＳ受信機は、時間の経過に伴う、衛星およびモバイルデバイスのさらなる移動によって引き起こされたシフトを補償するために、ドップラー周波数および伝搬遅延を調節しようと試みる。追跡を実行することにより、ＧＰＳ受信機は、位置の変化を迅速かつ安価に（比較的低い電力消費率で）推定することができる。
【００１３】
[0019]しかし、ＧＰＳ受信機が追跡計算を継続的に実行しなければ、そのＧＰＳ受信機は、捕捉フェーズを改めて実行することを要求される。上で論じたように、捕捉フェーズは電力集約的であり、時間もかかってしまう。したがって、ＧＰＳ受信機の大半は、常に起動状態を維持するよう構成され、モバイルデバイスによってデューティサイクルを操作されない。
【００１４】
[0020]図１は、いくつかの実装形態による、ＧＰＳシステム１００の例の絵画図である。ＧＰＳシステム１００は、モバイルデバイス１０２と、ＧＰＳ衛星１０４、１０６、１０８、１１０、および１１２とを含む。モバイルデバイスは、これらのＧＰＳ衛星から、ＧＰＳ信号１１４を受信することができる。また、ＧＰＳシステム１００は、サーバー１１６と、ネットワーク１１８とを含む。一般に、モバイルデバイス１０２は、ネットワーク１１８を通じてサーバー１１６とデータを送受信する。モバイルデバイス１０２は、ワイヤレスローカルエリアネットワーク（ＷＬＡＮ）などのワイヤレスネットワーク、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの短距離ワイヤレスネットワーク、または符号分割多元接続（ＣＤＭＡ）システムなどによりセルタワーを通じて提供されるモバイルネットワークを介して、ネットワーク１１８と通信することができる。
【００１５】
[0021]モバイルデバイス１０２は、携帯電話、スマートフォン、ナビゲーションデバイス、追跡センサー、ＧＰＳセンサー、またはＧＰＳ受信機を含むその他のデバイスなど、任意のＧＰＳ対応デバイスとすることができる。本例では、モバイルデバイス１０２はスマートフォンとして示される。
【００１６】
[0022]ＧＰＳ衛星１０４〜１１２には、ＧＰＳ衛星航法（ｓａｔ−ｎａｖ）システムに関連付けられた、任意の衛星を含むことができる。加えて、５基の衛星が示されてはいるが、航法衛星１０４〜１１２が表すのは、モバイルデバイス１０２がＧＰＳ信号を受信することのできる、任意の数の航法衛星である。ＧＰＳ衛星１０４〜１１２は、上で論じたように、衛星固有のＣ／Ａコードにより、一意に識別可能である。一般に、ＧＰＳ衛星１０４〜１１２は、地理空間測位に有用なＧＰＳ信号を送信する。ＧＰＳ信号１１４はエンコードされ、位置の計算に有用な時間ベース情報を含む。
【００１７】
[0023]モバイルデバイス１０２は、自身の現在地から可視となる（モバイルデバイス１０２の通視線内にある）ＧＰＳ衛星から、ＧＰＳ信号１１４を受信する。場合によっては、モバイルデバイス１０２によって受信されるＧＰＳ信号１１４は、様々な障害物によって回折、反射、および／または減衰されることがある。
【００１８】
[0024]モバイルデバイス１０２はＧＰＳ受信機を含み、このＧＰＳ受信機は、衛星１０４〜１１２からのＧＰＳ信号１１４をサンプリングして、ＧＰＳ信号サンプルを生成するよう構成される。ＧＰＳ信号サンプルは、モバイルデバイス１０２によって取り込まれたＧＰＳ信号１１４についての連続測定値を、１つまたは複数含む。サンプル内の独立した連続範囲の各々は「チャンク」と称され、少なくとも１ｍｓ持続するものとなる。あるサンプル内に１つより多くのチャンクがある場合、それらの間には、いくつかの然るべきサンプリング間隔が存在することになる。いくつかの例では、モバイルデバイス１０２は、ＧＰＳ信号サンプルを圧縮、処理、そうでなければ操作してから、信号データ１２０をサーバー１１６に提供するよう構成されてもよい。例えば、モバイルデバイス１０２は、生のＧＰＳ信号１１４、ＧＰＳ信号１１４の圧縮版、またはＧＰＳ信号１１４から取得したデータ（可視衛星のＩＤ、ならびに／またはその可視衛星に関連付けられたコード位相およびドップラー周波数など）を、サーバー１１６に提供することができる。
【００１９】
[0025]モバイルデバイス１０２は、ＧＰＳ信号データ１２０を、ネットワーク１１８を介してサーバー１１６に提供する。いくつかの例では、モバイルデバイス１０２は、ワイヤレスまたはモバイル通信インターフェースを含まないＧＰＳセンサーまたはＧＰＳ追跡デバイスであり、よって、モバイルデバイス１０２は、ＧＰＳ信号データ１２０を、サーバー１１６にリアルタイムで（ＧＰＳ信号を受信すると同時に）提供することはできない。この例では、モバイルデバイス１０２は、ＧＰＳ信号データ１２０を、モバイルデバイス１０２に搭載されたコンピューター可読記憶媒体上のデータとして記憶することができる。このデータは、後にサーバー１１６にアップロードされ、それにより、モバイルデバイス１０２の以前の位置（複数可）を、アップロード時に判定または復元することができる。
【００２０】
[0026]ひとたびサーバー１１６が、モバイルデバイス１０２からＧＰＳ信号データ１２０を受信すると、サーバー１１６は、モバイルデバイス１０２の初期位置を判定し、位置情報１２２を、ネットワーク１１８を介してモバイルデバイス１０２に返送する。サーバー１１６を使用して初期位置を判定することにより、モバイルデバイス１０２は、通常であれば電力集約的な捕捉フェーズ中に消費されてしまうエネルギーを温存し、全体的なバッテリの寿命を延長することができる。
【００２１】
[0027]この例では、モバイルデバイス１０２は、ＧＰＳ信号データ１２０を、モバイルデバイス１０２上での前処理が施されていない生のＧＰＳサンプルとして、サーバー１１６に提供する。代替例では、モバイルデバイス１０２は、ＧＰＳ信号データ１２０をデコード、暗号化、または圧縮してから、サーバー１１６に提供することができる。
【００２２】
[0028]サーバー１１６がＧＰＳ信号データ１２０を受信したとき、サーバー１１６はチャンクに対し捕捉を実行して、衛星１０４〜１１２などの可視衛星のセットを識別する。特定の一例では、そのような小さなチャンクから可視衛星１０４〜１１２を識別するために、サーバー１１６は、スパース信号復元と呼ばれる技法を利用する。この例では、サーバー１１６は、始めに、可視衛星のセットを空のセットとして初期化する（すなわち、最初の時点では、サーバー１１６は、モバイルデバイスから受信したチャンク内で、どのＣ／Ａコードテンプレートも識別していない）。次に、サーバー１１６は、考えられる全ての衛星ＩＤ、コード位相、およびドップラー周波数の組合せを通してＧＰＳ信号１１４を検索して、モバイルデバイス１０２によってサンプリングされた最強のＧＰＳ信号を有する衛星を選択する。例えば、サーバー１１６は、考えられる各衛星についてのドップラー周波数およびコード位相でＣ／Ａコードテンプレート全体を反復して、最強のＧＰＳ信号を識別することができる。
【００２３】
[0029]ひとたびある衛星が選択されると、サーバー１１６は、選択された衛星に関連付けられたＧＰＳ信号をチャンクから除去し、選択された衛星を可視衛星のセットに追加する。例えば、サーバー１１６は、選択された衛星のＣ／Ａコードテンプレートによって判定された適切な信号部分空間上への射影を実行することにより、選択された衛星に関連付けられたＧＰＳ信号を、元のチャンクから除去することができる。サーバー１１６は、最強の信号を有する衛星を選択し、選択された衛星に関連付けられた信号を除去するプロセスを、停止基準が満たされるか（例えば、モバイルデバイス１０２の位置が計算され得る十分な衛星が識別される）、全ての可視衛星が識別されるか、または残存信号がブロードキャスト元の衛星を確実に識別できるほどの強度を持たなくなるまで継続する。
【００２４】
[0030]ひとたび可視衛星のセットが判定されると、サーバー１１６は、可視衛星のセットを複数のチャンクにわたって相関させる。チャンクは非常に小さいため（例えば、２ミリ秒（ｍｓ）長）、予期せぬ無線干渉や他のノイズが、モバイルデバイス１０２によって収集されるＧＰＳ信号を深刻に劣化させ、単一のチャンク内では衛星が誤って検出されるおそれがある。そこで、様々な間隔で複数のチャンクを収集し、識別された衛星を各チャンク内で比較することにより、判定された位置１２２の全体的な精度を向上させることができる。
【００２５】
[0031]したがって、単一のチャンクを使用して識別された可視衛星のセット内の各衛星は、良好（すなわち、可視衛星）、不良（すなわち、誤識別）、または不明（すなわち、良好な識別にも不良な識別にも分類できない）となり得る。一例では、サーバー１１６は、ＧＰＳ信号１１４のチャンクごとの可視衛星のセット内の各衛星を、「不明」のステータスにセットする。サーバー１１６は、各衛星に関連付けられたデータを全てのチャンクにわたって比較することにより、良好な衛星と不良な衛星とを判定する。例えば、一実装形態では、サーバー１１６は、各衛星について検出されたコード位相の差異を全てのチャンクを通して計算し、差異が第１の閾値を下回れば、サーバーはその衛星を「良好」と識別し、差異が第２の閾値を上回れば、その衛星を「不良」と識別する。次いで、残りの衛星および単一のチャンク内でのみ可視だったあらゆる衛星は、「不明」とラベル付けされる。
【００２６】
[0032]良好な衛星を使用することで、位置１２２を推定することができる。例えば、サーバー１１６は、チャンクが収集された時刻、良好な衛星のＩＤ、良好な衛星に関するエフェメリス（ＮＡＳＡ軌道データベースから取得しても、ＧＰＳ信号１１４からデコードしてもよい）、および擬似距離を使用して、モバイルデバイス１０２の位置を計算することができる。
【００２７】
[0033]ＧＰＳについて説明したが、本明細書で説明される技法はいずれも、他の全地球または地域衛星航法システムと連携して実装されてよい。場合によっては、これらの技法は、２つ以上の異なる衛星航法システムから信号を受信可能なｓａｔ−ｎａｖ受信機と共に使用される。例えば、他の全地球および／または地域衛星航法システムとしては、とりわけ、グロナス（Ｇｌｏｂａｌ  Ｎａｖｉｇａｔｉｏｎ  Ｓａｔｅｌｌｉｔｅ  Ｓｙｓｔｅｍ：ＧＬＯＮＡＳＳ）、ガリレオ、北斗、コンパス、インド地域航法衛星システム（ＩＲＮＳＳ）、または準天頂衛星システム（ＱＺＳＳ）を挙げることができる。
【００２８】
[0034]図２は、いくつかの実装形態による、ＧＰＳシステム２００の例示的フレームワークのブロック図である。ＧＰＳシステム２００は、モバイルデバイス１０２、サーバー１１６、アメリカ地質調査所（ＵＳＧＳ）標高ＡＰＩデータベース２０２、およびＮＡＳＡ軌道データベース２０４を含む。
【００２９】
[0035]モバイルデバイス１０２は、ＧＰＳ信号をサンプリングする１つまたは複数のＧＰＳ受信機と、ＧＰＳ信号データ１２０をサーバー１１６に提供し、代わりに位置情報１２２を受信する１つまたは複数の通信インターフェースとを含む。サーバー１１６は、１つまたは複数のプロセッサ２０６、通信インターフェース２０８、およびコンピューター可読記憶媒体２１０を含む。通信インターフェース２０８はプロセッサ２０６によってアクセス可能であり、図１のネットワーク１１８などのネットワークを介して、モバイルデバイス１０２と相互にデータを通信する。
【００３０】
[0036]任意の数のプログラムモジュール、アプリケーション、またはコンポーネントをコンピューター可読記憶媒体２１０に記憶することができ、それらの例として、コンピューター可読記憶媒体２１０は、位置フィルタリング命令２１２、衛星識別命令２１４、および衛星分類命令２１６を含む。位置フィルタリング命令２１２は、コンピューター可読記憶媒体２１０に記憶され、サーバー１１６に良好な衛星のセットに基づいてモバイルデバイス１０２の位置を判定させるよう、プロセッサ２０６によって実行可能である。衛星識別命令２１４は、サーバー１１６にＧＰＳ信号データ１２０から可視衛星のセットを識別させるよう、プロセッサ２０６によって実行可能である。衛星分類命令２１６は、サーバー１１６に衛星識別命令２１４によって判定された可視衛星のセットから良好な衛星のセットを識別させるよう、プロセッサ２０６によって実行可能である。
【００３１】
[0037]本明細書で使用される「コンピューター可読媒体」は、コンピューター記憶媒体および通信媒体を含む。コンピューター記憶媒体は、コンピューター可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶を目的とした、あらゆる方法または技術で実装される揮発性および不揮発性、リムーバブルおよびノンリムーバブルな媒体を含む。コンピューター記憶媒体は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリもしくは他のメモリ技術、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタル多目的ディスク（ＤＶＤ）もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または演算デバイスによるアクセスを目的とした、情報を記憶するために使用可能な他のあらゆる有形媒体を含むが、これらに限定はされない。
【００３２】
[0038]対照的に、通信媒体は、コンピューター可読命令、データ構造、プログラムモジュール、または搬送波などの変調データ信号内の他のデータを実施し得る。本明細書で定義されるように、コンピューター記憶媒体は通信媒体を含まない。
【００３３】
[0039]ＵＳＧＳ標高ＡＰＩデータベース２０２には、通信インターフェース２０８を介してサーバー１１６によってアクセスすることができ、それにより、サーバー１１６は、自身が判定した位置に関する標高データを取得することができる。通常、サーバー１１６は、ＵＳＧＳ標高ＡＰＩデータベース２０２に経緯度座標を提供し、代わりに、その座標に関する標高データを受信する。
【００３４】
[0040]ＮＡＳＡ軌道データベース２０４にも、通信インターフェース２０８を介してサーバー１１６によってアクセスすることができ、ＧＰＳ衛星１０４〜１１２に関するアルマナック（almanac）データおよびエフェメリス（ephemeris）データを取得するために使用される。アルマナックデータは、地球軌道内にある衛星の大まかな軌道およびステータスに関連する。エフェメリスデータは、それらの衛星の位置および軌跡に関連する。
【００３５】
[0041]ＵＳＧＳ標高ＡＰＩデータベース２０２およびＮＡＳＡ軌道データベース２０４は、サーバー１１６が標高、アルマナック、およびエフェメリスデータを取得することができる、多様なデータベースのうちの２例である。例えば、アメリカ地質調査所は、ＧＰＳ衛星の軌道、位置、および軌跡を算定し、これらの軌道、位置、および軌跡を、ウェブ上で公に利用できるようにしている。
【００３６】
[0042]ある例では、モバイルデバイス１０２は、生のＧＰＳ信号の複数のチャンクと、そのＧＰＳ信号がサンプリングされた時刻に対応するタイムスタンプとを含むＧＰＳ信号データ１２０を、少なくとも１つの通信インターフェース２０８を介してサーバー１１６に提供する。場合によっては、ＧＰＳ信号データ１２０は、モバイルデバイス１０２からダウンロードされ、それ以外の場合は、ＧＰＳ信号データ１２０は、ワイヤレスまたはモバイルネットワークを介してモバイルデバイス１０２から受信される。
【００３７】
[0043]ひとたびＧＰＳ信号データ１２０が受信されると、位置フィルタリング命令２１２は、プロセッサ２０６にモバイルデバイス１０２の位置を判定させる。モバイルデバイス１０２の位置を計算するために、サーバー１１６は、ＧＰＳ信号がサンプリングされた時刻、ブロードキャスト元の（可視）ＧＰＳ衛星、その可視衛星に関するエフェメリス、および擬似距離を判定することを必要とする。
【００３８】
[0044]ある例では、サーバー１１６は、衛星識別命令２１４および衛星分類命令２１６を実行することにより、どのＧＰＳ衛星がモバイルデバイス１０２にとって可視かを識別する。実行されると、衛星識別命令２１４は、ＧＰＳ信号データ１２０内の受信したチャンクの各々に対し捕捉を行って、可視衛星のセットを識別する。一実装形態では、衛星識別命令２１４は、最初の時点ではモバイルデバイス１０２はどのＣ／Ａコードテンプレートも検出していないので、まず可視衛星のセットをチャンクごとに空のセットに初期化する。次に、各チャンクについて、衛星識別命令２１４は、考えられる全ての衛星ＩＤ、コード位相、およびドップラー周波数の組合せを通してＧＰＳ信号を検索して、モバイルデバイス１０２によってサンプリングされた最強の信号を有する衛星を選択する。上記のように、衛星識別命令２１４は、考えられる各衛星についてのドップラー周波数およびコード位相でＣ／Ａコードテンプレート全体を反復して、最強の信号を識別することができる。
【００３９】
[0045]ひとたびある衛星が選択されると、選択された衛星に関連付けられたＧＰＳ信号はチャンクから除去され、選択された衛星が可視衛星のセットに追加される。例えば、衛星識別命令２１４は、選択された衛星のＣ／Ａコードテンプレートによって判定された適切な信号部分空間上への射影を実行することにより、選択された衛星に関連付けられたＧＰＳ信号をチャンクから除去することができる。
【００４０】
[0046]衛星識別命令２１４は、最強の信号を選択するプロセスを、停止基準が満たされるまで繰り返す。例えば、停止基準は、所定数の衛星の識別が達成された場合（例えば、モバイルデバイス１０２の位置が計算され得る十分な衛星が識別された場合）、全ての可視衛星が識別された場合、および／またはチャンク内の残存信号がブロードキャスト元の衛星を確実に識別できるほどの強度を持たない場合に満たされてよい。マッチング追跡（Ｍａｔｃｈｉｎｇ  Ｐｕｒｓｕｉｔ：ＭＰ）および直交マッチング追跡（Ｏｒｔｈｏｇｏｎａｌ  Ｍａｔｃｈｉｎｇ  Ｐｕｒｓｕｉｔ：ＯＭＰ）アルゴリズムは、この手順の例である。このようにすることで、モバイルデバイス１０２によって提供されたＧＰＳ信号１１４のチャンクごとに、可視衛星のセットを判定することができる。
【００４１】
[0047]ひとたび可視衛星のセットが判定されると、衛星分類命令２１６は、サーバー１１６に可視衛星のセットを複数のチャンクにわたって相関させる。チャンクは非常に小さいため（例えば、２ｍｓ長）、予期せぬ無線干渉や他のノイズがＧＰＳ信号を深刻に劣化させ、単一のサンプル内では衛星が誤って検出されるおそれがある。そこで、様々な間隔で複数のチャンクを収集し、識別された衛星を各チャンク内で比較することにより、判定された位置１２２の全体的な精度を向上させることができる。
【００４２】
[0048]上で論じたように、単一のチャンクを使用して識別された可視衛星のセット内の各衛星は、良好（すなわち、可視衛星）、不良（すなわち、誤識別）、または不明（すなわち、良好な識別にも不良な識別にも分類できない）となり得る。一例では、衛星分類命令２１６は、ＧＰＳ信号データ１２０の部分として受信されたチャンクごとの可視衛星のセット内の各衛星を、「不明」のステータスにセットする。
【００４３】
[0049]衛星分類命令２１６は、各衛星に関連付けられたデータを全てのチャンクにわたって比較することにより、良好な衛星と不良な衛星とを判定する。例えば、一実装形態では、衛星分類命令２１６は、サーバー１１６に特定の衛星に対応するサンプルごとに検出されたコード位相の差異を計算させる。差異が第１の閾値を下回れば、その衛星は「良好」として分類され、差異が第２の閾値を上回れば、その衛星は「不良」として分類される。残りの衛星（すなわち、第１の閾値を上回るが第２の閾値を下回る衛星）および１つのサンプル内でのみ可視だったあらゆる衛星は、「不明」として分類される。「良好」な衛星を使用して位置１２２を推定するために、サーバー１１６は、始めに、各ＧＰＳ信号がモバイルデバイス１０２によってサンプリングされた時刻、良好な衛星に関連付けられたエフェメリス、および擬似距離を判定する。
【００４４】
[0050]一実装形態では、時刻は、モバイルデバイス１０２によって提供されたタイムスタンプとして、モバイルデバイス１０２から受信される。この時刻は、ＧＰＳ信号データ１２０の部分として受信される。別の実装形態では、時刻はＧＰＳ信号から抽出することができる。ＧＰＳ信号から抽出された時刻は、通常、より正確であるが、モバイルデバイス１０２によってサンプリング時に適用されたタイムスタンプであっても、妥当な範囲内（すなわち、数メートル以内）で初期位置１２２を計算するには十分である。
【００４５】
[0051]エフェメリスは、サーバー１１６により、ＮＡＳＡ軌道データベース２０４から取得されてよい。特定の一実装形態では、サーバー１１６は、ＮＡＳＡ軌道データベース２０４からエフェメリスを周期的にフェッチし、その情報を、後で使用するために（ＧＰＳ信号がモバイルデバイス１０２上でサンプリングおよび記憶され、一定時間後にサーバー１１６にダウンロードされる場合など）、コンピューター可読記憶媒体２１０に記憶することができる。他の実装形態では、位置フィルタリング命令２１２は、サーバー１１６にＧＰＳ信号をデコードさせて、エフェメリスデータを判定することができる。
【００４６】
[0052]ひとたびエフェメリスと時刻とがサーバー１１６によって識別されると、位置フィルタリング命令２１２は、サーバー１１６に、良好な衛星の各々についての擬似距離（すなわち、コード位相および伝搬遅延）を、エフェメリスデータおよびＧＰＳ信号を使用して計算させる。例えば、サーバー１１６は、モバイルデバイス１０２の位置１２２から１５０キロメートル（ｋｍ）以内に基準位置（携帯電話塔など）が識別できる場合、粗時間航法（Ｃｏａｒｓｅ−Ｔｉｍｅ  Ｎａｖｉｇａｔｉｏｎ：ＣＴＮ）と呼ばれる技法を使用して、伝搬遅延を判定することができる。
【００４７】
[0053]ひとたび衛星ごとのタイムスタンプ、コード位相、および伝搬遅延が判定されると、位置フィルタリング命令２１２は、サーバー１１６にモバイルデバイス１０２の位置１２２を推定させる。しかし、場合によっては、モバイルデバイス１０２の位置１２２を正確に推定するには、識別された良好な衛星が少なすぎるということもあり得る。識別された良好な衛星が位置１２２を判定するには少なすぎる場合、位置フィルタリング命令２１２は、「不明」として分類された全ての可視衛星を列挙し、各衛星を良好な衛星のセットに追加した上で、位置１２２の識別を試みる。不良な（すなわち、誤って識別された）衛星を使用して推定された位置は、誤った、あり得ない、または正しくない位置（地表から遙かに上方または下方の標高など）を持つことになる。そこで、位置フィルタリング命令２１２は、誤った位置を排除するために、各衛星の追加後に推定された位置１２２をテストする。例えば、位置１２２を、地表付近の標高範囲（５００から８０００メートル（ｍ）の間など）に制限することで、誤った位置の多くが排除される。
【００４８】
[0054]しかしながら、自身で標高範囲を適用しても、誤った位置を全て検出できるとは限らない。残りの誤った位置を排除するために、位置フィルタリング命令２１２は、サーバー１１６に通信インターフェース２０８を介してＵＳＧＳ標高ＡＰＩデータベース２０２にアクセスさせることができる。サーバー１１６は、経緯度座標を使用して、残りの推定された位置１２２の各々についての地表本来の標高を取得する。位置フィルタリング命令２１２は、判定された標高を本来の標高と比較し、それらの標高が一致しない位置は全て排除する。しかし、標高がＵＳＧＳ標高データと一致するときは、ＧＰＳ信号がサンプリングされた時点のモバイルデバイス１０２の実際の位置１２２が識別されているのであり、位置１２２としてモバイルデバイス１０２に返送されてよい。ＵＳＧＳ標高ＡＰＩデータベース２０２を使用し、標高を比較することは、誤った位置を識別するために考えられる技法の１つであり、他の技法が利用されてもよいことを理解されたい。
【００４９】
[0055]場合によっては、いくつかの衛星が依然として「不明」とラベル付けされているものの、位置１２２の推定を可能にする十分に良好な衛星が識別されることもある。これらの不明な衛星を使用することにより、推定された位置１２２の精度を向上させることができる。例えば、上で論じたように、ＵＳＧＳ標高データを使用して、新たな位置が推定され、確認されていても、一例として、不明な衛星の各々を、良好な衛星のセットに追加することができる。別の例では、不明な衛星を使用して推定された新たな位置が元の位置と比較されてよく、２つの位置が閾値距離内であれば、その不明な衛星を「良好」と見なし、その新たな位置を位置１２２としてモバイルデバイス１０２に返送することができる。このプロセスは、「良好」とラベル付けされる可能性のある、残り全ての不明な衛星がテストされるまで継続されてよい。
【００５０】
[0056]ひとたびモバイルデバイス１０２の最終位置１２２が識別されると、位置１２２はモバイルデバイス１０２に提供される。代替的実装形態では、位置１２２を、後の分析のためにコンピューター可読記憶媒体に記憶することや、例えば科学研究において使用するために、ディスプレイに提示することができる。
【００５１】
[0057]図３は、いくつかの実装形態による、モバイルデバイス１０２の例示的フレームワーク３００のブロック図である。モバイルデバイス１０２は、１つまたは複数のプロセッサ３０２、１つまたは複数の通信インターフェース３０４、ＧＰＳ受信機３０６、クロック３０８、およびコンピューター可読記憶媒体３１０を含む。コンピューター可読記憶媒体３１０は、位置フィルタリング命令３１２、衛星識別命令３１４、衛星分類命令３１６、および１つまたは複数のＧＰＳ信号サンプル３１８を記憶するものとして示されている。
【００５２】
[0058]通信インターフェース３０４は、図１および図２のサーバー１１６などのサーバーにデータを通信するために利用される。通信インターフェース３０４は、ワイヤレスローカルエリアネットワーク（ＷＬＡＮ）などのワイヤレスネットワーク、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの短距離ワイヤレスネットワーク、ＣＤＭＡシステムなどによりセルタワーを通じて提供されるモバイルネットワーク、またはユニバーサルシリアルバス（ＵＳＢ）インターフェースなどを介したワイヤード接続を通して通信するよう構成される。
【００５３】
[0059]ＧＰＳ受信機３０６は、衛星１０４〜１１２などの１つまたは複数の衛星から、ＧＰＳ信号を受信するよう構成される。モバイルデバイス１０２と一体型として示されるが、ＧＰＳ受信機３０６は、ローカルであれば外付けでも構わない。外付けのＧＰＳ受信機は、ワイヤード（例えば、ＵＳＢ）で、またはワイヤレスインターフェース（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標））を介してモバイルデバイス１０２と通信することができる。場合によっては、ＧＰＳ受信機３０６は、通信インターフェース３０４のうちの１つと一体化される。この一体型モジュールは、携帯ネットワーク（cellular）接続およびＧＰＳ機能を提供する。いくつかの例では、一体型モジュールのアンテナは、携帯ネットワークおよびＧＰＳサブシステムによって共有される。
【００５４】
[0060]クロック３０８は、ＧＰＳ信号サンプルがＧＰＳ受信機３０６によって受信された時刻に関連付けられたタイムスタンプを提供するよう構成される。一例では、クロック３０８はＷＷＶＢ受信機である。ＷＷＶＢは無線局であり、送信者拠点に設置された原子時計のセットから得られる協定世界時（universal time）の信号を、連続的な６０ｋＨｚの搬送波を介して世界中にブロードキャストする。
【００５５】
[0061]ある例では、ＧＰＳ受信機３０６が衛星１０４〜１１２からのＧＰＳ信号を周期的にサンプリングし、ＧＰＳ信号サンプル３１８の各々がクロック３０８によってタイムスタンプを付される。タイムスタンプを付されたＧＰＳ信号サンプル３１８は、コンピューター可読記憶媒体３１０に記憶されるか、ＧＰＳ信号データ１２０として、通信インターフェース３０４を介してサーバー１１６に提供される。ＧＰＳ信号サンプル３１８がサーバー１１６に提供される場合、モバイルデバイス１０２は、サーバー１１６から応答として位置を受信することができる。ＧＰＳ信号サンプル３１８が記憶される場合、信号３１８は後でサーバー１１６にダウンロードまたは提供されてもよく、あるいはモバイルデバイス１０２がそのサンプルを利用して、位置を識別してもよい。
【００５６】
[0062]いくつかの実装形態では、ＧＰＳ信号サンプル３１８は、生のサンプルとしてサーバー１１６に提供される。他の実装形態では、位置処理がサーバー１１６とモバイルデバイス１０２との間で分担されてもよく、可視衛星のセットと、関連付けられたコード位相およびドップラー周波数とが、サーバー１１６に提供されてもよい。場合によっては、ＧＰＳ信号サンプル３１８または信号データが、送信前に圧縮されてもよい。
【００５７】
[0063]モバイルデバイス１０２は、汎用または専用コンピューターシステムの環境または構成において使用されてよい。例としては、パーソナルコンピューター、ハンドヘルドデバイスもしくはポータブルデバイス、タブレットデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、プログラミング可能顧客用電子デバイス、ネットワークＰＣ、または位置情報システムを有する他のデバイスが挙げられる。
【００５８】
[0064]特定の一実装形態では、モバイルデバイス１０２は、サーバーの補助なしに位置を識別することができる。例えば、ＧＰＳ受信機３０６は、１つまたは複数の可視衛星によってブロードキャスト中のＧＰＳ信号をサンプリングすることができる。ＧＰＳ信号サンプル３１８は、極めて短いものとなることがある。モバイルデバイス１０２は、クロック３０８を使用して各ＧＰＳ信号サンプル３１８にタイムスタンプを付し、ひとたび十分なサンプルが収集されると、モバイルデバイスがＧＰＳ信号サンプル３１８を小さなチャンク（１または２ｍｓ長など）に分割し、それらのチャンクに対し捕捉を実行して、可視衛星のセットを識別する。
【００５９】
[0065]チャンクごとにモバイルデバイスが衛星識別命令３１４を実行して、可視衛星のセットを識別する。モバイルデバイス１０２は、始めに、可視衛星のセットを空のセットとして初期化する（すなわち、最初の時点では、チャンク内でＣ／Ａコードテンプレートは一切検出されていない）。次に、モバイルデバイス１０２は、考えられる全ての衛星ＩＤ、コード位相、およびドップラー周波数の組合せを通してチャンクを検索して、最強のＧＰＳ信号を有する衛星を選択する。例えば、モバイルデバイス１０２は、考えられる各衛星についてのドップラー周波数およびコード位相でＣ／Ａコードテンプレート全体を反復して、最強のＧＰＳ信号を識別することができる。
【００６０】
[0066]ひとたびある衛星が選択されると、モバイルデバイス１０２は、選択された衛星に関連付けられたＧＰＳ信号をチャンクから除去し、選択された衛星を可視衛星のセットに追加する。例えば、モバイルデバイス１０２は、選択された衛星のＣ／Ａコードテンプレートによって判定された適切な信号部分空間上への射影を実行することにより、選択された衛星に関連付けられたＧＰＳ信号をチャンクから除去することができる。モバイルデバイス１０２は、最強の信号を選択し、その最強の信号をブロードキャストしている衛星に関連付けられた信号を除去するプロセスを、停止基準が満たされるまで継続する。例えば、停止基準は、所定数の衛星の識別が「良好」として分類された場合（例えば、モバイルデバイス１０２の位置が計算され得る十分な衛星が識別された場合）、全ての可視衛星が検討された場合、またはチャンク内の残存信号がブロードキャスト元の衛星を確実に識別できるほどの強度を持たない場合に満たされてよい。マッチング追跡および直交マッチング追跡アルゴリズムは、この手順の例である。
【００６１】
[0067]ひとたび可視衛星のセットが判定されると、モバイルデバイス１０２は衛星分類命令３１６を実行して、可視衛星のセットを複数のチャンクにわたって相関させる。一例では、モバイルデバイス１０２は、可視衛星のセット内の各衛星を、「不明」のステータスにセットする。次いで、モバイルデバイス１０２は、各衛星に関連付けられたデータを全てのチャンクにわたって比較することにより、良好な衛星と不良な衛星とを判定する。例えば、一実装形態では、モバイルデバイス１０２は、各衛星について検出されたコード位相の差異を全てのチャンクにわたって計算し、差異が第１の閾値を下回れば、サーバーはその衛星を「良好」と識別し、差異が第２の閾値を上回れば、その衛星を「不良」と識別する。残りの衛星（第１の閾値を上回り第２の閾値を下回るもの）および１つのチャンク内でのみ検出されたあらゆる衛星は、「不明」として分類される。
【００６２】
[0068]「良好」な衛星を使用することで、モバイルデバイス１０２は、位置フィルタリング命令２１２を実行することにより位置を判定する。例えば、モバイルデバイス１０２は、クロック３０８によって提供されたタイムスタンプ、良好な衛星のＩＤのセット、可視衛星に関するエフェメリス（ＮＡＳＡ軌道データベースから取得しても、ＧＰＳ信号サンプル３１８からデコードしてもよい）、および擬似距離を使用して、位置を計算することができる。例えば、伝搬遅延は、粗時間航法（ＣＴＮ）と呼ばれる技法を用いて、エフェメリス、モバイルデバイス１０２から１５０ｋｍ以内の基準位置（携帯電話塔など）、およびタイムスタンプを使用して計算することができる。
【００６３】
[0069]図４〜図７は、図１〜図３のモバイルデバイス１０２などのモバイルデバイスの位置を判定するための例示的プロセスを示す流れ図である。これらのプロセスは、処理のシーケンスを表す論理的流れ図内のブロックの集合として示され、その一部または全部がハードウェア、ソフトウェア、またはそれらの組合せにおいて実装され得る。ソフトウェアの文脈において、ブロックは、１つまたは複数のコンピューター可読媒体に記憶されたコンピューター実行可能命令を表し、１つまたは複数のプロセッサによって実行されたとき、記載された処理を行う。一般に、コンピューター実行可能命令は、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含み、特定の機能を実行するか、特定の抽象データ型を実装する。
【００６４】
[0070]処理が記述される順番は、限定と解釈すべきではない。プロセス、または代替的プロセスを実装するために、記述されたブロックのうちの任意の数が、任意の順番で、および／または並行に組み合わされてもよく、また全てのブロックが実行される必要もない。検討のために、本明細書のプロセスは、本明細書の各例に記述されるフレームワーク、アーキテクチャ、および環境を参照しながら説明されるが、これらのプロセスは、多種多様な他のフレームワーク、アーキテクチャ、および環境において実装されてもよい。
【００６５】
[0071]図４は、いくつかの実装形態による、モバイルデバイス（図１〜図３のモバイルデバイス１０２など）の位置を推定するための例示的プロセス４００の流れ図である。４０２において、サーバーは、モバイルデバイスから複数のＧＰＳ信号サンプルおよびサンプルごとのタイムスタンプを受信する。例えば、モバイルデバイスは、様々な間隔でサンプリングされた生のＧＰＳ信号の複数のチャンクを収集し、送信することができる。場合によっては、サンプルおよび／または間隔の長さは変動し得る。例えば、サーバーは、１つまたは複数の長いＧＰＳ信号サンプルを受信する可能性があり、その長いＧＰＳ信号サンプルを、サーバーがチャンクに分割する。いくつかの実装形態では、サーバーは、ＧＰＳ信号サンプルを、そのＧＰＳ信号サンプルが収集された時間とは異なる時間に、モバイルデバイスからダウンロードすることができる。
【００６６】
[0072]４０４において、サーバーは、チャンクから可視衛星のセットを識別する。例えば、サーバーは、考えられる全ての衛星ＩＤ、コード位相、およびドップラー周波数の組合せを通して各チャンクを検索して、最強の信号を有する衛星を選択することができる。例えば、サーバーは、考えられる各衛星についてのドップラー周波数およびコード位相でＣ／Ａコードテンプレート全体を反復して、最強の信号を識別することができる。
【００６７】
[0073]ひとたび最強の衛星が選択されると、サーバーは、最強の衛星に関連付けられたＧＰＳ信号をチャンクから除去し、選択された衛星を可視衛星のセットに追加する。例えば、サーバーは、選択された衛星のＣ／Ａコードテンプレートによって判定された適切な信号部分空間上への射影を実行することにより、選択された衛星に関連付けられたＧＰＳ信号を除去することができる。サーバーは、最強の信号を有する衛星を選択し、その衛星に関連付けられた信号を除去するプロセスを、停止基準が満たされるか（例えば、モバイルデバイスの位置が計算され得る十分な衛星が識別される）、全ての可視衛星が識別されるか、またはチャンク内の残存信号がブロードキャスト元の衛星を確実に識別できるほどの強度を持たなくなるまで繰り返し続ける。マッチング追跡および直交マッチング追跡アルゴリズムは、この手順の例である。このようにすることで、チャンクごとに可視衛星のセットを判定することができる。
【００６８】
[0074]４０６において、サーバーは、可視衛星のセットから良好な衛星のセットを識別する。サーバーは、可視衛星のセットを複数のチャンクにわたって相関させ、各可視衛星を良好（すなわち、可視衛星）、不良（すなわち、誤識別）、または不明（すなわち、良好な識別にも不良な識別にも分類できない）のいずれかに分類することにより、良好な衛星を識別する。例えば、サーバーは、始めに、各可視衛星を「不明」のステータスにセットすることができる。サーバーは、各衛星に関連付けられたデータを全てのチャンクにわたって比較することにより、良好な衛星と不良な衛星とを判定する。例えば、サーバーは、各チャンクのコード位相間の差異を計算することができる。サーバーは、その差異を第１の閾値と比較することができ、差異が第１の閾値を下回れば、サーバーは衛星を「良好」と識別することができる。しかし、差異が第１の閾値を上回る場合には、サーバーは、差異を第２の閾値と比較することができ、差異が第２の閾値を上回れば、衛星を「不良」と識別する。サーバーは、残りの衛星（すなわち、第１の閾値を上回り第２の閾値を下回るコード位相の差異を有する衛星）、ならびに１つのチャンク内でのみ可視だったあらゆる衛星を、「不明」として分類することができる。
【００６９】
[0075]４０８において、サーバーは、ＮＡＳＡ軌道データベースからエフェメリスデータを取得する。特定の一例では、サーバーは、ＮＡＳＡ軌道データベースから周期的にエフェメリスおよびアルマナックデータを取得し、その情報を、後で使用するために、コンピューター可読記憶媒体３１０などのメモリに記憶することができる。エフェメリスおよびアルマナックデータを記憶することは、ＧＰＳ信号サンプルが収集され、一定時間にわたりモバイルデバイス上に記憶され、そして後でサーバーにダウンロードされる場合に特に有用である。
【００７０】
[0076]４１０において、サーバーは、エフェメリス、良好な衛星のセット、タイムスタンプ、および擬似距離から、モバイルデバイスの位置を推定することができる。例えば、サーバーは、基準位置を使用してＣＴＮを計算することにより、伝搬遅延を計算することができる。次いで、サーバーは、モバイルデバイスあるいは１つまたは複数の科学研究用データベースに、位置を返送することができる。
【００７１】
[0077]図４は、一連のＧＰＳ信号サンプルチャンクから衛星のセットを識別することにより、モバイルデバイスの位置を推定するための例示的プロセス４００を提示する。図５および図６は、衛星のセットを識別するために考えられる実装形態について、さらなる詳細を提示する。
【００７２】
[0078]図５は、いくつかの実装形態による、可視衛星のセットを識別するための例示的プロセス５００の流れ図である。５０２において、サーバーは、可視衛星のセットを空のセットに初期化する（すなわち、最初の時点では、サーバーは、モバイルデバイスから受信したＧＰＳ信号チャンク内で、どのＣ／Ａコードテンプレートも識別していない）。
【００７３】
[0079]５０４において、サーバーは、考えられる全ての衛星識別子、コード位相、およびドップラー周波数の組合せを通してＧＰＳ信号チャンクのうちの１つを検索し、最適な一致を選択する。最適な一致は、チャンク内で最強の信号を有する衛星を識別することにより選択することができる。例えば、サーバーは、考えられる各衛星についてのドップラー周波数およびコード位相でＣ／Ａコードテンプレート全体を反復して、最強の信号を識別することができる。
【００７４】
[0080]５０６において、サーバーは、最適な一致（すなわち、サンプル内で最強の信号を有する衛星）を可視衛星のセットに追加する。例えば、可視衛星のセットは、次式のように表すことができる。
【００７５】
Ｘ（ｋ）＝Ｘ（ｋ−１）∪｛ｘ（ｋ）｝
上式で、Ｘ（ｋ）は可視衛星のセットを、ｘ（ｋ）は最適な一致を、そしてｋはプロセス５００の反復回数を示す。
【００７６】
[0081]５０８において、サーバーは、最適な一致に関連付けられたＧＰＳ信号をチャンクから除去する。例えば、サーバーは、選択された衛星のＣ／Ａコードテンプレートによって判定された適切な信号部分空間上への射影を実行することにより、選択された衛星に関連付けられたＧＰＳ信号を除去することができる。
【００７７】
[0082]マッチング追跡では、新たな信号ｒ（ｋ）を、それまでのサンプルｒ（ｋ−１）を使用して、次式のように計算することができる。
【００７８】
【数１】
0006377161.tif 000002
【００７９】
上式で、ｘ（ｋ）はやはり最適な一致を、そしてｋはプロセス５００の反復回数を示す。直交マッチング追跡では、新たな信号ｒ（ｋ）を、それまでのサンプルｒ（ｋ−１）を使用して、次式のように計算することができる。
【００８０】
ｒ（ｋ）＝ｒ（ｋ−１）−Ｐｘ（ｋ）×ｒ（ｋ−１）
上式で、Ｐｘ（ｋ）は、現在の反復ｋに至るまでに識別された全てのＣ／Ａコードテンプレートによって張られる（spanned）部分空間上への直交射影である。
【００８１】
[0083]５１０において、サーバーは、停止基準が成立するかどうかを判定する。例えば、停止基準は、所定数の衛星を識別すること（すなわち、モバイルデバイスの位置が計算され得る十分な衛星が識別されていること）、全ての可視衛星が識別されること、またはチャンク内の残存信号がブロードキャスト元の衛星を確実に識別できるほどの強度を持たないこととすることができる。停止基準が成立する場合には、プロセス５００は５１２に進み、サーバーが可視衛星のセットを出力し、それ以外の場合には、プロセス５００は５０４に戻り、別の最適な一致を識別する。
【００８２】
[0084]図６は、いくつかの実装形態による、可視衛星のセットから良好な衛星のセットを選択するための例示的プロセス６００の流れ図である。６０２において、サーバーは、可視衛星のセットを受信する。例えば、可視衛星のセットは、モバイルデバイスから受信されても、上記のように、プロセス５００を使用してサーバーによって生成されてもよい。
【００８３】
[0085]６０４において、サーバーは、可視衛星の各々を「不明」のステータスに初期化する。各可視衛星は、良好（すなわち、可視衛星）、不良（すなわち、誤識別）、または不明（すなわち、良好な識別にも不良な識別にも分類できない）として分類され得る。衛星が「不明」に初期化されるのは、チャンクが小さいために、予期せぬ無線干渉や他のノイズがＧＰＳ信号を深刻に劣化させ、衛星が誤って検出されかねないからである。
【００８４】
[0086]６０６において、サーバーは、各衛星のコード位相間の差異を複数のＧＰＳサンプルにわたって計算する。例えば、２つのＧＰＳサンプルｎ１からｎ２内で検出された、衛星１からｋについてのコード位相ＣＰ１からＣＰｋにおける差異Ｄは、次式のように計算することができる。
【００８５】
【数２】
0006377161.tif 000003
【００８６】
ＧＰＳ信号がサンプリングされたときに、衛星がモバイルデバイスにとって実際に可視であれば、チャンク間のコード位相における差異Ｄは、比較的小さいものとなる。
[0087]６０８において、サーバーは、各衛星についてのコード位相における差異を閾値と比較し、差異が閾値を下回れば、その衛星を「良好」な衛星のセットに追加する。しかし、衛星のコード位相が閾値を上回るのであれば、サーバーは、その衛星を不明な衛星のセットに残したり、差異を第２の閾値と比較し、差異が第２の閾値を上回る場合には、その衛星を不良な衛星のセットに追加したりしてもよい。
【００８７】
[0088]図４〜図６は、一連のＧＰＳ信号サンプルまたはチャンクから衛星のセットを識別するための例示的プロセスを提示する。図７は、衛星のセットを使用して位置を推定するための例示的プロセスを提示する。
【００８８】
[0089]図７は、いくつかの実装形態による、モバイルデバイスの位置を推定するための例示的プロセス７００の流れ図である。７０２において、サーバーは、良好な衛星のセットを受信する。例えば、良好な衛星のセットは、上記のプロセス５００および６００に従って判定することができる。いくつかの実装形態では、サーバーは、不明な衛星のセットおよび可視衛星のセット（すなわち、不良として分類された衛星も含めた、プロセス５００で識別された衛星の完全なセット）も受信することができる。
【００８９】
[0090]７０４において、サーバーは、良好な衛星のセットを使用して位置を推定する。上で論じたように、サーバーは、ＧＰＳ信号にスタンプが付された時刻、良好な衛星のＩＤ、エフェメリスおよびアルマナックデータ（ＮＡＳＡ軌道データベースから取得しても、ＧＰＳ信号サンプルからデコードしてもよい）、および擬似距離に基づき、位置を推定することができる。
【００９０】
[0091]７０６において、サーバーは、自身が良好な衛星のセットから位置を推定することができるかどうかを判定する。例えば、いくつかの例では、良好として分類された衛星の数が、位置を判定するために要求される下限を下回る可能性もあり、推定された位置が信頼できない、または誤りということもある。サーバーが位置を推定できない場合、プロセス７００は７０８に進み、サーバーは、可視衛星のセット内の他の衛星の各々を１基ずつ良好な衛星のセットに追加し、位置を再び推定する。そうではなく、サーバーが位置を推定できた場合、プロセスは７１０に進み、サーバーは、残りの不明な衛星を使用することにより、元々推定された位置の精度を向上させようと試みる。
【００９１】
[0092]７０８において、サーバーは、未テストの衛星があるかどうかを判定する。未テストの衛星がなく、サーバーが依然として位置を推定できない場合には、プロセス７００は７１２に進み、サーバーは失敗（すなわち、モバイルデバイスから受信したＧＰＳサンプルからは位置が推定できない）を出力する。未テストの衛星がまだ存在する場合には、サーバーは未テストの衛星のうちの１つを良好な衛星のセットに一時的に追加し、プロセス７００は７１４に進む。
【００９２】
[0093]７１４において、サーバーは、更新された良好な衛星のセットを使用して、位置を再び推定しようと試みる。不良な（すなわち、誤って識別された）衛星を使用して推定された位置は、誤った、あり得ない、または正しくない位置（地表から遙かに上方または下方の標高など）を持つことになる。そこで、サーバーは、誤った位置を排除するために、未テストの各衛星の追加後に推定された位置をテストする。例えば、サーバーは、有効な位置を地表付近の標高範囲（５００から８０００ｍの間など）に制限することで、不良な衛星を使用して推定された位置の多くを却下することができる。他の例では、サーバーは、ＵＳＧＳ標高ＡＰＩデータベースにアクセスして、更新された良好な衛星のセットを使用して推定された位置の各々について、地表本来の標高を取得することができる。ＵＳＧＳ標高ＡＰＩデータベースから取得可能な、本来の標高を利用することにより、サーバーは、モバイルデバイスの誤った位置と実際の位置との両方を識別することができる。
【００９３】
[0094]７１６において、サーバーが位置を識別できる場合、プロセス７００は７１８に進み、サーバーは、その位置をモバイルデバイスの位置として出力する。例えば、ＵＳＧＳ標高ＡＰＩデータベースが、更新された良好な衛星のセットを使用して推定された位置の経緯度の標高と一致するとき、サーバーは位置を推定することができる。しかし、サーバーが、更新された良好な衛星のセットを使用しても、依然として位置を推定できない場合、サーバーは、良好な衛星のセットに追加された衛星を除去し、７０８に戻り、そして７０８、７１２、７１４、および７１６を繰り返す。サーバーは、未テストの衛星を良好な衛星のセットに追加し続け、未テストのままの衛星がなくなるか、有効な位置を出力できるまで、位置を繰り返し推定する。
【００９４】
[0095]７０６に戻り、位置が元より良好な衛星のセットを使用して推定されていた場合、プロセス７００は７１０に進む。７１０において、サーバーは、その位置に関する位置情報を使用して、残りの衛星に良好な衛星のセットに追加できるものがあるかを確認する。例えば、上で論じたように、サーバーは、更新された良好な衛星のセットを使用して位置を再び推定し、新たな位置の標高を、ＵＳＧＳ標高ＡＰＩデータベースから取得した、新たな位置の経緯度における標高と比較することができる。他の例では、サーバーは、元の位置と新たに推定された位置との間の距離を比較し、その距離が閾値距離未満であれば、新たな位置は有効であると判定することができる。
【００９５】
[0096]７２２において、サーバーは、識別された衛星を加えて良好な衛星のセットを拡大する。例えば、サーバーは、上で論じたように、元々不明として分類されていた衛星の一部を、位置情報の分析に基づき、良好な衛星のセットに追加することができる。
【００９６】
[0097]７２４において、サーバーは、更新された良好な衛星のセットを使用して位置を再び推定し、７１８において、サーバーは新たな位置を、モバイルデバイスの位置として出力する。例えば、サーバーは、モバイルデバイスに位置を返送して出力しても、分析または研究用データベースに位置を記憶してもよい。
結論
[0098]構造的特徴および／または方法論的行為に特定的な文言で主題を説明したが、添付の特許請求の範囲において定義される主題は、記述された特定の特徴または行為に必ずしも限定されるものではないことを理解されたい。それら特定の特徴および行為は、むしろ、特許請求の範囲を実装する例示的形態として開示されたものである。
【図１】
0006377161.tif 000004
【図２】
0006377161.tif 000005
【図３】
0006377161.tif 000006
【図４】
0006377161.tif 000007
【図５】
0006377161.tif 000008
【図６】
0006377161.tif 000009
【図７】
0006377161.tif 000010