(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025110430
(43)【公開日】2025-07-29
(54)【発明の名称】最適化デバイス、測位システム、および測位方法
(51)【国際特許分類】
G01S 19/38 20100101AFI20250722BHJP
G01C 21/28 20060101ALI20250722BHJP
【FI】
G01S19/38
G01C21/28
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2024004229
(22)【出願日】2024-01-16
(71)【出願人】
【識別番号】502129933
【氏名又は名称】株式会社日立産機システム
(74)【代理人】
【識別番号】110002066
【氏名又は名称】弁理士法人筒井国際特許事務所
(72)【発明者】
【氏名】王 卓毅
(72)【発明者】
【氏名】板東 幹雄
(72)【発明者】
【氏名】谷川原 誠
(72)【発明者】
【氏名】佐藤 裕明
【テーマコード(参考)】
2F129
5J062
【Fターム(参考)】
2F129AA03
2F129AA20
2F129BB03
2F129BB33
2F129BB41
2F129BB45
2F129CC02
2F129CC03
2F129HH02
2F129HH04
2F129HH12
2F129HH22
5J062CC07
5J062EE00
(57)【要約】
【課題】測位精度を維持したまま演算負荷を低減できる技術を提供する。
【解決手段】実施の形態の最適化デバイスは、入力されるセンサ情報に基づいて観測値を抽出するセンサ判別部と、観測値に対し拘束条件を追加する拘束条件追加部と、観測値および拘束条件に基づいて、観測値と拘束条件との誤差が最小となるような位置情報を求める最適化計算を行い、求めた位置情報を出力する、最適化計算部と、観測値の選定および拘束条件の選定を行うための評価指標を取得する評価指標取得部と、を備え、拘束条件追加部は、評価指標に基づいて、観測値の選定および拘束条件の選定を行い、拘束条件は、選定されたある観測値とある観測値との間を接続する相対拘束を有する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
測位に関する最適化計算を行う最適化デバイスであって、
入力されるセンサ情報に基づいて観測値を抽出するセンサ判別部と、
前記観測値に対し拘束条件を追加する拘束条件追加部と、
前記観測値および前記拘束条件に基づいて、前記観測値と前記拘束条件との誤差が最小となるような位置情報を求める最適化計算を行い、求めた位置情報を出力する、最適化計算部と、
前記観測値の選定および前記拘束条件の選定を行うための評価指標を取得する評価指標取得部と、
を備え、
前記拘束条件追加部は、前記評価指標に基づいて、前記観測値の選定および前記拘束条件の選定を行い、
前記拘束条件は、選定されたある観測値とある観測値との間を接続する相対拘束を有する、
最適化デバイス。
【請求項2】
請求項1記載の最適化デバイスにおいて、
前記測位として衛星測位に関する最適化計算を行い、
前記拘束条件追加部は、前記衛星測位の解析結果の前記観測値について、前記観測値間の相対測位を実施し、前記相対測位の結果に基づいて前記拘束条件を設定する、
最適化デバイス。
【請求項3】
請求項1記載の最適化デバイスにおいて、
前記最適化デバイスによる前記最適化計算を含む演算処理に要する演算時間を測定し、前記演算時間と演算時間閾値との比較に応じて、前記評価指標を変更する、演算時間測定部を備える、
最適化デバイス。
【請求項4】
請求項1記載の最適化デバイスにおいて、
前記拘束条件追加部は、前記観測値として、時系列順の複数の観測値において、測位時刻が最も離れた最新の観測値と最古の観測値との間に、第1優先で前記相対拘束を作成する、
最適化デバイス。
【請求項5】
請求項1記載の最適化デバイスにおいて、
前記評価指標は、前記観測値の選定のための上限数を規定する観測値上限数を含み、
前記拘束条件追加部は、前記観測値として、時系列順の複数の観測値から、前記観測値上限数までの個数で、複数の観測値を選定する、
最適化デバイス。
【請求項6】
請求項1記載の最適化デバイスにおいて、
前記評価指標は、前記拘束条件の選定のための上限数を規定する拘束条件上限数を含み、
前記拘束条件追加部は、前記観測値として、時系列順の複数の観測値に対し、前記拘束条件上限数までの個数で、作成される複数の拘束条件を選定する、
最適化デバイス。
【請求項7】
請求項5記載の最適化デバイスにおいて、
前記拘束条件追加部は、前記複数の観測値を選定する際に、推定分散値に基づいて選定する、
最適化デバイス。
【請求項8】
請求項1記載の最適化デバイスにおいて、
前記拘束条件追加部は、
前記観測値に対し前記拘束条件を作成した場合には、当該拘束条件の情報を拘束条件データベース内に保存し、
前記観測値に対し新たに前記拘束条件を作成する際に、作成予定の拘束条件と同一の拘束条件の情報が前記拘束条件データベース内に保存されているか否かを確認し、保存されている場合には、当該作成予定の拘束条件の作成を省略し、保存されている当該拘束条件の情報を読み出して使用する、
最適化デバイス。
【請求項9】
請求項1記載の最適化デバイスにおいて、
前記拘束条件追加部は、
前記観測値として、時系列順の複数の観測値に対し、前記相対拘束との接続数が最小である観測値Nminを検索し、
前記観測値Nminが連続で並んでいる区間のうち最も長い区間Scmを検索し、
前記区間Scmの観測値のうち中央値となる第1観測値N1を選択し、前記第1観測値N1を前記観測値Nminから排除し、
つぎに、同様に、前記観測値として、時系列順の複数の観測値に対し、前記相対拘束との接続数が最小である観測値Nminを検索し、
前記観測値Nminが連続で並んでいる区間のうち最も長い区間Scmを検索し、
前記区間Scmの観測値のうち中央値となる第2観測値N2を選択し、前記第2観測値N2を前記観測値Nminから排除し、
前記第1観測値N1と前記第2観測値N2とをつなぐように前記相対拘束を作成する、
最適化デバイス。
【請求項10】
請求項1記載の最適化デバイスにおいて、
前記評価指標を設定および確認するための画面を表示させる、
最適化デバイス。
【請求項11】
請求項3記載の最適化デバイスにおいて、
前記評価指標は、前記観測値の選定のための上限数を規定する観測値上限数と、前記拘束条件の選定のための上限数を規定する拘束条件上限数と、の少なくとも一方を含み、
前記演算時間測定部は、前記演算時間が前記演算時間閾値よりも大きい場合に、前記評価指標における、前記観測値上限数と前記拘束条件上限数との少なくとも一方を減少させるように変更する、
最適化デバイス。
【請求項12】
請求項11記載の最適化デバイスにおいて、
前記演算時間測定部は、
前記観測値上限数を一定の幅で減少させるための観測値数減少幅と、前記拘束条件上限数を一定の幅で減少させるための拘束条件数減少幅との設定値を有し、
前記演算時間が前記演算時間閾値よりも大きい場合に、前記評価指標における、前記観測値上限数を前記観測値数減少幅で減少させる、および/または、前記拘束条件上限数を前記拘束条件数減少幅で減少させる、
最適化デバイス。
【請求項13】
測位に関するセンサと、
前記センサのセンサ情報に基づいて、測位に関する最適化計算を行う最適化デバイスと、
を備える、測位システムであって、
前記最適化デバイスは、前記センサから入力される前記センサ情報に基づいて観測値を抽出するセンサ判別部と、
前記観測値に対し拘束条件を追加する拘束条件追加部と、
前記観測値および前記拘束条件に基づいて、前記観測値と前記拘束条件との誤差が最小となるような位置情報を求める最適化計算を行い、求めた位置情報を出力する、最適化計算部と、
前記観測値の選定および前記拘束条件の選定を行うための評価指標を取得する評価指標取得部と、
を備え、
前記拘束条件追加部は、前記評価指標に基づいて、前記観測値の選定および前記拘束条件の選定を行い、
前記拘束条件は、選定されたある観測値とある観測値との間を接続する相対拘束を有する、
測位システム。
【請求項14】
測位に関するセンサと、前記センサのセンサ情報に基づいて、測位に関する最適化計算を行う最適化デバイスとを備える測位システムによって行われる測位方法であって、
前記最適化デバイスによって行われるステップとして、
前記センサから入力される前記センサ情報に基づいて観測値を抽出するセンサ判別ステップと、
前記観測値に対し拘束条件を追加する拘束条件追加ステップと、
前記観測値および前記拘束条件に基づいて、前記観測値と前記拘束条件との誤差が最小となるような位置情報を求める最適化計算を行い、求めた位置情報を出力する、最適化計算ステップと、
前記観測値の選定および前記拘束条件の選定を行うための評価指標を取得する評価指標取得ステップと、
を有し、
前記拘束条件追加ステップは、前記評価指標に基づいて、前記観測値の選定および前記拘束条件の選定を行うステップであり、
前記拘束条件は、選定されたある観測値とある観測値との間を接続する相対拘束を有する、
測位方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、測位技術に関し、移動体の位置を推定する技術に関する。
【背景技術】
【0002】
移動体として自動車や建設機械といった有人操作車両の自動化や、自動点検ロボットによる工場点検作業の無人化といった、人の作業を代替する自律作業機械の開発が進められている。最適化された機械動作による作業効率化、自動運転の実現による省人化といった生産性向上が期待されている。
【0003】
このような自律作業機械を実現するための要素技術の一つとして、自己位置推定技術がある。なかでも、GNSS(Global Navigation Satellite System)を用いて地球座標系上での自己位置を推定する衛星測位技術がある。この衛星測位技術は、低コストの自己位置推定技術であるため、安価な自律作業機械の実現にとって有効な手法と考えられている。
【0004】
衛星測位技術に関する先行技術例としては、国際公開第2017/046914号(特許文献1)が挙げられる。特許文献1には、「測位衛星選択装置」等として、「測位データの品質を評価した品質評価値を求める品質評価部」、「測位で使用する前記測位衛星の時刻ごとの選択組合せを計画する計画立案部」、「選択組合せに含まれる前記測位衛星の測位データを用いて位置の計測演算を行う測位演算部」等の記載がある(例えば請求項3)。
【0005】
また、近年では、衛星測位技術を高精度化する手法として、因子グラフを適用した測位手法が提案されている。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
衛星測位技術、特に因子グラフを適用した測位では、過去のセンサの観測値同士を相対位置関係による拘束条件で繋ぐことで因子グラフを構築し、因子グラフ上の観測値および拘束条件の誤差が小さくなるような測位位置を求める。これにより、測位誤差を抑制することができる。
【0008】
一方で、因子グラフによる測位では、観測値および拘束条件の数に比例して測位精度が向上する。しかし、他方で、観測値および拘束条件を増加させると、因子グラフ最適化に要する演算負荷が増加し、自律作業機械などの移動体の測位をリアルタイムに行うことが困難となる場合が想定される。言い換えると、因子グラフによる測位では、測位精度と、リアルタイム性/演算時間/演算負荷とが、基本的にトレードオフの関係にある。
【0009】
そのため、移動体の自己位置推定に因子グラフを用いるには、演算時間などを考慮し、観測値および拘束条件を削減する必要がある。その際、高精度な測位と演算負荷の低減とを両立させたい場合には、因子グラフの測位結果が高精度となるような観測値と拘束条件の繋げ方を選定しなければならない。
【0010】
特許文献1には、観測値を選定する手段として、衛星信号の精度劣化を評価することで測位に使用する適切な測位衛星群を選択する旨の技術が記載されている。特許文献1のように、観測値毎に精度/評価値をみることで、精度の良い観測値のみを選定することができる。しかし、観測値のみの選定では、拘束条件の繋げ方を選ぶ基準が無いため、適切な拘束条件の設定ができず、測位精度が維持できない、というおそれがある。
【0011】
本開示の目的は、上記衛星測位技術/移動体位置推定技術に関して、測位精度を維持したまま演算負荷を低減できる技術、言い換えると、高精度な測位と演算負荷の低減とを両立できる技術、を提供することである。本開示の目的は、特に、因子グラフを適用した測位手法に関して、観測値と拘束条件との両方を適切に選定することで、測位精度を維持したまま演算負荷を低減できる技術、を提供することである。
【課題を解決するための手段】
【0012】
本開示のうち代表的な実施の形態は以下に示す構成を有する。一実施の形態は、測位に関する最適化計算を行う最適化デバイスであって、入力されるセンサ情報に基づいて観測値を抽出するセンサ判別部と、前記観測値に対し拘束条件を追加する拘束条件追加部と、前記観測値および前記拘束条件に基づいて、前記観測値と前記拘束条件との誤差が最小となるような位置情報を求める最適化計算を行い、求めた位置情報を出力する、最適化計算部と、前記観測値の選定および前記拘束条件の選定を行うための評価指標を取得する評価指標取得部と、を備え、前記拘束条件追加部は、前記評価指標に基づいて、前記観測値の選定および前記拘束条件の選定を行い、前記拘束条件は、選定されたある観測値とある観測値との間を接続する相対拘束を有する。
【発明の効果】
【0013】
本開示のうち代表的な実施の形態によれば、上記衛星測位技術/移動体位置推定技術に関して、測位精度を維持したまま演算負荷を低減できる、言い換えると、高精度な測位と演算負荷の低減とを両立できる。特に、因子グラフを適用した測位手法に関して、観測値と拘束条件との両方を適切に選定することで、測位精度を維持したまま演算負荷を低減できる。上記した以外の課題、構成および効果等については、発明を実施するための形態において示される。
【図面の簡単な説明】
【0014】
【
図1】実施の形態1における、測位システムの構成例を示す図。
【
図2】実施の形態1における、観測値に含まれている衛星情報の構成例を示す図。
【
図3】実施の形態1における、観測値に含まれている測位情報の構成例を示す図。
【
図4】実施の形態1における、評価指標の構成例を示す図。
【
図5A】実施の形態1における、時系列の複数の観測値の例を示す図。
【
図5B】実施の形態1における、時系列の複数の観測値からの選定後の観測値の例を示す図。
【
図5C】実施の形態1における、選定後の観測値に対する、因子グラフと拘束条件の例を示す図。
【
図5D】実施の形態1における、次の時点の観測値と拘束条件の例を示す図。
【
図6】実施の形態1における、単独拘束の構成例を示す図。
【
図7】実施の形態1における、移動拘束の構成例を示す図。
【
図8】実施の形態1における、相対拘束の構成例を示す図。
【
図9】実施の形態1における、最適化デバイスのコンピュータシステムとしての構成例を示す図。
【
図10】実施の形態1における、観測値情報DB、拘束条件DB、および評価指標DBの構成例を示す図。
【
図11A】実施の形態1における、全体処理フローの第1部分を示す図。
【
図11B】実施の形態1における、全体処理フローの第2部分を示す図。
【
図12A】実施の形態1における、拘束条件追加部の詳細処理フローの第1部分を示す図。
【
図12B】実施の形態1における、拘束条件追加部の詳細処理フローの第2部分を示す図。
【
図12C】実施の形態1における、拘束条件追加部の詳細処理フローの第3部分を示す図。
【
図13A】実施の形態1における、拘束条件追加部による相対拘束の選定に関する説明図として因子グラフの第1状態を示す図。
【
図13B】実施の形態1における、拘束条件追加部による相対拘束の選定に関する説明図として因子グラフの第2状態を示す図。
【
図13C】実施の形態1における、拘束条件追加部による相対拘束の選定に関する説明図として因子グラフの第3状態を示す図。
【
図13D】実施の形態1における、拘束条件追加部による相対拘束の選定に関する説明図として因子グラフの第4状態を示す図。
【
図13E】実施の形態1における、拘束条件追加部による相対拘束の選定に関する説明図として因子グラフの第5状態を示す図。
【
図13F】実施の形態1における、拘束条件追加部による相対拘束の選定に関する説明図として因子グラフの第6状態を示す図。
【
図14】実施の形態1における、最適化計算に関する数式などの説明図。
【
図15】実施の形態1における、評価関数の重みを決定する情報行列を示す図。
【
図16】比較例における、因子グラフと相対拘束の例を示す図。
【
図17】実施の形態1における、GUI画面の表示例を示す図。
【
図18】実施の形態2における、測位システムの構成例を示す図。
【
図19】実施の形態2における、演算負荷測定情報のデータテーブルを示す図。
【
図20】実施の形態2における、全体処理フローを示す図。
【
図21】変形例における、測位システムの構成例を示す図。
【発明を実施するための形態】
【0015】
以下、図面を参照しながら本開示の実施の形態を詳細に説明する。図面において、同一部には原則として同一符号を付し、繰り返しの説明を省略する。図面において、構成要素の表現は、発明の理解を容易にするために、実際の位置、大きさ、形状、範囲等を表していない場合がある。本開示の実施形態には限定されず、本開示の概念の中での種々の変形例や応用例も範囲に含まれる。
【0016】
説明上、プログラムによる処理について説明する場合に、プログラムや機能や処理部等を主体として説明する場合があるが、それらについてのハードウェアとしての主体は、プロセッサ、あるいはそのプロセッサ等で構成されるコントローラ、装置、計算機、システム等である。計算機は、プロセッサによって、適宜にメモリや通信インタフェース等の資源を用いながら、メモリ上に読み出されたプログラムに従った処理を実行する。これにより、所定の機能や処理部等が実現される。プロセッサは、例えばCPU/MPUやGPU等の半導体デバイス等で構成される。処理は、ソフトウェアプログラム処理に限らず、専用回路でも実装可能である。専用回路は、FPGA、ASIC、CPLD等が適用可能である。
【0017】
プログラムは、対象計算機に予めデータとしてインストールされていてもよいし、プログラムソースから対象計算機にデータとして配布されてもよい。プログラムソースは、通信網上のプログラム配布サーバでもよいし、非一過性のコンピュータ読み取り可能な記憶媒体、例えばメモリカードやディスクでもよい。プログラムは、複数のモジュールから構成されてもよい。コンピュータシステムは、複数台の装置によって構成されてもよい。コンピュータシステムは、クライアント・サーバシステム、クラウドコンピューティングシステム、IoTシステム等で構成されてもよい。各種のデータや情報は、例えばテーブルやリスト等の構造で構成されるが、これに限定されない。識別情報、識別子、ID、名前、番号等の表現は互いに置換可能である。
【0018】
[課題の解決手段等]
本開示の実施の形態の測位システムは、センサ情報から観測値を抽出するセンサ判別部と、観測値と拘束条件の誤差が最小になるような出力位置を求める最適化計算部とを備える測位システムにおいて、最適化計算に用いる観測値および拘束条件を選定するための評価指標を定める評価指標取得部と、評価指標に基づいて観測値を選定し適切な観測値同士の相対位置を作成し拘束条件として追加する拘束条件追加部とを有し、出力位置を移動体の制御に用いることができる測位システムである。
【0019】
本実施の形態の測位システムでは、因子グラフを適用した測位手法に関して、センサであるGNSS受信機の受信信号に基づいた解析結果の観測値500に対し、拘束条件追加部が、評価指標に基づいて、観測値と拘束条件との両方を適切に選定する。選定された観測値および拘束条件を用いて、最適化計算部が最適化計算を行い、移動体の位置情報を出力する。これにより、測位精度を維持したまま、演算負荷を低減できる。
【0020】
また、本実施の形態では、評価指標に基づいた所定のロジック/アルゴリズムで、観測値および拘束条件を選定する。例えば、評価指標に対応した優先順位で、優先順位が高い観測値および拘束条件を選定する。言い換えると、評価指標に対応した優先順位で、優先順位が低い観測値および拘束条件を除外する。
【0021】
<実施の形態1>
図1~
図17を用いて、本開示の実施の形態1の測位システム等について説明する。
【0022】
[測位システム]
図1は、実施の形態1における測位システム1の構成例を示す。
図1では、実施の形態1の測位システム1を含んで構成されるシステムを図示しており、関連する要素としてGNSS衛星91や移動体2なども図示している。GNSS衛星91は、測位衛星に相当する。測位システム1は、センサ値として衛星測位を入力とした場合の観測値および拘束条件を選定し、移動体2の位置情報を出力する最適化デバイス10を備える。最適化デバイス10は、言い換えると、衛星測位最適化計算装置である。
【0023】
最適化デバイス10は、因子グラフを適用した測位において、過去の観測値同士を相対位置関係による拘束条件で繋ぐことで因子グラフを構築し、因子グラフ上の観測値および拘束条件の誤差が小さくなるような測位位置を求める。このような計算/演算を、最適化計算/演算と記載する場合がある。この最適化計算/演算は、
図1での最適化計算部106で行われる。
【0024】
さらに、本実施例では、最適化デバイス10は、衛星測位技術として、因子グラフを適用した測位手法に基づいて、観測値および拘束条件の選定に関する最適化を行う機能を有する。最適化デバイス10は、好適な観測値および拘束条件を選定することにより、測位精度の維持と演算負荷の低減とを両立する。なお、この観測値および拘束条件の選定に関する最適化は、最適化計算/演算での最適化とは別の意味である。この観測値および拘束条件の選定に関する最適化は、
図1での拘束条件追加部105で行われる。
【0025】
最適化デバイス10は、上記最適化計算/演算と、観測値および拘束条件の選定に関する最適化の計算処理とを実現する実装を有する。例えば、最適化デバイス10は、プログラム処理を行うコンピュータや専用回路などによって実装可能である。
【0026】
最適化デバイス10には、GNSS受信機100、入出力インタフェース104、コントローラ20などが接続されている。コントローラ20は、移動体2を制御する制御装置である。移動体2は、位置を推定する対象となる、自律作業機械であり、具体例としてはロボットや車両が挙げられる。コントローラ20は、最適化デバイス10から受け取った移動体2の位置情報の信号S9に基づいて、移動体2の位置を推定し、推定した位置に応じて、移動体2に対する所定の制御を実行する。所定の制御は、限定されないが、一例としては、移動体2の自律航行の制御である。
【0027】
なお、
図1の測位システム1では、GNSS受信機100の位置と移動体2の位置とが所定の対応関係を有している。例えば、GNSS受信機100と移動体2とが近くに配置されている。そのため、GNSS受信機100の位置から、所定の対応関係に基づいて、移動体2の位置を計算可能である。
【0028】
[GNSS受信機]
図1のGNSS衛星91は、GNSS衛星信号92を発信する。
図1では模式図としてGNSS衛星91を1つしか図示していない。受信アンテナである測位アンテナ101は、そのGNSS衛星信号92を受信する。測位アンテナ101は、受信したGNSS衛星信号92に対応する受信信号(言い換えると衛星信号)S1を、GNSS受信機100へ送信する。GNSS受信機100には測位アンテナ101が接続されている。GNSS受信機100は、測位アンテナ101から送信された受信信号S1を受信・取得する。
【0029】
GNSS受信機100は、測位アンテナ101からの受信信号である衛星信号S1を解析し、解析結果の信号S2を、最適化デバイス10、特にセンサ判別部102へ送信する。この解析結果の信号S2には、後述の観測値500が含まれている。
【0030】
GNSS受信機100と測位アンテナ101は、一体的に実装されたデバイスであってもよい。また、最適化デバイス10は、GNSS受信機100および測位アンテナ101と一体的に実装されたデバイスであってもよい。言い換えると、GNSS受信機100等にこの最適化デバイス10による機能が実装されていてもよい。
【0031】
[最適化デバイス]
図1の最適化デバイス10は、構成例として、センサ判別部102、評価指標取得部103、入出力インタフェース104、拘束条件追加部105、最適化計算部106、観測値情報DB108、拘束条件DB109、評価指標DB111、および電源部110といった機能ブロックを有するデバイスである。
【0032】
電源部110は、バッテリー等の電力に基づいて、最適化デバイス10の各部に必要な電力を供給する。なお、これに限らず、最適化デバイス10がコントローラ20等から電力供給を受けてもよい。
【0033】
図1では、最適化デバイス10は、移動体2のコントローラ20とは独立したデバイスとしているが、これに限らず、最適化デバイス10が移動体2のコントローラ20に組み込まれたデバイスであってもよい。言い換えると、移動体2のコントローラ20に、最適化デバイス10の衛星測位最適化計算の機能が実装されていてもよい。
【0034】
[コンピュータシステム]
図9は、
図1の最適化デバイス10のコンピュータシステム10としての構成例を示す。最適化デバイス10は、例えばパーソナル・コンピュータ(PC)や組み込みマイコンなどによる実装が可能である。このコンピュータシステム10は、主にコンピュータ900によって構成され、コンピュータ900は、プロセッサ901、メモリ902、不揮発性記憶装置903、通信インタフェース904、入出力インタフェース905、電源906などを有し、これらの構成要素は、バス等のアーキテクチャで相互に接続されている。
【0035】
例えば、プロセッサ901は、不揮発性記憶装置903からメモリ902に読み出したプログラムに従った処理を実行する。これにより、
図1の拘束条件追加部105などの各機能ブロックが実行モジュールとして実現される。不揮発性記憶装置903には、最適化デバイス10の電源OFF状態においても所定のデータ/情報が消えずに保持される。通信インタフェース904には、GNSS受信機100やコントローラ20、あるいは外部装置などが接続される。入出力インタフェース905は、
図1での入出力インタフェース104に相当する。入出力インタフェース905には、入力デバイス907および出力デバイス908が外部接続されている。入出力インタフェース905に入力デバイス907や出力デバイス908が内蔵されてもよい。入力デバイス907の例は、操作ボタン、キーボード、マウス、タッチパネル、マイク等である。出力デバイス908の例は、ディスプレイ、プリンタ、スピーカー等である。
【0036】
メモリ902、不揮発性記憶装置903、または外部記憶装置(例えばディスクやカード)には、設定情報、入力情報、出力情報、処理情報などの、各種のデータが記憶される。例えば、メモリ902内に測位結果として移動体2の位置情報の信号S9に対応するデータが記憶されてもよい。
【0037】
なお、コンピュータ900に、他の装置として外部装置が接続されてもよい。外部装置の例としては、ユーザのPCやスマートフォン等のクライアント端末装置が挙げられる。コンピュータシステム10は、外部装置と通信して必要なデータ・情報を入出力してもよい。例えば、コンピュータ900をサーバとし、ユーザのクライアント端末装置との間で、クライアント・サーバシステムが構成されてもよい。その場合、サーバであるコンピュータ900は主要な処理を担い、ユーザのクライアント端末装置は、グラフィカル・ユーザ・インタフェース(GUI)を伴う入出力を担う。サーバは、例えばGUI画面または当該画面内に表示するためのGUI情報を例えばWebページの態様で生成し、ユーザのクライアント端末装置に送信してもよい。ユーザは、クライアント端末装置に表示されたGUI画面およびGUI情報を確認でき、必要に応じて指示や設定を入力することができる。クライアント端末装置は、その指示などをサーバであるコンピュータ900に送信する。コンピュータ900は、その指示などに従って処理を行い、処理結果を含むGUI画面/GUI情報などをクライアント端末装置に送信する。
【0038】
図9のような構成例に限らず、最適化デバイス10は、例えば1つ以上のプロセッサおよび1つ以上のメモリ等を備え、それらによって所定の機能に関する処理を実現するデバイスであってもよい。
【0039】
[観測値]
本実施例における観測値500は、一例として、
図2に示すような、衛星情報2000と、
図3に示すような、同時刻における、測位情報3000と、を有して構成されている。この衛星情報2000と測位情報3000は、時刻ごとに対応付けられた情報として有する。
【0040】
図2の衛星情報2000は、測位衛星であるGNSS衛星91毎の衛星識別番号200、受信時刻201、衛星位置202、擬似距離203、および搬送波位相204を内包している。衛星位置202は、GNSS衛星91の地球座標系(X,Y,Z)での位置座標情報である。
【0041】
図3の測位情報3000は、観測値ID300、測位時刻301、移動体2のエポック秒毎の測位座標302、移動速度303、および推定分散値304を内包している。観測値ID300は、GNSS受信機100で受信した時系列順に、観測値500ごとに紐づけられる通し番号である。図示のID=0の行が最新、ID=nの行が最古であり、n+1個の測位情報を有する。エポック秒は、UTCからの経過秒数である。測位時刻301をt0,t1,……,tnで記載している。なお、測位時刻301間の差を、測位間隔dtとする。
【0042】
測位座標302は、GNSS受信機100での測位結果の位置座標である。移動速度303は、例えば受信信号である衛星信号S1(
図1)のドップラーシフトによって算出される値である。測位座標302および移動速度303を算出する座標系は、地球座標系として、例えばEarth Centered Earth Fixed(ECEF)が定める(X,Y,Z)の直交座標系とする。以降、本実施例で記載する位置情報などについては、全て、ECEFが定める(X,Y,Z)の直交座標系での表現とする。
【0043】
推定分散値304は、測位座標302の散らばりの大きさ、ばらつきの度合い、を表す情報である。本実施例では、推定分散値304を計算する1つの手法としては、例えば衛星測位に使用したGNSS衛星91の幾何学配置から算出される(X,Y,Z)の軸毎の予想標準偏差のうちの最大の値を使用する。本実施例では、この予想標準偏差は、GNSS受信機100によるGNSS測位、または最適化デバイス10の計算によって、得られるとする。予想標準偏差の最大値は、平均値から最も離れる測定値の分布を有するということである。
【0044】
例えば、ID=0の行において、推定分散値304の列における(Xσ,Yσ,Zσ)の各列は、(X,Y,Z)の各軸の推定分散値を示す。これらの(Xσ,Yσ,Zσ)は、算出された各軸の予想標準偏差を有する。そして、それらの(Xσ,Yσ,Zσ)の予想標準偏差のうち、最大値が、推定分散値304として使用される。すなわち、後述の観測値500の選定の際に、この推定分散値304が使用される。観測値ID300の行ごとに同様である。なお、観測値情報DB108では、推定分散値304の列には、少なくとも、予想標準偏差の最大値が保存されればよい。
【0045】
[センサ判別部]
図1のセンサ判別部102は、センサであるGNSS受信機100からの衛星信号の解析結果の信号S2を入力・取得する。センサ判別部102は、その信号S2から、観測値500を判別し、すなわち
図2の衛星情報2000および
図3の測位情報3000を判別して、その観測値500のデータ・情報に対応する信号S3を、観測値情報DB108へ送信・格納する。
【0046】
[観測値DB、拘束条件DB、および評価指標DB]
図10は、データベース(DB)として
図1の観測値情報DB108、拘束条件DB109、および評価指標DB111の構成例を示している。最適化デバイス10に備える、
図9のプロセッサ901がアクセスできるメモリ902に、観測値情報DB108、拘束条件DB109、および評価指標DB111が保持されている。
【0047】
センサ判別部102からの信号S3に含まれる観測値500は、観測値情報DB108に格納される。本例では、
図10の観測値情報DB108には、観測値500の観測値情報のデータテーブルT500が格納されている。さらに、観測値情報のデータテーブルT500は、
図2のような衛星情報2000を含むデータテーブルT2000と、
図3のような測位情報3000を含むデータテーブルT3000とを含んでいる、もしくは、リンクなどで関係付けられる。
【0048】
また、
図10の拘束条件DB109の構成例では、拘束条件5000の拘束条件情報のデータテーブルT5000が格納されている。詳しくは、拘束条件5000を構成する3種類の拘束条件として、単独拘束501の単独拘束情報のデータテーブルT501と、移動拘束502の移動拘束情報のデータテーブルT502と、相対拘束503の相対拘束情報のデータテーブルT503とが、関連付けて格納されている。
【0049】
また、
図10の評価指標DB111の構成例では、
図4のような評価指標4000の評価指標情報のデータテーブルT4000が格納されている。
図1では、評価指標取得部103は、外部に評価指標DB111を有し、評価指標DB111内に評価指標4000の情報を読み書きする。これに限らず、評価指標取得部103内に評価指標DB111が統合されていてもよい。
【0050】
なお、最適化デバイス10に対して外部装置の外部メモリなどに、同様のDBなどの情報が保持されてもよい。その他、DBには、システム設定情報またはユーザ設定情報などが設定・格納されてもよい。また、最適化デバイス10の実装例としてDBやデータテーブルを用いる場合を示したが、これに限らず、計算の高速化を図るために他の実装を採用してもよい。
【0051】
[評価指標取得部]
図1の評価指標取得部103は、
図4に示すような評価指標4000を取得しメモリに格納する機能を有する。言い換えると、評価指標取得部103は、評価指標4000を設定する機能を有する。評価指標4000は、拘束条件追加部105により観測値500および拘束条件の選定・最適化を行う際の基準となる情報である。
【0052】
図4の評価指標4000は、取得時間窓400、観測値数401、拘束条件数402、および最適化デバイスON/OFF情報403を含むデータ・情報である。評価指標4000は、言い換えると、評価指標設定情報である。なお、演算時間閾値405(Tth)は、実施の形態1では用いず、後述の実施の形態2で用いる。
【0053】
図1の評価指標取得部103は、ユーザまたは外部装置から、入出力インタフェース104を通じて入力等された、評価指標情報に対応する信号S10を取得する。この評価指標情報の信号S10は、
図4の評価指標4000の各列の情報(400~403)のうち少なくとも1つの情報を有する。評価指標取得部103は、その評価指標情報の信号S10に基づいて、
図4のような評価指標4000を作成し、メモリの評価指標DB111内に保存する。ユーザまたは外部装置は、入出力インタフェース104および評価指標取得部103を通じて、
図4の評価指標4000の数値の初期設定や変更などを行うことができる。
【0054】
評価指標取得部103から拘束条件追加部105に供給される信号S5は、評価指標DB111から読み出された
図4の評価指標4000の情報に対応する。
【0055】
図4で、本実施例では、評価指標4000の決め方に関する1つの方法としては、予め、ユーザが、対象の移動体2の測位の要件などを鑑みて、入出力インタフェース104を介して、評価指標取得部103に対し、評価指標4000を入力・設定する。ユーザによる設定で、
図4の評価指標4000を構成するための情報として、取得時間窓Twin、観測値数Nnode、拘束条件数Nedge、および最適化デバイスON/OFF情報などが信号S10として入力される。要件は、例えば1回ごとの測位の周期(例えば上限値)、測位精度(例えば下限値)などが挙げられる。このようなユーザ手動設定による方法に限らず、変形例としては、自動設定とすることも可能である。なお、後述のGUI画面で、上記移動体2の測位の要件も設定および確認できるようにしてもよい。
【0056】
変形例では、
図1で、最適化デバイス10に、入出力インタフェース104や
図9の通信インタフェース904等を通じて、外部装置が接続される。その外部装置から、評価指標情報、もしくは、評価指標を決定できる別の情報(例えば移動体2の測位の要件の情報)を入力し、入力情報に基づいて、評価指標取得部103が評価指標4000を設定する。外部装置に限らず、コントローラ20から、評価指標情報などを入力するようにしてもよい。
【0057】
本実施例では、最適化デバイス10に、評価指標取得部103による評価指標4000を設定する機能を備えているが、これに限らず可能である。変形例では、この設定機能を、コントローラ20や移動体2や外部装置などに備えてもよい。その場合、最適化デバイス10は、コントローラ20、移動体2、または外部装置に備える設定機能に対し、アクセスして、評価指標情報を参照するようにしてもよい。
【0058】
[入出力インタフェース]
入出力インタフェース104は、最適化デバイス10に対する入力および出力を行うインタフェースであり、例えば信号S10を入力するための入力デバイスや、評価指標4000等の情報を出力するための出力デバイスが接続される。本実施例では、入出力インタフェース104は、特に、評価指標取得部103と接続されており、評価指標取得部103に対する評価指標4000などの情報の設定のための入力、および、設定されている評価指標4000などの情報の確認のための出力、に用いることができる。なお、最適化デバイス10に入力デバイスや出力デバイスを内蔵してもよい。入出力インタフェース104や
図9の通信インタフェース904を、最適化デバイス10とは別の装置で実装してもよい。入出力インタフェース104は、人であるユーザによる入力、および当該ユーザに対する出力(例えば画面表示や音声出力など)を行うためのインタフェースとしてもよい。これに限らず、入出力インタフェース104は、所定の外部装置による自動的な入力や出力を行うためのインタフェースとしてもよい。移動体2のコントローラ20が入出力インタフェース104を有していて、その入出力インタフェース104を代わりに使用してもよい。
【0059】
また、ユーザまたは外部装置あるいはコントローラ20等は、入出力インタフェース104および評価指標取得部103を通じて、最適化デバイス10の機能、すなわち衛星測位の最適化計算の機能のON/OFFの情報を入力することができる。この情報は、
図4の最適化デバイスON/OFF情報403に、ONまたはOFFの値として設定される。ONは機能が有効、OFFは機能が無効であることを表している。
【0060】
入出力インタフェース104を通じて、評価指標取得部103に対し、最適化デバイスON情報が入力/設定された場合には、そのON情報に従って、最適化デバイス10の機能が有効の状態にされる。
図9のプロセッサ901は、最適化デバイス10の機能を、有効の状態にする。すなわち、有効の状態では、
図1でのセンサ判別部102から最適化計算部106までを含む流れの処理が実行される。入出力インタフェース104を通じて、評価指標取得部103に対し、最適化デバイスOFF情報が入力/設定された場合には、そのOFF情報に従って、最適化デバイス10の機能が無効の状態にされる。プロセッサ901は、当該機能を無効の状態にする。
【0061】
また、上記最適化デバイスON/OFF情報は、ユーザや外部装置やコントローラ20からON/OFFの指示や設定ができる形態に限らずに、例えば最適化デバイス10の電源のON/OFFと直接的に紐づいて入力される形態としてもよい。すなわち、
図1の電源部110を通じて、最適化デバイス10の電源がONの状態にされた場合には、自動的に、最適化デバイス10の上記機能が有効の状態にされる。最適化デバイス10の電源がOFFの状態にされた場合には、自動的に、最適化デバイス10の上記機能が無効の状態にされる。また、例えば、デフォルト設定では最適化デバイス10の機能をON状態にしておき、例外的にユーザまたは外部装置等から指示が入力された場合に、一時的に当該機能をOFF状態にすること、も可能である。あるいは、デフォルト設定では最適化デバイス10の機能をOFF状態にしておき、例外的にユーザまたは外部装置等から指示が入力された場合に、一時的に当該機能をON状態にすること、も可能である。
【0062】
[拘束条件追加部]
図1の拘束条件追加部105は、観測値情報DB108から、時系列での観測値500の信号S4を受信・取得する。また、拘束条件追加部105は、評価指標取得部103から、評価指標4000の信号S5を受信・取得する。拘束条件追加部105は、取得した観測値500と評価指標4000とに基づいて、観測値500の選定と拘束条件の作成・選定の処理を行う。拘束条件追加部105は、言い換えると、拘束条件作成部、拘束条件選定部である。なお、観測値500の選定と、拘束条件の選定とで、2つの機能ブロックに分けて構成してもよい。
【0063】
拘束条件追加部105は、
図4の取得時間窓Twinの範囲内にある複数の観測値500から、観測値数Nnodeを上限とするように、複数の観測値500、つまり観測値数Nnodeに対応する個数の観測値500を選定する。拘束条件追加部105は、選定した複数の観測値500に対し、拘束条件数Nedgeを上限とするように、複数の拘束条件、つまり拘束条件数Nedgeに対応する個数の拘束条件を、追加によって作成する。本実施例で用いる拘束条件の情報および繋ぎ方については後述する。
【0064】
拘束条件追加部105は、選定した観測値500に対し追加作成した拘束条件の情報を、最適化計算部106および拘束条件DB109に送信する。拘束条件追加部105は、当該観測値500および拘束条件の情報に対応する信号S8を、最適化計算部106に送信し、同じである当該拘束条件の情報に対応する信号S6を、拘束条件DB109に送信する。
【0065】
拘束条件DB109は、当該拘束条件の情報に対応する信号S6を受信・取得し、
図10のように、当該情報を、拘束条件5000として格納する。拘束条件5000は、詳しくは、
図6の単独拘束501、
図7の移動拘束502、
図8の相対拘束503を有する。
【0066】
また、本実施例では、拘束条件追加部105は、拘束条件5000について、作成前に、拘束条件DB109内に、作成予定の拘束条件と同一の拘束条件の情報が有るか無いかを、確認・検索する。言い換えると、拘束条件追加部105は、同一の拘束条件が保存済みか否かを確認する。拘束条件追加部105は、作成予定の拘束条件と同一の拘束条件情報が拘束条件DB109内に有る場合、言い換えると保存済みである場合には、拘束条件DB109内の当該同一の拘束条件を参照・取得してもよい。これにより、作成予定の拘束条件についての作成の計算を省略してもよい。本実施例では、後述のフローに示すように、この確認と省略が適時に行われる。
【0067】
拘束条件追加部105は、適時に拘束条件DB109から拘束条件情報を読み出して信号S7として取得することができる。例えば、拘束条件追加部105は、作成予定の拘束条件と同一の拘束条件情報が拘束条件DB109内に無い場合には、当該拘束条件を作成し、信号S6として拘束条件DB109内に格納する。例えば、拘束条件追加部105は、作成予定の拘束条件と同一の拘束条件情報が拘束条件DB109内に有る場合には、当該拘束条件を作成せず、拘束条件DB109内から当該同一の拘束条件情報を信号S7として読み出して取得する。
【0068】
なお、拘束条件追加部105から、作成した拘束条件の情報を、直接的に、最適化計算部106に送信しているが、これに限らなくてもよい。拘束条件追加部105から、作成した拘束条件の情報を、拘束条件DB109に格納し、その後、最適化計算部106が、拘束条件DB109から、当該拘束条件の情報を参照・取得するようにしてもよい。
【0069】
[最適化計算部]
図1の最適化計算部106は、拘束条件追加部105から受信した、観測値500および拘束条件5000を含む信号S8に基づいて、最適化計算処理を行う。最適化計算部106は、それらの観測値500および拘束条件5000を用いて、後述の目的関数を作成し、目的関数に含まれる誤差の総和が最小となるように、観測値500の位置情報を調整する、最適化計算を行う。最適化計算部106は、調整後の観測値500の位置情報、言い換えると、衛星測位の位置情報の補正結果を、移動体2の位置情報の信号S9として、コントローラ20へ送信・出力する。この移動体2の位置情報の信号S9は、言い換えると、最適化デバイス10の出力信号である。この信号S9における位置情報としては、以下のような位置情報が算出されるものとする。すなわち、観測値500のうち少なくとも測位時刻301(
図3)が最新の観測値500、についての位置情報が算出される。なお、最適化計算部106は、観測値情報DB108から拘束条件追加部105を通じて、観測値500の情報を信号S8の一部として取得する。これに限らず、最適化計算部106は、拘束条件追加部105からは拘束条件5000の情報のみを取得し、別途、観測値情報DB108から観測値500の情報を参照するようにしてもよい。
【0070】
[コントローラ]
コントローラ20は、最適化デバイス10の最適化計算部106から移動体2の位置情報の信号S9を受信・入力する。コントローラ20は、この信号S9の位置情報に基づいて、所定の制御として、移動体2の速度や進行方向等の制御を行う機能を有する。
【0071】
[拘束条件の種類と因子グラフの定義]
つぎに、因子グラフを用いた測位の方法における拘束条件の種類などについて説明する。本実施例では、因子グラフを構成する拘束条件として、
図6の単独拘束501、
図7の移動拘束502、および
図8の相対拘束503の3種類の拘束条件を使用する。ここでは、3種類の拘束条件の内容と繋ぎ方について述べる。
図5Aおよび
図5Bには複数の観測値500の例、
図5Cには3種類の拘束条件における各拘束条件と観測値との繋ぎ方の例を示している。
【0072】
図5Aは、例えば、観測値500として複数の観測値500が、時系列順に、1番目から6番目まで並ぶ場合を示している。本例では、6個の観測値500として、観測値500-1,……,500-6がある。時系列、言い換えると時間軸は、図面での左から右への方向とする。例えば、1番目の観測値500が時間的に先に到来した最古の値であり、6番目の観測値500が時間的に後に到来した最新の値である。本図面では、各観測値500を、識別のための数字を丸印で囲んだ、ノードの表現で図示している。丸印内の数字は順番/識別番号を表している。
【0073】
図5Aの6個の観測値500は、1回(言い換えるとエポック)の測位の処理の際に対象として扱う複数の観測値500の例である。
図4の取得時間窓Twinの範囲内に入る観測値500の数が例えば6個ということである。取得時間窓Twinは、1回(エポック)の測位の処理対象とする複数個の観測値500を取得するための時間範囲を規定する情報である。最適化デバイス10は、観測値500の時系列データにおいて、取得時間窓Twinの範囲内での個数まで、最新の観測値500から複数個の観測値500を取得する。
【0074】
入力として例えば
図5Aの6個の観測値500がある場合に、最適化デバイス10(特に拘束条件追加部105)は、はじめに、使用する観測値500の数を、評価指標4000に基づいた上限数までに選定する。この際、最適化デバイス10は、前述の
図3の推定分散値304(つまり予想標準偏差の最大値)に基づいて、使用する観測値500の数を、上限数である
図4の観測値数Nnodeに対応する個数まで選定する。ここでは、観測値数Nnodeが5個であるとする。最適化デバイス10は、
図5Aの6個の観測値500から、推定分散値304が小さい順に、5個の観測値500を選択する。言い換えると、最適化デバイス10は、
図5Aの6個の観測値500から、推定分散値304が大きい1つの観測値500を除外する。本例では、選定の結果、3番目の観測値500-3が取り除かれた場合を考える。上限数までの観測値500の選定方法の詳細については後述する。
【0075】
図5Bは、
図5Aから選定後の複数(5個)の観測値500を示す。最適化デバイス10、特に拘束条件追加部105は、選定後の観測値500について、拘束条件5000を作成する。作成する拘束条件5000として、
図6の単独拘束501、
図7の移動拘束502、および
図8の相対拘束503の3種類の拘束条件を使用する。
【0076】
図5Cは、
図5Bの選定後の観測値500に対し、単独拘束501、移動拘束502、および相対拘束503の3種類の拘束条件を作成した際の、因子グラフの構成例を示している。それぞれの拘束条件は、観測値500のノードに接続されるリンクの線として表現されている。また、単独拘束501には小さい四角印を付与し、移動拘束502には小さい三角印を付与し、相対拘束503には小さい丸印を付与して図示している。
図5Cのような、観測値500のノードと拘束条件5000のリンクで表現されたデータは、因子グラフに相当する。
【0077】
それぞれの観測値500ごとに単独拘束501が作成される。本例では、5個の観測値500{1,2,4,5,6}に対応して、図示の5個の単独拘束501{501-1,……,501-5}が作成されている。また、時系列上で隣接するそれぞれの観測値500間に、移動拘束502が作成される。本例では、5個の観測値500に対応して、図示の4個の移動拘束502{502-1,……,502-4}が作成されている。
【0078】
さらに、時系列上で選択された観測値500同士を繋ぐように相対拘束503が作成される。本例では、図示の3個の相対拘束503{503-1,……,503-3}が作成されている。相対拘束503-1は、2番目の観測値500-2と5番目の観測値500-5とを接続している。相対拘束503-2は、4番目の観測値500-2と6番目の観測値500-6とを接続している。相対拘束503-3は、2番目の観測値500-2と6番目の観測値500-6とを接続している。
【0079】
[単独拘束]
図6は、単独拘束501を表すデータテーブルであり、
図10でのデータテーブルT501に対応する。
図6の単独拘束501は、観測値ID601、測位時刻602、単独位置603を有する。単独拘束501は、
図6に示すように、衛星測位の位置情報を含んだデータテーブルとして表現できる。衛星測位の位置情報は、測位時刻602および単独位置603であり、単独位置603は、
図3の測位座標302と同じ情報である。単独拘束501は、
図5Cに示したように、観測値ID601で識別される観測値500ごとに個別に作成される。なお、作成された単独拘束501については、拘束条件DB109への情報の保存を省略することも可能である。
【0080】
[移動拘束]
図7は、移動拘束502を表すデータテーブルであり、
図10でのデータテーブルT502に対応する。
図7の移動拘束502は、第1観測値ID701、第2観測値ID702、移動ベクトル703を有する。移動拘束502は、
図7に示すように、時系列順で隣接する2つの観測値500の第1観測値ID701と第2観測値ID702との間における、衛星測位間の移動ベクトル703を含んだテーブルとして表現できる。移動ベクトル703は、
図3の移動速度303から作成できる。移動拘束502は、
図5Cに示したように、時系列順に並べられた選定後の観測値500間を結ぶように算出される。
【0081】
図7の下部には移動拘束502の計算式である式1として、V
ab=Σv
idt(i=a~b)を示している。2つの観測値500をa,bとし、移動ベクトルをV
abとした場合に、当該移動ベクトルV
abは、観測値500に含まれる
図3の移動速度303(v
iとする)と観測値500の測位間隔dtを用いて、式1によって算出される。
【0082】
例として、
図5B、
図5Cで、2番目の観測値500-2と4番目の観測値500-4との隣り合った2つの観測値500について、これらの2つの観測値500を結ぶ移動拘束502-2は、取り除かれた観測値500-3を含め、2番目,3番目,4番目の観測値500(500-2,500-3,500-4)毎に、移動速度v
iと測位間隔dtの積を算出し、これらの積を合成することで、算出される。
【0083】
[相対拘束]
図8は、相対拘束503を表すデータテーブルであり、
図10でのデータテーブルT503に対応する。相対拘束503は、第1観測値ID801、第2観測値ID802、相対位置803を有する。相対拘束503は、
図8に示すように、2つの観測値500の第1観測値ID801と第2観測値ID802との間の相対位置803を含んだテーブルとして表現できる。相対位置803は、選択された2つの観測値500に対し、当該観測値500に内包した
図2の衛星情報2000を用いた相対測位を実施することで算出される。拘束条件追加部105は、この相対位置803を作成・格納する。なお、
図8のテーブルでは、2つの観測値500の組み合わせのすべてが行として用意されており、選択された観測値500の組み合わせの行に情報が格納されればよい。これに限らず、選択された観測値500の組み合わせのみが行として作成されてもよい。また、観測値500の選択有無を1/0で設定するようにしてもよい。
【0084】
相対拘束503は、
図5Cに示したように、
図4の拘束条件数Nedgeを上限値とした個数で作成される。相対拘束503の選定方法については後述する。
【0085】
[相対測位]
図8の相対拘束503の作成の際には、最適化デバイス10の拘束条件追加部105が、観測値500のデータに基づいて、相対測位の処理を実行する。この相対測位は、公知技術を適用でき、詳細説明を省略する。この相対測位は、簡単に説明すると、
図1のGNSS衛星91の位置を基準として、GNSS衛星91からのGNSS衛星信号92がGNSS受信機100のそれぞれの受信位置(例えば2つの点)に到達する際の時間差を測定し、当該2つの点の間の相対的な位置関係を求める方法である。
【0086】
これに限らず、相対測位とは別の方法や別のセンサ値を用いて、観測値500間の相対位置803を算出するようにしてもよい。
【0087】
[観測値および拘束条件の重複について]
なお、
図5Aは、ある時点(例えば第1の時点とする)で得られる6個の観測値500を例示している。次の時点(例えば第2の時点とする)では、新たな観測値500、例えば7番目の観測値500が得られる。この次の時点(第2の時点)では、同様に6個の観測値500を扱う場合に、1回の測位の処理の対象は、2番目から7番目までの6個の観測値500となる。以降の各時点でも同様である。最適化デバイス10は、各時点で同様に処理を行えばよい。
【0088】
また、例えば第1の時点での6個の観測値500に対し、拘束条件5000(例えば
図5C)が作成され、作成された拘束条件5000の情報が、拘束条件DB109内に保存されたとする。次の第2の時点での6個の観測値500に対し、同様に、拘束条件が作成される。その際に、第1の時点と第2の時点では、一部の観測値500、つまり2番目から6番目までの観測値500が同一として重複している。よって、第2の時点で作成される拘束条件5000も、一部は、第1の時点で作成された拘束条件5000と同一のものとなる場合がある。そのため、その同一の拘束条件5000については、再度作成処理を行う必要は無く、前述のように、拘束条件DB109内の同一の拘束条件情報を参照・使用すれば済む。
【0089】
図5Dの例は、
図5Cに対し、次の時点である第2の時点で、新たな観測値500、例えば7番目の観測値500(500-7)が得られた状態を示している。第2の時点に対応する回では、図示のように拘束条件5000が作成されたとする。破線・白色は前回作成済みの拘束条件5000に対して重複している部分であり、実線・黒色が今回新たに作成された拘束条件5000の部分であり、前回とは重複していない部分である。新たに作成された部分は、単独拘束501-6、移動拘束502-5、相対拘束503-4である。この場合、重複している部分については、拘束条件DB109内の同一の拘束条件情報を参照・使用すれば済む。
【0090】
[拘束条件の選定]
つぎに、拘束条件追加部105における拘束条件の選定のアルゴリズム、言い換えると処理ロジック等について説明する。
【0091】
図5Cのような因子グラフでは、繋がっている拘束条件5000(特に相対拘束503)が少ない観測値500が連続する部分がある場合に、測位精度が低下する。説明上、繋がっている拘束条件5000が少ない観測値500を、特に相対拘束503との接続数が最小の観測値500を、観測値Nminとも記載する。よって、過去情報量や拘束条件5000の数が同じ場合でも、繋がる拘束条件5000が少ない観測値500が連続で隣り合わないように因子グラフを構成することで、つまりそうなるように拘束条件5000を選定することで、測位精度を維持または向上させることができる。
【0092】
本実施例での拘束条件選定アルゴリズムでは、
図5Bのように観測値500を選定し、単独拘束501と移動拘束502を作成した後に、拘束条件追加部105は、相対拘束503の選定を行う。拘束条件追加部105は、その選定として、因子グラフにおいて、繋がる拘束条件5000(特に相対拘束503)が少ない観測値500が時系列で連続している箇所が、最も少なくなるように、作成予定の相対拘束503を選択・設定していく。詳しくは後述の
図13A~
図13Fに示される。このようなアルゴリズムによって、観測値500や拘束条件5000の数に上限を設ける場合でも、適切にこれらを選定し、演算負荷を低減しつつ、測位精度を維持または向上させることができる。
【0093】
[全体フロー]
図11Aおよび
図11Bは、実施の形態1の測位システム1における動作や処理の全体フローを示す。
図1の最適化デバイス10は、本フローに従って動作や処理を実行する。本フローは、後述の
図12A~
図12Cのようなフローの処理(観測値500および拘束条件5000の選定等)を用いて、測位精度を維持したまま演算負荷の低減を実現するような測位を行う全体フローを示している。
【0094】
図11Aのフローは、
図1の最適化デバイス10において例えば電源ONの場合に起動される。例えば、ユーザが、入出力インタフェース104を介して、操作入力を行うことで、最適化デバイスON情報を信号S10として入力する。評価指標取得部103は、信号S10に基づいて、評価指標DB111の
図4の評価指標4000の最適化デバイスON/OFF情報403をONにする。最適化デバイスON情報をトリガーとして、最適化デバイス10は、
図11Aおよび
図11Bのフローの処理を実行する。このフローの処理は、最適化デバイスON/OFF情報403がOFFになるまで、継続的に繰り返し実行される。例えば、ユーザが、入出力インタフェース104を介して、操作入力を行い、最適化デバイスOFF情報を信号S10として入力する。評価指標取得部103は、
図4の評価指標4000の最適化デバイスON/OFF情報403をOFFにする。この最適化デバイスOFF情報をトリガーとして、最適化デバイス10は、本フローの処理を停止する。
【0095】
本フローの処理は、上記ユーザによる最適化デバイスON/OFF情報403の操作に限らずに、最適化デバイスON/OFF情報403の設定に基づいて自動的に実行を切り替えることも可能である。例えば、外部装置が、入出力インタフェース104を介して、最適化デバイスON/OFF情報403にONまたはOFFを設定してもよい。
【0096】
[S100]
図11Aで、ステップS100では、最適化デバイス10は、評価指標取得部103において最適化デバイスON/OFF情報403を確認し、ONの場合には、ループのステップS101~S111の処理を繰り返し実行する。
【0097】
[S101]
ステップS101では、評価指標取得部103は、入出力インタフェース104を通じて例えばユーザが入力/設定した
図4の評価指標4000における取得時間窓Twin、観測値数Nnode、および拘束条件数Nedgeを取得する。ユーザからの入力が無い場合には、評価指標取得部103の評価指標DB111にすでに保存されている評価指標4000の数値、例えば初期設定値、をそのまま用いる。
【0098】
[S102]
ステップS102では、測位アンテナ101においてGNSS衛星91からのGNSS衛星信号92を受信し、この受信信号である衛星信号に対応する信号S1を、GNSS受信機100へ送信する。このとき、測位アンテナ101において、受信する衛星信号の他に、測位結果を補正する補正情報を持つ補正信号も受信して、GNSS受信機100へ送信してもよい。また、測位アンテナ101の他に、補正情報を持つ補正信号を受信する受信装置を用意し、この受信装置で受信した補正情報を持つ補正信号を、測位アンテナ101で受信した衛星信号と併せて、GNSS受信機100へ送信する、といった形態としてもよい。
【0099】
[S103]
ステップS103では、GNSS受信機100において、受信した衛星信号に対応する信号S1を解析し、解析結果の信号S2を、センサ判別部102へ送信する。この解析結果の信号S2には、前述の観測値500、具体的には
図2の衛星情報2000および
図3の測位情報3000が含まれる。また、GNSS受信機100が上記補正情報を持つ補正信号を受信している場合には、GNSS受信機100において、この補正情報を用いて、観測値500を補正したうえで、解析結果の信号S2を作成してもよい。
【0100】
[S104]
ステップS104では、センサ判別部102において、GNSS受信機100から受信した解析結果の信号S2から、観測値500を抽出・作成し、観測値500の信号S3を観測値情報DB108に送信・格納する。
【0101】
[S105]
ステップS105では、拘束条件追加部105において、評価指標取得部103の評価指標DB111から、信号S5として、評価指標4000における取得時間窓Twin、観測値数Nnode、および拘束条件数Nedgeを取得する。
【0102】
[S106]
ステップS106では、拘束条件追加部105において、観測値情報DB108に保存されている観測値500を参照し、観測値500の観測値ID300(
図3)に基づいて、観測値500の更新(言い換えると追加)の有無を確認する。観測値500に更新が無い場合、例えば新たな観測値ID300を持つ観測値500の追加が無い場合(S106-N)には、このエポックでの全体フローを完了し、ループの最後のステップS111に遷移する。エポックは、衛星から同時に受信する信号の単位や、データの周期や取得数である。また、最適化デバイス10は、ステップS106で確認した観測値情報DB108内の観測値ID300の一覧を、拘束条件追加部105のメモリ等に保存し、次回のエポックでのステップS106の更新確認の際に当該一覧を読み出して使用する。観測値500に更新が有る場合(S106-Y)には、
図11BのステップS107に進む。
【0103】
[S107]
図11BのステップS107では、拘束条件追加部105において、観測値情報DB108に保存されている観測値500の受信時間範囲(
図2の受信時刻201の範囲)を、取得時間窓Twinの時間長さと比較する。受信時間範囲が取得時間窓Twinより短い場合(S107-Y)には、ステップS107-2へ進む。ステップS107-2では、拘束条件追加部105において、観測値情報DB108内の全ての観測値500を取得する。受信時間範囲が取得時間窓Twin以上に長い場合(S107-N)には、ステップS107-1へ進む。ステップS107-1では、拘束条件追加部105において、観測値情報DB108内の最新の観測値500から取得時間範囲(取得時間窓Twinに対応する範囲)までの受信時刻201を持つ観測値500を取得する。
【0104】
[S108]
ステップS108では、拘束条件追加部105は、取得した観測値500に含まれている
図3の推定分散値304を確認し、推定分散値304が小さい順に、当該観測値500を優先して、
図4の評価指標4000の観測値数Nnodeに対応する個数まで、観測値500を選定する。言い換えると、推定分散値304に基づいた優先順位で、観測値数Nnodeに対応する個数の観測値500が選定される。
【0105】
[S109]
ステップS109では、拘束条件追加部105において、選定された観測値500に基づいて、当該観測値500に応じた各拘束条件として、単独拘束501、移動拘束502、および相対拘束503を作成する。詳細は
図12A等のフローで示される。拘束条件追加部105は、作成した拘束条件5000と対応する観測値500の信号S8を、最適化計算部106へ送信し、また、当該拘束条件の信号S6を拘束条件DB109に送信・格納する。
【0106】
[S110]
ステップS110では、最適化計算部106において、拘束条件追加部105から受信した観測値500および拘束条件5000の信号S8に基づいて、目的関数の最小化計算を実行する。最適化計算部106は、拘束条件5000によって、最適化計算の目的関数を立式し、最適化計算によって、移動体2の位置情報を作成し、作成した位置情報を信号S9としてコントローラ20に出力・送信する。
【0107】
最適化計算における目的関数の最小化計算は以下である。
図14には、最適化計算に関する数式を示している。処理対象の観測値500の観測値ID300(
図3)を、時系列順に、iとする。ID=iにおける、単独拘束501の単独位置603(
図6)を、位置ベクトルr
GNSS
iとし、ID=i,i+1での移動拘束502の移動ベクトル703(
図7)を、速度ベクトルv
GNSS
iとし、ID=i,jでの相対拘束503の相対位置803(
図8)を、B
i,jとする。ID=iでの求める移動体2の位置座標をri、速度ベクトルをviとする。このとき、最適化計算部106は、位置座標riと速度ベクトルviを用いて、
図14の式2~式4を作成する。ただし、このとき、式5のような置き換えをしている。式5のxは、位置座標と速度ベクトルとのセットの情報である。式5におけるx
i
GNSSは、GNSS受信機100による実測値であり、x
iは、求めようとしている真値に近い値である。
【0108】
最適化計算部106は、上記3つの式である式2~式4のそれぞれにおいて、
図14の式6~式8に示すように、評価関数を作成する。式6,式7,式8における、それぞれのe{e
GNSS,i,e
MOT,i,e
Tr,(i,j)}は、3種類の誤差/エラーである。これらのeについて、式6,式7,式8のように、それぞれ、評価関数が作成される。この評価関数は、拘束条件5000を評価するための関数である。
【0109】
式6~式8中のΩgnss,Ωdop,Ωtrは、
図15に示すような、それぞれの評価関数の重みを決定する情報行列である。この情報行列は、例えば、事前に最適化計算部106に定数として設定・保存してもよい。
【0110】
最適化計算部106は、これらの評価関数を用いて、目的関数を作成する。最適化計算の目的関数をF(x)とすると、目的関数F(x)は、
図14の式9のようになる。例えば、式6,式7,式8における3つの評価関数を加算することで、式9に示すような目的関数F(x)とする。
【0111】
最適化計算部106は、目的関数F(x)の解として、目的関数F(x)の値を最小とするようなx(x1,……,xn)を求める。xは、言い換えると位置座標riおよび速度ベクトルviである。その際、最適化計算部106は、位置情報に、観測値ID300毎の単独位置を初期値として使用して、所定の最適化手法を用いて計算する。所定の最適化手法は、例えば、最小二乗法、模擬焼きなまし法、遺伝的アルゴリズムといった手法を適用できる。
【0112】
最適化計算部106は、このようにして導出されたx(x1,……,xn)に含まれる、各観測値ID300における移動体2の位置情報を、信号S9としてコントローラ20に送信・出力する。
【0113】
[S111]
ステップS111では、評価指標取得部103において、入出力インタフェース104を通じて、最適化デバイスON/OFF情報403を取得し、取得した最適化デバイスON/OFF情報403がONの場合には、ステップS100に戻り、OFFの場合には、最適化デバイス10の動作を終了する。
【0114】
[最適化計算の演算負荷]
ステップS110の最適化計算は、因子グラフを適用した方法に基づいているが、この方法では、一般に、当該最適化計算に使用する拘束条件(特に相対拘束503)の数が多いほど、演算負荷が大きく、演算時間が長くなる傾向がある。特に、上記目的関数F(x)の解を求める最小化計算は、相対的に演算負荷が大きい。
【0115】
そこで、本実施例では、ステップS110よりも前までに、ステップS110の最適化計算に用いる拘束条件5000の数の低減を図るものである。すなわち、本実施例では、ステップS109で、拘束条件追加部105が、
図4の評価指標4000の拘束条件数Nedgeに応じて、作成する拘束条件5000の数を調整・制御する。
【0116】
図16には、比較例として、最適化計算に関連する因子グラフにおける拘束条件5000の作成の数の例を示す。
図16は、後述の
図13A~
図13Fの例に対する比較例である。
図16は、1回のエポックで、11個の観測値500(#1~#11で示す)に対し、5個の相対拘束503を作成する例である。本例では、まず、1番の観測値#1と4番の観測値#4との間に第1の相対拘束503aが作成されている。つぎに、7番の観測値#7と10番の観測値#10との間に第2の相対拘束503bが作成されている。つぎに、2番の観測値#2と5番の観測値#5との間に第3の相対拘束503cが作成されている。つぎに、8番の観測値#8と11番の観測値#11との間に第4の相対拘束503dが作成されている。つぎに、3番の観測値#3と6番の観測値#6との間に第5の相対拘束503eが作成されている。
【0117】
[拘束条件の選定の処理フロー]
図12A、
図12B、および
図12Cは、実施の形態1における
図11BのステップS109の、
図1の拘束条件追加部105による、拘束条件5000の作成・選定の処理を含む、処理フローを示す。本フローは、拘束条件追加部105によって
図5Bのように観測値500を選定した後の、拘束条件5000の作成・選定の詳細処理例を示している。また、対応して、
図13A~
図13Fは、ステップS206からステップS214までの相対拘束503の選定の例を図示している。拘束条件追加部105は、
図11BのステップS109で観測値数Nnodeまで選定された複数の観測値500に基づいて、単独拘束501、移動拘束502、および相対拘束503の3種類の拘束条件5000を作成していく。
【0118】
[S201]
ステップS201では、拘束条件追加部105は、選定後の観測値500毎に、単独拘束501を作成する。
【0119】
[S202]
ステップS202では、拘束条件追加部105は、移動拘束502の作成数を1からカウントし、ループ中のステップ(ステップS203,S203-1,S203-2)の処理を繰り返し実行する。拘束条件追加部105は、繰り返しのたびにそのカウントを1ずつ増加する。カウント値が観測値数Nnodeと同数になった場合には、ループから抜けて、ステップS204に進む。ステップS202では、拘束条件追加部105は、選定後の観測値500を時系列順に並べ、
図3の測位時刻301の古い順に、隣り合う観測値500間の移動拘束502を、カウント毎に作成予定にする。
【0120】
[S203]
ステップS203では、拘束条件追加部105は、拘束条件DB109内に、作成予定の移動拘束502と同一の移動拘束の情報が保存されているか否かを確認する。この保存が確認された場合(S203-Y)には、ステップS203-1へ進む。ステップS203-1では、拘束条件追加部105は、作成予定の移動拘束502と同一の移動拘束502の情報を、拘束条件DB109内から参照・取得する。当該作成予定の移動拘束502と同一の移動拘束の情報が保存されていない場合(S203-N)には、ステップS203-2へ進む。ステップS203-2では、拘束条件追加部105は、作成予定の移動拘束502における拘束条件DB109内に保存されていない分の移動拘束502を作成する。
【0121】
[S204]
上記ループの後のステップS204では、拘束条件追加部105は、
図3の観測値ID300に基づいて、選定後の観測値500のうち、最新の時刻の観測値500と最古の時刻の観測値500とを用いた作成予定の相対拘束503と同一の相対拘束503の情報が、すでに拘束条件DB109内に保存されているか否かを確認する。拘束条件DB109内に当該作成予定の相対拘束と同一の観測値ID300を持つ相対拘束503の情報が保存されている場合(S204-Y)には、ステップS204-1へ進む。ステップS204-1では、拘束条件追加部105は、拘束条件DB109内の当該拘束条件情報を参照・取得することで、作成予定の相対拘束503の計算を省略する。
【0122】
拘束条件DB109内に当該作成予定の相対拘束と同一の観測値ID300を持つ相対拘束503の情報が保存されていない場合(S204-N)には、ステップS204-2へ進む。ステップS204-2では、拘束条件追加部105は、当該観測値500間で対応する
図2の衛星情報2000を用いた相対測位の実施によって、最新の時刻の観測値500と最古の時刻の観測値500との間の当該相対拘束503を作成・設定する。ステップS204-1,S204-2の後は、
図12BのフローF2へ続く。
【0123】
ステップS204-2は、最優先の1つ目の相対拘束503として、最古の観測値500と最新の観測値500とを繋ぐ相対拘束503を作成することで閉ループを形成するような処理である。
図13Aの例では、最古の観測値#1と最新の観測値#11とを繋ぐ相対拘束503Aが作成されている。
【0124】
[作成予定の拘束条件の情報の確認]
なお、ステップS203やステップS204では、作成予定の移動拘束502や相対拘束503に関して、同一の拘束情報の保存の有無を確認するが、この確認の処理では、当該拘束条件によって繋ぐための対象の2つの観測値500が分かれば、当該拘束条件の特定が可能である。つまり、例えば
図8のように、それぞれの相対拘束503は、第1観測値ID801と第2観測値ID802との2つのIDで規定される。また、相対位置803の列に格納されている値は、当該2つの観測値500間の相対拘束503についての再度の作成、更新を行わない限りには、前回の時と同じ値を有する。よって、このような観測値IDを調べれば、作成予定の拘束条件と同一の拘束条件が保存済みか否かについて、容易に確認が可能である。
【0125】
[S205]
図12BのフローF2で、ステップS205では、拘束条件追加部105は、相対拘束503の作成数を1からカウントし、以降のループ内のステップ(ステップS206~S215,S215-1,S215-2)を繰り返し実行する。拘束条件追加部105は、繰り返しのたびに、そのカウントを1ずつ増加し、カウント値が
図4の拘束条件数Nedgeを超えた場合には、
図12Cまでのループから抜けて、フローを終了する。これにより、相対拘束503の数を拘束条件数Nedgeまで抑え、演算負荷を低減させることができる。
【0126】
[S206]
ステップS206では、選定後の観測値500のうち、相対拘束503の接続数が最小の観測値500を、観測値Nminとして置く。
【0127】
図13Aでは、例として、選定された11個の観測値500を有する。ここでは、11個の観測値500は、識別のため、測位時刻301の時系列の順で、観測値ID300と対応する#1~#12を付与して図示している。単独拘束501については図示を省略する。本例では、11個の観測値500が時系列順で隣り合う同士で移動拘束502によって繋がっている。移動拘束502については、破線のリンクとして図示している。また、これらの観測値500のうち一部の観測値500(#1,#4,#8,#11)が相対拘束503によって繋がる場合を示している。相対拘束503については、実線のリンクとして図示している。相対拘束503で繋がる観測値500(#1,#4,#8,#11)については、白丸のノードで図示している。最古の観測値#1と最新の観測値#11とには、ステップS204に基づいて、相対拘束503(503A)が作成されている。観測値#4と観測値#8とには、相対拘束503(503B)が作成されている。これらの4個の観測値500(#1,#4,#8,#11)は、それぞれ、相対拘束503の接続数が1個である。
【0128】
この場合に、相対拘束503で繋がっていない7個の観測値500(#2,#3,#5,#6,#7,#9,#10)を有する。これらの7個の観測値500は、それぞれ、相対拘束503の接続数が0個である。よって、
図13Aの状態では、これらの7個の観測値500が、ステップS206での「相対拘束の接続数が最小の観測値」である観測値Nminとなる。観測値Nminを、グレーの丸のノードとして図示している。
【0129】
本実施例では、
図13Aの例に示すように、相対拘束503の作成の仕方の1つとして、最古の時刻の観測値#1と最新の時刻の観測値#11とを、必ず、相対拘束503で接続されるようにする。これにより、複数(11個)の観測値500において閉ループが構成され、測位精度を高めることができる。
【0130】
[S207]
ステップS207では、拘束条件追加部105は、選定後の観測値500を時系列順に並べた際に、上記観測値Nminが連続で並んでいる区間を検索する。ここでは、観測値Nminが連続で並んでいる区間を、区間Scとする。
【0131】
[S208]
ステップS208では、拘束条件追加部105は、ステップS207で検索した区間Scのうち、連続で並んでいる観測値Nminが最も多い区間Scを検索し、検索された当該区間Scを、特に、区間Scmとする。
【0132】
図13Bに示した例では、観測値Nminが2個連続で並んでいる区間Scが2つあり、3個連続で並んでいる区間Scが1つある。観測値Nminが2個連続で並んでいる区間Scは、区間Sc1(観測値#2,#3)と区間Sc3(観測値#9,#10)である。観測値Nminが3個連続で並んでいる区間Scは、区間Sc2(観測値#5,#6,#7)である。このとき、観測値Nminが3個連続で並んでいる区間Sc2は、連続で並んでいる観測値Nminが最も多い区間Scである。そのため、この区間Sc2が、ステップS208での「最も長い区間」である区間Scmとなる。
【0133】
[S209]
ステップS209では、拘束条件追加部105は、ステップS208で検索された区間Scmの候補(候補区間Scxとする)が複数あるか確認し、複数ある場合(S209-Y)には、ステップS209-1へ進み、複数無い場合(S209-N)にはステップS210へ進む。ステップS209-1では、拘束条件追加部105は、複数の候補から1つを区間Scmとして選択する。拘束条件追加部105は、当該区間Scm(候補区間Scx)内の観測値500を時系列順に並べたときに、中央値となる観測値500を用いて、当該観測値500内の
図3の推定分散値304が小さい区間Scm(候補区間Scx)を、区間Scmとして選択する。なお、中央値が1つの観測値500ではなく複数である場合には、それらのうち推定分散値304が最も小さい1つを選択すればよい。
図13Bの例では、区間Scmの候補区間Scxは、区間Sc2という1つである。そのため、ステップS209-1は実行されない。
【0134】
[S210]
ステップS210では、拘束条件追加部105は、区間Scm内の観測値500を時系列順に並べたときに、中央値となる観測値を、観測値N1として選択し、観測値Nminから排除する。このとき、区間Scm内の中央値が1つではなく複数である場合には、推定分散値304が最も小さい1つを、観測値N1として選択する。
図13Bの例では、区間Scmである区間Sc2には、3つの観測値Nmin(#5,#6,#7)が含まれている。このとき、時系列順で2番目の観測値Nmin(#6)が中央値である。この場合に、この観測値Nmin(#6)が観測値N1として選択される。観測値N1は、後述のように相対拘束503が作成されることで、観測値Nminではなくなる。
【0135】
[S211]
ステップS211では、拘束条件追加部105は、選定後の観測値500を再度時系列中に並べたときに、観測値Nminが連続で並んでいる区間Scを検索する。この観測値Nminの中に観測値N1は含まれない。
図13Cの例では、
図13Bで選択された観測値N1(#6)が観測値Nminから排除された状態を示している。この観測値N1(#6)は、観測値Nminではない状態であり、区別のため、白の菱形のノードで図示している。
【0136】
[S212]
ステップS212では、拘束条件追加部105は、ステップS211で検索された区間Scのうち、最も長い区間である区間Scmを検索する。
図13Dの例では、観測値Nminが2個連続で並んでいる区間Scが2つあり、区間Sc1(#2,#3)と区間Sc3(#9,#10)である。また、観測値Nminが1個のみで並んでいる区間Scが2つあり、区間Sc4(#5)と区間Sc5(#7)である。なお、ここでは、連続の数が1つのもの、つまり1個の観測値500のみのものも、区間Scの概念に含むとする。
【0137】
このとき、
図13Dの例では、観測値Nminが2個連続で並んでいる2つの区間Scとして区間Sc1および区間Sc3が、区間Scmの候補(候補区間Scx)となる。ステップS212の後、
図12CのフローF3に続く。
【0138】
[S213]
図12Cで、ステップS213では、拘束条件追加部105は、ステップS212で検索された区間Scmの候補(候補区間Scx)が複数あるか確認し、複数ある場合(S213-Y)には、ステップS213-1へ進み、複数無い場合(S213-N)には、ステップS214へ進む。ステップS213-1では、拘束条件追加部105は、当該区間Scm(候補区間Scx)内の観測値500を時系列順に並べたときに、中央値となる観測値500の推定分散値304が小さい区間Scm(候補区間Scx)を、区間Scmとして選択する。
【0139】
図13Dの例では、区間Scmの候補区間Scxが2つあり、区間Sc1と区間Sc3である。そのため、ステップS213-1へ進むこととなる。この例では、区間Sc1と区間Sc3のどちらの候補も、観測値Nminが2個であり、偶数であり、中央値となる観測値500が2つある。そのため、これらの2つの候補区間(Sc1,Sc3)に含まれる4つの観測値Nmin(#2,#3,#9,#10)におけるすべての推定分散値304が比較される。
【0140】
図13Eの例では、
図13Dでの2つの候補区間(Sc1,Sc3)のうち、例えば、区間Sc1の観測値Nminにおける推定分散値304が最小であったとする。そのため、この区間Sc1が区間Scmとして選択された場合を示している。
【0141】
[S214]
ステップS214では、拘束条件追加部105は、区間Scm内の観測値500を時系列順に並べたときに、中央値となる観測値500を、観測値N2として選択し、観測値Nminから排除する。このとき、区間Scm内の中央値が複数の場合には、推定分散値304が小さい方を観測値N2として選択する。
図13Eの例では、区間Scmである区間Sc1の2つの観測値#2,#3において、観測値#2が観測値N2として選択されている。この観測値N2を、観測値N1と同様に、区別のため、菱形のノードで図示している。
【0142】
[S215]
ステップS215では、拘束条件追加部105は、観測値ID300に基づいて、上記観測値N1と観測値N2との2つを用いた相対拘束503を作成予定とし、この作成予定の相対拘束503と同一の相対拘束情報が拘束条件DB109内に保存されているか否かを確認する。当該作成予定の相対拘束503と同一の観測値ID300を持つ相対拘束503の情報が保存されている場合(S215-Y)には、ステップS215-1へ進む。ステップS215-1では、拘束条件追加部105は、拘束条件DB109内から当該相対拘束503の情報を参照・取得することで、作成予定の相対拘束503の計算を省略する。
【0143】
当該作成予定の相対拘束503と同一の観測値ID300を持つ相対拘束503の情報が保存されていない場合(S215-N)には、ステップS215-2へ進む。ステップS215-2では、拘束条件追加部105は、上記観測値N1と観測値N2との間の相対拘束503を作成し、この新たに作成された分の相対拘束503の情報を、拘束条件DB109内に保存する。
【0144】
図13Fの例では、上記観測値N1(#6)と観測値N2(#2)との間に相対拘束503(503C)が作成された状態を示している。これにより、上記11個の観測値500(#1~#11)には、合計で3個の相対拘束503(503A,503B,503C)が作成されている。
図4の拘束条件数Nedge=3であるため、この設定および条件に従った3個の相対拘束503(503A,503B,503C)が作成されたこととなる。
【0145】
上記フローにより、拘束条件追加部105は、推定分散値304の小さい観測値500および拘束条件5000(特に相対拘束503)を選定し、これにより、測位の精度を維持したまま、演算負荷を低減させることができる。
【0146】
本実施例では、上記フローのように、相対拘束503の接続数が最小である観測値Nminと、連続で並んでいる観測値Nminが最も多い区間Scmと、観測値N1,N2とを用いて、
図4の拘束条件数Nedgeまでに抑えた数で相対拘束503を作成する。
図13A~
図13Fの例のように、相対拘束503に接続されていない観測値Nminが連続する数が少なくなるように、相対拘束503(503A,503B,503C)が選定されている。追加作成された相対拘束503Cを形成する2つの観測値500である観測値N1(#6)と観測値N2(#2)は、因子グラフの全体として測位精度を高めることができる相対拘束503Cを作成するための好適な観測値500として選択されている。
【0147】
なお、
図12A~
図12Cのフローにおいて演算負荷が相対的に大きい処理は、特に、ステップS204-2の相対拘束503の作成と、ステップS215-2の相対拘束503の作成との2つである。これらの処理は、相対測位の処理を含む。相対拘束503の作成の数が多いほど、演算負荷が増えるが、上記のように作成する相対拘束503の数が制限され、その制限の中で、なるべく測位精度が高くなるように相対拘束503が選定される。よって、測位精度と演算負荷の低減とが両立できる。
【0148】
図16の比較例に対し、
図13Fの例を比べる。11個の観測値500に対し、作成される相対拘束503の数は、
図16の比較例では5個であるが、
図13Fの例では3個に低減・抑制されている。この数の低減・抑制の分、演算負荷が低減され、結果として、処理時間も短くなり、移動体2の測位に関するリアルタイム性などを確保することができる。
【0149】
[グラフィカル・ユーザ・インタフェース(GUI)]
本実施例で説明した各図面に示す各種のデータ・情報、例えばテーブルや因子グラフ等について、例えば
図2,
図3,
図4,
図6,
図7,
図8,
図13A~
図13F,
図15などの内容については、
図1の入出力インタフェース104、またはコントローラ20や外部装置を介して、表示デバイスの表示画面にGUIとともに表示するようにしてもよい。表示に限らず、音声出力などを用いてもよい。これにより、ユーザは、画面で、各種のデータ・情報を見て、確認や設定などを行うことができる。
【0150】
図17は、本実施例におけるGUI画面の表示例を示す。
図17の画面では、衛星測位に関して、評価指標4000の情報が表示されており、ユーザによる設定が可能となっている。また、
図13Fと同様の因子グラフの形式で拘束条件(特に相対拘束503)の情報が表示されている。また、相対拘束503のデータテーブルが表示されている。
【0151】
[実施の形態1の効果等]
実施の形態1によれば、移動体2の測位に関する最適化デバイス10による上述した処理、特に、因子グラフを用いた最適化計算に係わる、評価指標4000に基づいた適切な観測値500および拘束条件5000を選択する処理を実行する。これによって、測位精度を維持したまま、またはなるべく低下させずに、演算負荷/演算時間を低減した測位を、実現することができる。
【0152】
<実施の形態2>
図18以降を用いて、実施の形態2について説明する。実施の形態2等の基本的な構成は実施の形態1と同様・共通であり、以下では、実施の形態2等における実施の形態1とは異なる構成部分について主に説明する。
【0153】
実施の形態1では、例えばユーザが入力/設定した評価指標4000(
図4)に基づいて、観測値500や拘束条件5000の上限を定めることで、演算負荷を決定した。言い換えると、上限の設定に応じて、最適化デバイス10の演算負荷を、大小の所望のバランスに制御することができた。この演算負荷の上限は、言い換えると、許容される演算負荷は、測位システム1を構成するハードウェアおよびソフトウェアの性能や、測位システム1を利用する移動体2などの対象によっても、変化し得る。
【0154】
実施の形態2では、測位システム1(特に最適化デバイス10)の演算負荷に関する演算時間を実際に計測/計算し、この演算時間の実測値に応じて、前述の観測値500および拘束条件5000の数に関する上限(評価指標4000)を定める。すなわち、実施の形態2では、最適化デバイス10における最適化計算などを含む処理に要する演算時間が、要件を満たすような閾値以内となるように、観測値500および拘束条件5000の数に関する上限を修正/決定する。実施の形態2では、実施の形態1に、このような機能が追加される。これにより、ユーザが要望する演算時間以内に、最適化デバイス10の処理が完了するように、演算負荷を自動的に調整可能とする。
【0155】
[測位システム]
図18は、実施の形態2における測位システム1の構成例を示す。実施の形態2の測位システム1における最適化デバイス10は、評価指標4000の一部として、ユーザが演算処理時間に関する閾値を設定できる。この閾値は、
図4での演算時間閾値405(Tth)に相当する。実施の形態2では、その演算時間閾値405に基づいて、観測値500および拘束条件5000を選定する機能を有する。
【0156】
図18の構成は、
図1の構成に対する主な相違点としては、演算時間測定部1800が追加されている。演算時間測定部1800は、センサ判別部102、評価指標取得部103、入出力インタフェース104、および最適化計算部106と接続されている。
図18では電源部110などの一部の図示を省略している。
【0157】
[演算時間測定部]
演算時間測定部1800は、言い換えると、演算負荷測定部である。演算時間測定部1800は、最適化デバイス10での最適化計算などの処理に要する時間を、演算時間(Tcalとする)として測定する。演算時間測定部1800は、演算時間(Tcal)を測定するためのタイマー機能を備える。
【0158】
図19は、演算時間測定部1800が保持する演算時間測定情報1900のデータテーブルを示す。演算時間測定部1800は、
図19のような演算時間測定情報1900のデータテーブルをメモリに保持する。演算時間測定情報1900のデータテーブルは、列で示すデータ・情報として、演算時間1901、演算時間閾値1902、取得時間窓減少幅1903、観測値数減少幅1904、および拘束条件数減少幅1905を有する。
【0159】
演算時間1901列には、演算時間測定部1800のタイマー機能によって測定された演算時間Tcalが格納される。演算時間閾値1902列は、
図4の評価指標4000の演算時間閾値405(Tth)と同じ閾値が、演算時間閾値Tcal_limitとして格納される。取得時間窓減少幅1903をTwin_decとする。観測値数減少幅1904をNnode_decとする。拘束条件数減少幅1905をNedge_decとする。
【0160】
演算時間閾値Tcal_limit、取得時間窓減少幅Twin_dec、観測値数減少幅Nnode_dec、および拘束条件数減少幅Nedge_decは、予め格納される設計値としてもよい。あるいは、これらの設定値は、ユーザまたは外部装置またはコントローラ20等が、入出力インタフェース104等を通じて、演算時間測定部1800の演算時間測定情報1900に可変で設定するものとしてもよい。
図19の演算時間閾値Tcal_limitと
図4の演算時間閾値Tthは、1つに統合してもよい。
【0161】
本実施例では、演算時間閾値Tcal_limitの設定値は、GNSS受信機100の測位周期と同じ大きさに設定される。
【0162】
最適化デバイス10は、センサ判別部102がGNSS受信機100から解析結果の信号S2を受信した際に、演算時間測定部1800において、センサ判別部102からbool型のTRUE信号を受信し、当該TRUE信号をトリガーとして、タイマー機能をスタートする。言い換えると、演算時間測定部1800は、当該トリガーで、タイマーによる演算時間Tcalのカウントをスタートする。センサ判別部102は、実施の形態1での機能に加え、解析結果の信号S2の受信時に、当該受信を表すbool型の信号を演算時間測定部1800へ送信する機能を有する。
【0163】
また、最適化デバイス10は、最適化計算部106が移動体2の位置情報の信号S9をコントローラ20に送信する際に、演算時間測定部1800において、最適化計算部106からbool型のFALSE信号を受信し、当該FALSE信号をトリガーとして、タイマー機能をストップする。言い換えると、演算時間測定部1800は、当該トリガーで、タイマーによる演算時間Tcalのカウントをストップする。最適化計算部106は、実施の形態1での機能に加え、移動体2の位置情報の信号S9をコントローラ20に送信する際に、当該送信を表すbool型の信号を演算時間測定部1800へ送信する機能を有する。
【0164】
演算時間測定部1800は、上記タイマー機能によって測定した実測値である演算時間Tcalを、
図19のデータテーブルの演算時間1901列に格納する。演算時間測定部1800は、この演算時間Tcalを、演算時間閾値Tcal_limitと比較する。演算時間測定部1800は、この演算時間Tcalが、演算時間閾値Tcal_limitより大きかった場合には、評価指標取得部103内の
図4の評価指標4000における、取得時間窓Twin、観測値数Nnode、および拘束条件数Nedgeのうち少なくとも1つのパラメータの数値を、変更・調整する。この変更・調整は、取得時間窓Twin、観測値数Nnode、および拘束条件数Nedgeのうち少なくとも1つのパラメータの数値を、変更前の数値よりも小さくすることである。つまり、演算時間が閾値よりも長くかかっているため、それらのパラメータ値を減少させることで、演算時間が短くなるように調整しようとするものである。
【0165】
本実施例では、例えば、取得時間窓Twin、観測値数Nnode、および拘束条件数Nedgeのすべての数値が減少される。これにより、拘束条件追加部105で作成する拘束条件5000の総数、特に相対拘束503の数を減らし、前述の最適化計算などに要する計算量、演算負荷を低下させる。この結果、その後における演算時間の減少が期待できる。
【0166】
本実施例では、例えば、
図19の演算時間測定情報1900を有する場合に、演算時間測定部1800は、
図19の下部に示す式11~式13を用いて、演算時間Tcalに応じた評価指標4000の変更のための計算を行う。
【0167】
式11は、取得時間窓Twinを、取得時間窓減少幅Twin_decの分、減算するものである。式12は、観測値数Nnodeを、観測値数減少幅Nnode_decの分、減算するものである。式13は、拘束条件数Nedgeを、拘束条件数減少幅Nedge_decの分、減算するものである。
【0168】
上記取得時間窓Twin、観測値数Nnode、および拘束条件数Nedgeのすべてのパラメータ値を変更することに限らず、1つのパラメータ値の変更のみでも、演算時間Tcalの減少が期待できる。一旦あるパラメータ値を減少した後、演算時間Tcalがまだ閾値Tcal_limitを超える場合、再度、同じパラメータ値をさらに減少させてもよいし、他のパラメータ値を減少させてもよい。演算時間Tcalが閾値Tcal_limit以下となるまで、パラメータ値の変更を試行すればよい。
【0169】
また、上記取得時間窓Twin、観測値数Nnode、および拘束条件数Nedgeのパラメータ値において、制御上の変更の優先度を設けてもよい。例えば、第1優先で取得時間窓Twinを変更し、第2優先で観測値数Nnodeを変更し、第3優先で拘束条件数Nedgeを変更する、といった制御でもよい。
【0170】
演算時間測定部1800において上記取得時間窓Twin、観測値数Nnode、および拘束条件数Nedgeのパラメータ値を変更した場合、演算時間測定部1800は、当該変更後のパラメータ値(信号S11)を、評価指標取得部103に送信する。評価指標取得部103は、その変更後のパラメータ値を、
図4の評価指標4000内に保存する。
【0171】
[全体処理フロー]
図20は、実施の形態2における、
図18の構成の場合の全体処理フローを示す。
図20のフローは、実施の形態1の
図11Aおよび
図11Bのフローに対し、いくつかのステップが追加されている。追加されているステップは、ステップS103の次のステップS300などであり、前述のステップS104等が置き換えられている。
【0172】
[S300]
ステップS300では、センサ判別部102が、解析結果の信号S2を受信すると、ほぼ同時に、当該受信を表すbool型のTRUE信号を、演算時間測定部1800へ送信する。これにより、演算時間測定部1800の演算時間Tcalのタイマーをスタートさせる。
【0173】
[S301]
ステップS301は、実施の形態1でのステップS104からステップS111までと同様の処理である。
【0174】
[S302]
ステップS302では、最適化計算部106が、移動体2の位置情報の信号S9をコントローラ20に送信すると、ほぼ同時に、当該送信を表すbool型のFALSE信号を、演算時間測定部1800へ送信する。これにより、演算時間測定部1800の演算時間Tcalのタイマーをストップさせる。そして、演算時間測定部1800は、タイマーの測定値である演算時間Tcalを
図19のデータテーブルに保存する。
【0175】
[S303]
ステップS303では、演算時間測定部1800は、測定された演算時間Tcalと演算時間閾値Tcal_limitとを比較して大小を判定する。演算時間Tcalが演算時間閾値Tcal_limitよりも大きい場合(S303-Y)には、ステップS303-1に進む。ステップS303-1では、演算時間測定部1800は、評価指標取得部103の
図4の評価指標4000の取得時間窓Twin、観測値数Nnode、および拘束条件数Nedgeのうち少なくとも1つのパラメータ値を変更・調整する。すなわち、前述のように、
図19の演算時間測定情報1900を用いて、それらのパラメータ値がそれぞれ減少される。演算時間測定部1800は、変更後の評価指標4000の数値を、評価指標取得部103(評価指標DB111)へ入力・保存する。言い換えると、評価指標4000の情報が更新される。その後、ステップS111に進む。演算時間Tcalが演算時間閾値Tcal_limit以下である場合(S303-N)には、ステップS303を行わずにステップS111に進む。
【0176】
[実施の形態2の効果等]
実施の形態2によれば、最適化デバイス10による上述した処理の実行によって,演算負荷と対応している演算時間Tcalが、閾値よりも大きい場合に、評価指標4000の数値が自動的に調整される。そして、この評価指標4000の調整に応じて、因子グラフにおける使用する観測値500の数や拘束条件5000(特に相対拘束503)の数が調整されることとなる。これにより、前よりも演算負荷が低減され、要する演算時間Tcalが減少されることとなる。結果、演算時間Tcalが閾値以下となるようにすることができる。実施の形態2では、測位システム1を構成するハードウェアおよびソフトウェアの性能や、測位システム1を利用する移動体2などの対象に応じた、必要な要件に合わせて、演算時間閾値を設定しておくことで、演算時間が要件を満たすように調整が可能である。
【0177】
<変形例>
図21は、実施の形態1や実施の形態2に関する変形例の測位システムを示す。この変形例では、最適化デバイス10は、測位に関する要件が異なる複数の移動体2(ここでは移動体A,B,Cとする)についての衛星測位および最適化を行うとする。このために、評価指標取得部103の評価指標取得DB111には、それぞれの移動体2の要件に応じた異なる評価指標4000が設定されている。移動体Aのためには評価指標Aが設定されており、移動体Bのためには評価指標Bが設定されており、移動体Cのためには評価指標Cが設定されている。それぞれの評価指標4000は、
図4のパラメータ値を異なる数値とすることができる。また、最適化デバイス10は、どの移動体2のための測位を行うかに応じて、適用する評価指標4000を適時に切り替えるように制御する。また、評価指標4000の設定値に対応させて、それに対応するモードを規定し、モードを切り替えるように制御するようにしてもよい。
【0178】
例えば、移動体Aは、要求される測位精度が相対的に高く、その分、演算負荷・演算時間は相対的に大きくなってもよいという要件がある。逆に、移動体Cは、要求される演算負荷・演算時間が相対的に低く・短く、その分、測位精度は相対的に低くなってもよいという要件がある。最適化デバイス10は、このような移動体2の要件に応じた評価指標4000を参照して、測位および最適化を行うことができる。
【0179】
以上、本開示の実施の形態について具体的に説明したが、前述の実施の形態に限定されず、要旨を逸脱しない範囲で種々変更可能である。各実施の形態は、必須構成要素を除き、構成要素の追加・削除・置換などが可能である。特に限定しない場合、各構成要素は、単数でも複数でもよい。各実施の形態や変形例を組み合わせた形態も可能である。
【符号の説明】
【0180】
1…測位システム、2…移動体、20…コントローラ、91…GNSS衛星、92…GNSS衛星信号、100…GNSS受信機、101…測位アンテナ、102…センサ判別部、103…評価指標取得部、104…入出力インタフェース、105…拘束条件追加部、106…最適化計算部、108…観測値情報DB、109…拘束条件DB、110…電源部、111…評価指標DB、500…観測値、4000…評価指標、5000…拘束条件。