(57)【要約】【課題】移動体をナビゲートする無衝突経路の決定を並列処理できる方法が提供される。【解決手段】現在地と目的地リスト中の最新目的地との間の直結線上に衝突物体が位置しているか否かを判定し、移動体表現各々について以下を反復することにより、無衝突経路区間のグラフを繰り返し構築する。すなわち、直結線が無衝突状態であるならば、経路区間をグラフのエッジとして保存し、次の反復のために最新目的地を新たな現在地として選択し、最新目的地を目的地リストから取り除く。直結線が無衝突状態でなければ、直結線と交差する１つまたは複数のポリゴン表現における局所的極値に基づき、到達可能なノードを識別する。ただし局所的極値は、現在地と最新目的地との間の直結線から左または右に逸脱した角度に対し相対的に決定される。さらに次の反復のために表現から、識別されたノード各々について移動体の新たな表現を生成する。【選択図】図２Ａ
2018109621.tif 000002
【特許請求の範囲】
【請求項１】
出発地から目的地まで移動体をナビゲートするための無衝突経路の決定を並列処理可能にする、コンピュータで実装された方法（２００）であって、前記方法は、
出発地（ＳＬ）と目的地（ＴＬ）の表現を受け取り、かつ、１つまたは複数の潜在的な衝突物体の１つまたは複数のポリゴン表現（ＣＯ１，ＣＯ２，ＣＯ３）を受け取るステップ（２１０）と、
前記移動体の少なくとも１つの表現を初期化するステップ（２２０）であって、前記少なくとも１つの表現は、受け取った前記出発地（ＳＬ）を現在地（ＣＬ）として有し、かつ、受け取った前記目的地（ＴＬ）を最新目的地として含む１つの目的地リスト（ＬＯＴ）をさらに有するステップと、
前記現在地と前記目的地リスト中の前記最新目的地との間の直結線上に、衝突物体が位置しているか否かを判定することによって、無衝突経路区間のグラフを繰り返し構築し、各移動体表現について、存続中の前記移動体表現と対応づけられた前記目的地リストが空になるまで、以下のステップを繰り返すステップ（２３０）であって、すなわち、
前記直結線が無衝突状態であるならば、前記経路区間を前記グラフのエッジとして保存し、次の反復のために、前記最新目的地を新たな現在地（ＣＬ）として選択して、前記最新目的地を前記目的地リストから取り除くステップと、
前記直結線が無衝突状態でなければ、前記直結線と交差する１つまたは複数のポリゴン表現上の局所的極値に基づき、到達可能なノードを識別し、ただし局所的極値は、前記現在地と前記最新目的地との間の前記直結線から左または右に逸脱した角度に対し相対的に決定され、次の反復のために前記表現から、識別されたノード各々について前記移動体の新たな表現を生成し、前記新たな表現は、前記移動体表現と同じ現在地を有し、かつ前記移動体表現の目的地リストの全要素と新たな最新目的地として識別された前記ノードとから成る１つの目的地リストを有するステップと、
を繰り返すステップ（２３０）と、
無衝突経路区間に基づき無衝突経路を構築するステップ（２４０）と、
前記無衝突経路を経路セレクタへ供給するステップ（２５０）と、
を含む、
方法（２００）。
【請求項２】
到達可能なノードを識別する前記ステップは、
対応する前記衝突物体を迂回するために左へ逸脱した角度を有するポリゴン区間を含む、１つの特定のポリゴン表現の第１群のポリゴン区間を決定するステップ（６１０）と、対応する前記衝突物体を迂回するために右へ逸脱した角度を有するポリゴン区間を含む、前記特定のポリゴン表現の第２群のポリゴン区間を決定するステップ（６１０）と、
決定された前記第１群のポリゴン区間各々について、左へ逸脱した角度の値が大きい方のノードを別個にマーキングするステップ（６２０）と、決定された前記第２群のポリゴン区間各々について、右へ逸脱した角度の値が大きい方のノードを別個にマーキングするステップ（６２０）と、
前記特定のポリゴン表現の局所的極値として２つのマークが付されたノードを、潜在的に到達可能なノードとして識別するステップ（６３０）と、
をさらに含む、
請求項１記載の方法。
【請求項３】
到達可能なノードを識別する前記ステップは、
右および左へ逸脱した角度の値が最も大きい前記到達可能なノードを、前記特定のポリゴン表現の大域的極値として識別し、大域的極値ではない局所的極値をフィルタリング除去するステップ（６５０）、
をさらに含む、
請求項２記載の方法。
【請求項４】
到達可能なノードを識別する前記ステップは、
１つの特定のポリゴン表現の１つまたは複数の局所的極値により、前記現在地からは隠されている１つの特定のポリゴン表現の局所的極値をフィルタリング除去するステップ（６４０）、
をさらに含む、
請求項２または３記載の方法。
【請求項５】
局所的極値の識別をマルチプロセッサデバイスにより並列処理する、
請求項１から４までのいずれか１項記載の方法。
【請求項６】
前記グラフ（３００）を構築するステップはさらに、以下のパフォーマンスベースフィルタリングステップすなわち、
中間目的地の許容性をチェックすることにより局所的極値をフィルタリングするステップと、
１つの特定の移動体表現が、個々の目的関数に関して競合する移動体表現よりもパフォーマンスが悪いと判定され得るのであれば、前記特定の移動体表現を削除するステップと、
のうち１つまたは複数のステップをさらに含む、
請求項１から５までのいずれか１項記載の方法。
【請求項７】
前記経路セレクタは、構築された前記無衝突経路に対し以下の後処理アクティビティすなわち、
スプラインを用いて経路を平滑化するアクティビティと、
１つまたは複数の着目対象エリアに対する入口ポイントまたは出口ポイントを表す１つまたは複数の中間地点を、経路に沿ってさらに付加するアクティビティと、
１つの移動体が先行の中間地点から次の中間地点まで直接移動可能であるならば、前記経路から１つまたは複数の中間地点を取り除くアクティビティと、
のうち１つまたは複数の後処理アクティビティを適用する、
請求項１から６までのいずれか１項記載の方法。
【請求項８】
前記経路セレクタから、選択された１つの無衝突経路を受け取るステップと、
前記選択された経路に従い前記移動体の移動方向を調整するために、前記選択された無衝突経路によって前記移動体の制御システムを更新するステップ（２６０）と、
をさらに含む、
請求項１から７までのいずれか１項記載の方法。
【請求項９】
１つの特定の潜在的な衝突物体の１つの特定のポリゴン表現は、前記特定の潜在的な衝突物体の現在ポジションを表すセンサデータに関連づけられている、
請求項１から８までのいずれか１項記載の方法。
【請求項１０】
前記グラフの構築時に前記直結線が無衝突状態である場合、前記目的地リストが空であるならば、前記個々の移動体の表現を削除するステップ、
をさらに含む、
請求項１から９までのいずれか１項記載の方法。
【請求項１１】
出発地から目的地まで移動体をナビゲートするための無衝突経路の決定を並列処理可能にするコンピュータプログラム製品であって、前記コンピュータプログラム製品は、
コンピュータシステム（１００）のメモリにロードされて前記コンピュータシステムの少なくとも１つのプロセッサにより実行されると、請求項１から１０までのいずれか１項記載のコンピュータで実装された方法のステップを実施する、
コンピュータプログラム製品。
【請求項１２】
出発地から目的地まで移動体をナビゲートするための無衝突経路を並列処理により決定するコンピュータシステム（１００）であって、前記コンピュータシステム（１００）は、
出発地と目的地のデータ（１０）と、１つまたは複数の潜在的な衝突物体の１つまたは複数のポリゴン表現（２０）と、を受け取るように構成されたインタフェース構成要素（１１０）と、
前記移動体の少なくとも１つの表現を初期化するように構成された初期化構成要素（１２０）であって、前記少なくとも１つの表現は、受け取った前記出発地を現在地として有し、かつ、受け取った前記目的地を含む１つの目的地リストをさらに有する初期化構成要素（１２０）と、
移動体表現各々について、受け取った前記目的地に到達しないかぎり、前記現在地と前記目的地リスト中の最新目的地との間の直結線上に衝突物体が位置しているか否かを判定するために、極値識別器モジュール（１３１）とレプリケータモジュール（１３２）とを繰り返し呼び出すことによって、無衝突経路区間のグラフを繰り返し構築するように構成されたグラフジェネレータ（１３０）と、
を含み、
前記グラフジェネレータ（１３０）は、前記直結線が無衝突状態であるならば、対応する経路区間を前記グラフのエッジとして保存するように構成されており、かつ次の反復のために、前記最新目的地を新たな現在地として選択して、前記最新目的地を前記目的地リストから取り除くようにさらに構成されており、
前記グラフジェネレータ（１３０）は、前記直結線が無衝突状態でなければ、
前記直結線と交差する１つまたは複数のポリゴン表現上の局所的極値に基づき、到達可能なノードを識別するために、前記極値識別器（１３１）を呼び出すように構成されており、ただし局所的極値は、前記現在地と前記最新目的地との間の前記直結線から左または右に逸脱した角度に対し相対的に決定され、
次の反復のために前記表現から、識別されたノード各々について前記移動体の新たな表現を生成するために、前記レプリケータ（１３２）を呼び出すように構成されており、ただし前記新たな表現は、前記移動体表現と同じ現在地を有しており、かつ前記移動体表現の目的地リストの全要素と新たな最新目的地として識別された前記ノードとから成る１つの目的地リストを有しており、
前記グラフジェネレータ（１３０）はさらに、無衝突経路区間に基づき無衝突経路を構築し、前記無衝突経路を経路セレクタ（１４０）へ供給するように構成されている、
コンピュータシステム（１００）。
【請求項１３】
前記極値識別器（１３１）はさらに、以下のようにして前記到達可能なノードを識別するように構成されている、すなわち、
対応する前記衝突物体を迂回するために左へ逸脱した角度を有するポリゴン区間を含む、１つの特定のポリゴン表現の第１群のポリゴン区間を決定し、対応する前記衝突物体を迂回するために右へ逸脱した角度を有するポリゴン区間を含む、前記特定のポリゴン表現の第２群のポリゴン区間を決定し、
決定された前記第１群のポリゴン区間各々について、左へ逸脱した角度の値が大きい方のノードを別個にマーキングし、決定された前記第２群のポリゴン区間各々について、右へ逸脱した角度の値が大きい方のノードを別個にマーキングし、
前記特定のポリゴン表現の局所的極値として２つのマークが付されたノードを、潜在的に到達可能なノードとして識別する、
請求項１２記載のコンピュータシステム。
【請求項１４】
前記極値識別器（１３１）はさらに、以下のようにして前記到達可能なノードを識別するように構成されている、すなわち、
右および左へ逸脱した角度の値が最も大きい前記到達可能なノードを、前記特定のポリゴン表現の大域的極値として識別し、かつ／または、
前記特定のポリゴン表現により前記現在地からは隠されている前記局所的極値をフィルタリング除去することにより、前記到達可能なノードを取得する、
請求項１３記載のコンピュータシステム。
【請求項１５】
請求項１２から１４までのいずれか１項記載のコンピュータシステムを含むモバイルデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には移動体のナビゲーションシステムに関し、より具体的には、リアルタイムルート調整のための方法、コンピュータプログラム製品およびシステムに関する。
【背景技術】
【０００２】
たとえば水域移動体（たとえば船、ボート、ホバークラフト、船舶、潜水艦等）、空域移動体（たとえばドローン）またはロボットなどのような移動体向けのルートの計算および最適化は、移動体が出発地と目的地との間の特定の一連のゴールに向かって最適化されたルートを使用すべき場合であると、および出発地と目的地との間に１つまたは複数の衝突物体（または衝突エリア）が存在する場合であると、複雑になる。ここで留意されたいのは、水域／空域の移動体またはロボットはもともと、道路またはレールといった予め規定されたルートオプションに基づく何らかの境界線には拘束されていない、ということである。むしろ、かかる移動体はたいてい、ある表面上または所定の高度帯内において、任意の方向を自由に使うことができる。これによって衝突物体に遭遇するリスクが高まる。かかる衝突物体は、静的タイプ（たとえば島などの陸地、沿岸エリアまたは水深の浅いエリア、山、湖水等）の場合もあるし、あるいはそれらの衝突物体は動的タイプ（たとえば水流／気流が強いエリア、またはもっと一般的には、避けるべき厳しい気象条件のエリア、または晒されるのを最小限にすべきエリア）の場合もある。
【０００３】
かかる衝突物体は典型的には、マップ上で個々の衝突物体の形状および位置をモデリングするポリゴン表現によって表され、またはそのようなポリゴン表現として近似される。これはポリゴン環境と呼ばれることもある。同様に、ルートは典型的には一連の中間地点としても計算され、それらの中間地点を用いてポリゴン線を描くことができ、そのようなポリゴン線はいわゆるスプラインの計算により滑らかにすることができ、またはそれらの中間地点を用いて一連の大きな円弧を描くことができ、それらによって球面形状の上に経路が記述される。
【０００４】
特定の最適化の制約条件（たとえば陸地等）と、（たとえばできるかぎり短く、またはできるかぎり速くなどのような）１つまたは複数の目的関数のもとで、ルート計算を試みる場合、１つの連続環境における数学的な最適化問題には無数の可能解があり、これにより適切なルートの選択が著しく妨げられる。中間ステップの個数に関する知識が欠如していること、衝突物体が場合によっては非凸性であること、たとえば燃料消費というコンテキストにおいて非凸性であること、によって、ルート計算がかなり難しくなる。動的環境（非静的な衝突物体）のケースであると、数学的に最適な解は非実用的であり、現在の技術水準の計算能力では実行不可能である。
【０００５】
よって、ポリゴン環境において解くことができるルート計算に対し、従来技術において解決策が提案されてきた。それら従来技術の解決策には、セル分割法、ボロノイ図、確率ロードマップ、Ａスター、および可視グラフが含まれる。しかしながら離散化ステップゆえに、いくつかの従来技術の解決手段では、使用されるアルゴリズムに固有の情報損失が引き起こされ、それによって最適なルートの計算が妨げられる可能性がある。可視グラフに基づく手法によって、情報損失が回避される。これによれば、可視グラフ上の最短経路が実世界の最短経路に対応する。ただし、出発地と目的地とによって定義されるグラフの少なくとも一部分は、可能性のある組み合わせ各々について計算しなければならない。連続空間には無限の組み合わせが存在しており、したがって可能性のある組み合わせ各々について対応するグラフを規定するのは不可能である。船舶ルート計算のケースでは、典型的には数１００万のロケーションポイントを考慮しなければならない。その結果、ほぼリアルタイムの計算環境が要求されるシナリオではルート計算は実施不可能であり、しかも膨大な量のメモリスペースを消費する、という状況が引き起こされる。たとえば、動的衝突物体を避けなければならない、という状況においては、水域移動体の慣性ゆえに船舶のルートを著しく迅速に調整するのが有利である。さらに望まれているのは、かかる計算を、メモリ容量および計算能力が制限されているスマートフォンまたはタブレットコンピュータなどのようなモバイルデバイスにおいて実行することである。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
よって、たとえばスマートフォンまたはタブレットコンピュータなどのような低パフォーマンスのコンピューティングデバイスによりほぼリアルタイムのレスポンス特性で実施可能である高精度のルート計算のための、情報損失のないルート計算システムおよびルート計算方法を提供する必要がある。
【課題を解決するための手段】
【０００７】
このような技術的問題点は、出発地から目的地まで移動体をナビゲートするための無衝突経路の決定を並列処理可能にするコンピュータで実装された方法と、対応するコンピュータプログラム製品と、独立請求項に記載された上述の方法を実施するためにコンピュータプログラムを実行するように構成されたコンピュータシステムと、によって解決される。以下の記載では、水域移動体のナビゲーションの例を用いて、本発明の実施形態を説明する。当業者であれば本開示の原理を、所定の高度帯内での空域移動体のナビゲート、地上のロボット移動体のナビゲート（たとえば芝刈り機ロボット）など、他の形式の移動体に容易に適合させることができる。
【０００８】
コンピュータで実装された方法によれば、出発地から目的地まで水域移動体をナビゲートするための無衝突経路の決定について、並列処理が可能となるようにデータ構造（無衝突経路区間を含むグラフ）を構築する手法が開示される。これと同時に、無衝突ルートのオプションを提供するグラフのサイズが、上述の従来技術のアプローチよりも格段に小さくなる。本開示のアプローチによれば、たとえばスマートフォンまたはタブレットコンピュータなどのような低パフォーマンスコンピューティングデバイス上で、この方法を実行することができる。
【０００９】
出発地と、目的地と、１つまたは複数の潜在的な衝突物体の１つまたは複数のポリゴン表現を受け取ることから、この方法はスタートする。「潜在的な衝突物体」とは、移動体がそのような潜在的な衝突物体を超えて、この物体と衝突することなく所定の位置に到達しなければならないときに、移動体の逸脱を大きくする何らかの物体のことである。出発地は、ナビゲーションスタート時に移動体が最初に位置している場所に対応する。目的地は、移動体が到達すべき最終位置である。ポリゴン表現は、潜在的な衝突物体の形状を表す。衝突物体を静的なものとしてもよいし（たとえば静的な衝突物体を表すポリゴンは、島または陸地の沿岸領域をモデリングすることができる）、あるいは衝突物体を動的なものとしてもよく、この場合には衝突物体の位置および／または形状が、時間の経過につれて変化する可能性がある。動的な衝突物体の例は、他の水域移動体、海流または気象現象（たとえばハリケーン、濃霧エリア等）である。出発地／目的地を、ヒューマンユーザインタフェースを介してユーザから受け取ってもよいし、またはマシン−マシンインタフェースを介して他のコンピュータシステムから受け取ってもよい。
【００１０】
上述のグラフデータ構造を構築するために、初期化構成要素によって移動体の少なくとも１つの表現が初期化される。初期化後、少なくとも１つの移動体表現には、受け取った出発地がその移動体の現在地として含まれ、受け取った目的地を有する目的地リストがさらに含まれている。
【００１１】
移動体表現は、以下の説明中ではパーティクルとも呼ばれる。換言すれば、初期化後、少なくとも１つの移動体表現は、移動体の最終的な行先である目的地を伴う出発地に存在する。ここで述べておくと、用語「出発地」、「現在地」および「目的地」は、実世界の位置に対応するものであるが、本明細書ではかかる実世界の位置の表現をグラフ内で記述したものとして用いられる。用語「衝突物体」も、実世界の物体または現象に関連する。衝突物体の表現はポリゴンである。かかるポリゴンの特定のノードは、上述のグラフのパーツになることができる。ただし用語「衝突物体」は、上述のポリゴン表現に関連して用いられることもある。用語「衝突物体」が個々の表現の意味で用いられるときには、そのことは当業者には文脈から明らかである。たとえば、「衝突物体が第１の位置と第２の位置との間に位置している」というフレーズは、実世界では、個々の実際の位置の間に実際の衝突物体が存在している、ということを意味する。同時にここで理解されたいのは、ルート計算システムの場合には、衝突物体のポリゴン表現が第１の位置と第２の位置を表す個々のノードの間にある、ということである。
【００１２】
グラフジェネレータは、移動体の現在地と、この移動体に関連づけられた目的地リスト中の最新目的地と、の間の直結線上に衝突物体が位置しているか否か、を判定することによって、無衝突経路区間のグラフ（グラフデータ構造）を繰り返し構築する。本明細書では「現在地」または「現在目的地」とは、グラフの反復構築における目下の計算反復サイクル中の個々の位置表現のことを指す。グラフの反復構築は、移動体表現各々について、現在目的地が受け取った目的地と等しくなるまで（すなわち移動体表現がその最終的な行先に到達するまで）、または他の終了条件が満たされるまで、以下のステップを反復する。
【００１３】
移動体の現在地と最新目的地との間の直結線が無衝突状態であれば、対応する経路区間（すなわちこの直結線）がグラフのエッジとして保存される。たとえば初期化直後には、受け取った１つまたは複数の目的地だけしか目的地リスト内に含まれていない。つまり初回の反復中、最新目的地は目的地と一致している。次いでグラフジェネレータは次の反復のために、最新目的地を新たな現在地としてセット（選択）し、この最新目的地を目的地リストから取り除く。
【００１４】
そうでなければ（すなわち直結線が無衝突状態でなければ）、グラフジェネレータは到達可能なノードを識別する。それらのノードは、現在地と目的地との間の直結線と交差する１つまたは複数のポリゴン表現上で、この直結線から左または右に逸脱した角度に対し相対的な局所的極値に基づき規定される。たとえば到達可能な１つのノードは、それが識別された局所的極値そのものに対応するならば、または局所的極値から導出可能であるならば、識別された局所的極値のノードに基づくものである。たとえば到達可能なノードを、局所的極値付近の位置として規定してもよい。たとえば、到達可能なノードが十分な水深の水域に関連づけられていることが保証されるよう、局所的極値に安全距離を付加することができる。到達可能なノードを、個々の衝突物体の少なくとも一部によって隠されていない局所的極値の近くにある任意のノードとすることができる。当業者であれば、識別された局所的極値に基づき到達可能なノードを計算するために、他のアルゴリズムを用いることができる。かかるアルゴリズムには、特定の到達可能なノードがナビゲート可能なエリア内にあることをチェックする、ということを含めることができる。さらにここで述べておくと、到達可能なノードが必ずしも無衝突経路区間を意味するとはかぎらない。むしろ、現在出発地と現在目的地との間の直結線上にはない新たな衝突物体が、到達可能なノードに至る進路上の障害物を表す場合もある。
【００１５】
次の反復のために、グラフジェネレータは識別されたノード各々について、（存続中の）表現から移動体の新たな表現を生成する。この新たな表現は、上述の表現と同じ現在地を有しており、かつこの前述の表現の目的地リストの全要素と新たな最新目的地として識別されたノードとを含む１つの目的地リストを有している。換言すれば、グラフジェネレータが上述の到達可能なノードを識別すると、グラフジェネレータのレプリケータは、移動体表現の複数のクローンコピーを生成し、この場合、クローンコピー各々は、識別された個々のノードへの移動に特化されたものである。言い換えれば各クローンは、到達可能な個々のノードまでの動きを計算するように構成されている。よって、識別されたノードは、個々のクローンコピーに関する次の目的地を表すために、クローンコピーの目的地リストに追加される。たとえば目的地リストを、ラストインファーストアウト型のキューとして実装することができる。
【００１６】
当初の移動体表現および／またはその移動体表現の１つまたは複数のクローンコピーが、受け取った（最終）目的地に到達するまで、上述のif-elseオペレーションが繰り返し実施されるときに、ジェネレータは区間ごとに１つのグラフを構築する。このグラフは複数の無衝突区間から成り、これによって潜在的な実世界の衝突物体との何らかの実世界の衝突を回避しながら、受け取った出発地から受け取った目的地まで実世界の移動体が進むための複数のオプションが提供される。換言すれば、グラフジェネレータは、反復プロセス中に決定された無衝突経路区間に基づき、移動体のために無衝突経路を構築する。
【００１７】
次いで、経路セレクタに対し無衝突経路が供給される。経路セレクタをヒューマンユーザとすることができ、この場合、ユーザは、供給された無衝突経路オプションから１つの特定の経路を選択する。経路セレクタはコンピュータシステムであってもよく、この場合、コンピュータシステムは、予め定義された優先度（たとえば最短ルート、最速ルート、最小燃料消費ルート等）に基づき、１つの特定の無衝突経路を選択する。
【００１８】
１つの実施形態によれば、経路セレクタはさらに後処理モジュールを含むことができる。この後処理モジュールは構築された無衝突経路に対し、以下の後処理アクティビティのうち１つまたは複数のアクティビティを適用することができる。
【００１９】
第１の後処理アクティビティにおいて望ましいものであるとすることができるのは、移動体が急激な動きや突然のコース変更を回避できるよう、非凸特性を取り除くためにたとえばスプラインを用いて、経路を平滑化することである。いくつかの具体例を挙げると、物理的な制約たとえば最大操舵角または慣性などによって、かかる後処理ステップが必要とされることさえある。
【００２０】
第２の後処理アクティビティによれば、１つの経路における１つまたは複数の経路区間に沿って、１つまたは複数の中間地点を経路に追加することができる。たとえば水域移動体のために、（硫黄）排出規制水域（（Ｓ）ＥＣＡゾーン）に対する入口および出口のポイントを追加することができる。他の例は、許容可能であるが厳しい気象条件を伴うエリアに対する入口および出口のポイントを追加することであり、これにより経路選択ステップにおいてこの情報を提供することができる。
【００２１】
第３の後処理アクティビティによれば、移動体が前の中間地点から次の中間地点までまっすぐに進むことができると判定されたならば、１つの経路から１つまたは複数の中間地点を取り除くことができる。これによってたとえば、経路の全長を低減することができ、このことは目標が最短ルートを探すことである場合に、望ましいものとすることができる。
【００２２】
グラフの反復構築は、移動体表現の各クローンが他の移動体表現とはまったく無関係に無衝突経路区間を見つけることができるように、設計されている。これにより（たとえば適切なマルチプロセッサまたはマルチコアコンピューティングデバイスを用いて）並列プロセッサが最大限に使用されるようにするために、グラフ構築を高度に並列処理できるようになる。反復のたびに、新たにクローニングされた移動体表現を、無衝突経路区間の計算のために個々のプロセッサユニットに割り当てることができる。経路分岐数によっては（これは衝突物体の複雑さと個数に左右される）、１つの反復から次の反復まで移動体表現の個数の増加が相当なものになる可能性がある（たとえば指数関数的）。ここで提案するグラフデータ構造生成プロセスによれば、要求に応じて（クローンの個数に応じて）付加的な並列計算リソースを割り当てることができ、たとえ著しく複雑な衝突物体状況のケースであっても、ほぼリアルタイムのルート計算を保証することができる。さらに当業者は、プロセッサまたはコアの個数に制約があるデバイスを、使用可能なプロセッサ／コアが所要の計算を高度な並列処理で実施するために最適化されるように、各プロセッサ／コアに対する作業負荷のバランスをとることによって、取り扱うことができる。これと同時に、ここで提案するグラフデータ構造生成プロセスによれば、既述の従来技術の解決策と比べると、生成されたグラフにより必要とされる作業（メイン）メモリのサイズが格段に低減される。本発明により提案されるグラフと比べると、従来技術で用いられていたグラフはそれよりも著しく多くの情報量を記憶しなければならず、それによって多くのメモリを消費することになる。メインメモリに対する要求が低いこと、および多くのスマートフォンまたはタブレットコンピュータにおいてマルチコアプロセッサが使用されていることから、高度に複雑な衝突のシナリオに対して様々な無衝突ルートオプションを経路セレクタ（たとえばデバイスのユーザ）へ供給するために、かかる標準デバイスにおいて許容可能なレスポンスタイムでルート計算を実施できるようになる。本明細書で用いられる「許容可能なレスポンスタイム」とは、計算された１つまたは複数の無衝突ルートの１つの経路区間に対応する実世界のルートを辿るために必要とされる時間よりも少ない時間しかルート計算のためにかからない、というレスポンスタイムである。いくつかのシナリオにおいては、ほぼリアルタイムのレスポンスが要求される可能性がある（たとえばドローンが、１つの衝突コース上で移動中の他の空域移動体との衝突を回避しなければならない場合など）。ここで提供されるルート計算システムおよびルート計算方法によれば、複雑なルート計算シナリオであっても、１秒よりも短い時間内でルート計算またはルート調整が可能である。
【００２３】
１つの実施形態によれば、ルート計算システムのインタフェースを、選択された無衝突経路を経路セレクタから受け取るように構成することができる。次いでルート計算システムは、選択された経路に従い移動体の移動方向を調整するために、選択された無衝突経路によって移動体の制御システムを更新することができる。この実施形態によれば、実世界の移動体と実世界の１つまたは複数の衝突物体との衝突が自動的に回避されるように、選択された経路を実世界の移動体のナビゲーション制御手段に対する入力として用いることができる。
【００２４】
１つの実施形態によれば、１つの特定の潜在的な衝突物体における１つの特定のポリゴン表現が、特定の潜在的な衝突物体の現在ポジションを表すセンサデータに関連づけられている。この実施形態によれば、レーダセンサデータ、衛星画像、または移動する物体または現象およびそれらの境界の位置特定に適した他のセンサなどのようなセンサのデータを介して、動的な衝突物体を識別することができる。
【００２５】
１つの実施形態によれば、直結線が無衝突状態であるケースにおいて、目的地リストが空であれば、グラフジェネレータは個々の移動体の表現を削除することができる。このケースでは、移動体表現はもはや何の目的ももたず、移動体表現によって消費されるメモリを解放することができる。
【００２６】
１つの実施形態によれば、局所的極値の識別を最大限に並列処理で行うことによって、並列処理のレベルをさらに向上させることができる。この実施形態によれば、グラフコンストラクタの極値識別器は、到達可能なノードを以下のようにして識別する。すなわち、対応する衝突物体を迂回するために左へ逸脱した角度を有するポリゴン区間を含む１つの特定のポリゴン表現の第１群のポリゴン区間を決定し、かつ対応する衝突物体を迂回するために右へ逸脱した角度を有するポリゴン区間を含む上記の特定のポリゴン表現の第２群のポリゴン区間を決定することによって、到達可能なノードを識別する。次いで、右へ逸脱した角度を有する決定されたポリゴン区間各々について、極値識別器は、逸脱角度の値が大きい方のノードを別個にマークし、かつ左へ逸脱した角度を有する決定されたポリゴン区間各々について、極値識別器は、逸脱角度の値が大きい方のノードを別個にマークする。ここで述べておくと、いずれの順序でポリゴン区間をマークするのかはまったく問題にはならないので、ポリゴンノードのマーキングを最大限に並列処理で行うことができる。ここで重要なのは、すべてのポリゴン区間に対しマーキングが適用される、ということだけである。つまり、たとえばグラフィックプロセッサユニット（ＧＰＵ）が使用されるなどして、マークすべきポリゴン区間の個数に対応する多数の並列プロセッサが提供される、という極端な（起こりそうにない）ケースであるならば、マーキングを単一の反復ステップで実施できることになる。標準的なモバイルコンピューティングデバイスの標準的なマルチコアプロセッサが使用されるケースであれば、最適な負荷バランスを達成するために、種々のプロセッサにマーキングを分配することができる。かかる負荷バランシング手法は、並列計算技術の当業者に知られている。
【００２７】
並列処理によるマーキングステップの完了後、極値識別器は、左または右への特定のポリゴン表現の局所的極値として２つのマークが付されたノードを識別する。１つまたは複数のポリゴン表現の１つまたは複数の局所的極値によって、現在地からは（すなわちグラフ構築の個々の反復中、現在地にいる移動体表現からは）隠されている１つの特定のポリゴン表現の局所的極値をフィルタリング除去することによって、到達可能なノードが最終的に取得される。たとえば、ある１つの移動体表現から１つの衝突物体を見た場合、識別された局所的極値のノードは、その移動体に面した衝突物体の前側に位置している可能性がある。他の局所的極値のノードは、その衝突物体の後側に位置している可能性があり、したがって表現されている移動体にとっては到達不可能なノードである。
【００２８】
次いで極値識別器は、識別された到達可能な局所的極値のノードに基づき、右および左へ逸脱した角度の値が最も大きい到達可能なノードを、特定のポリゴン表現の大域的極値として識別することができる。この大域的極値の識別は、（並列処理で計算された）識別された到達可能なノードだけを処理すればよいことから、計算に関して著しく効率的である。これは一般的に、１つの衝突物体のポリゴン表現のノード総数に比べると、著しく僅かな個数である。ところが従来技術の解決策によれば、衝突物体のすべてのポリゴン区間を分析することによって、大域的極値を計算しなければならない。つまり複数のプロセッサまたはコアによりポリゴンノードを独立して並列処理でマーキングすることによって、極値決定のベースとしてポリゴンノードの総数のほんの一部しか含まないノードデータ構造が生成され、したがって移動体表現の現在地に関連して１つのポリゴン表現の大域的極値を決定するために、効率的なフィルタが提供される。
【００２９】
パフォーマンスベースフィルタによる実施形態を用いることによって、このルート計算方法をさらに加速させることができる。１つの実施形態によれば、パフォーマンスベースフィルタは、中間目的地の許容性をチェックすることによって、局所的極値をフィルタリングするように構成されている。たとえば、ある１つのパーティクルは、到達可能なノードを選択するときに下された以前の判定（たとえば衝突物体を避けるために右旋回）を記録に残すことができる。現在地から現在目的地までの直結線をチェックしたときに衝突物体が識別され、そこにおいて先行のステップでそのパーティクルがすでに判定を下していたならば、その情報を用いて、先行の判定を準最適なものにするであろう局所的極値を却下することができる。たとえば、１つの衝突物体を避けるために右旋回する判定を下したパーティクルであれば、目的が最短ルートを見つけることならば、左旋回を意味することになる局所的極値を後のステップで破棄した方がよい。なぜならば、この特定の障害物を避けるために左旋回する判定を下したクローンが存在しなければならず、その個々のクローン（またはその後継／後続のクローン）が、少なくとも同じ程度に短いルートを探し出さなければならないからである。換言すれば、パフォーマンスベースフィルタは、グラフプルーニング方式として動作し、たとえばこれは、準最適であると判定され得る経路の探索を中止することにより行われ、または個々の優先度（たとえば時間または距離の最短化など）に関して明らかに最適な経路の一部ではない区間を取り除く（それによりメモリ消費を低減する）ことにより行われる。破棄された局所的極値のノードは、許容できない中間目的地として分類され、したがってルートオプションのためには考慮されなくなる。
【００３０】
１つの実施形態によれば、パフォーマンスベースフィルタは、大域的極値ではない局所的極値をフィルタリング除去するように構成されている。たとえば、目的が最短ルートを見つけることであるならば、個々の方向の大域的極値以外の左または右へ向かう局所的極値を選択するパーティクルは、大域的極値へまっすぐに進むことを選択したパーティクルとせいぜい同じ程度のパフォーマンスである。なぜならば、そのようなパーティクルは、障害物を迂回するために結局は大域的極値へ向かわなくてはならなくなるからである。
【００３１】
１つの実施形態によれば、パフォーマンスベースフィルタは、選択された優先度（たとえば距離の最短化、時間の最短化など）に関して、ある１つの特定の移動体表現が競合する移動体表現よりもパフォーマンスが悪いと判定され得るならば、その特定の移動体表現を削除するように構成されている。たとえば、目的が最短ルート／経路を見つけることであり、ある特定の表現がある特定の位置（以前に訪れた位置または目的地リストによる複数の位置のうち１つの位置）に到達するまでに、競合する移動体表現よりも長い距離を必要とするならば、競合する移動体表現が優勢であると判定することができ、その特定の表現を削除することができる。
【００３２】
当業者であれば、さらに別のパフォーマンスベースフィルタを提供することができ、たとえばパーティクルが消費するまたは必要とする最小化すべき量または測定量に対する下限または上限を、パーティクルが決定するようなフィルタを提供することができる。この実施例によれば、パーティクルは継続的にそれらの下限および上限を監視し、競合するパーティクルの下限および上限と比較する。１つの特定のパーティクルが、その特定のパーティクルの下限が他のパーティクルの上限よりも高いと判定したならば、その特定のパーティクルを削除して、対応する移動体表現により占有されるメモリを解放することができ、使用可能な計算キャパシティをいっそう良好に使用できるようになる。１つのパフォーマンスベースフィルタを、１つまたは複数の他のパフォーマンスベースフィルタと組み合わせてもよい。
【００３３】
１つの実施形態によれば、既述の方法の機能を実行可能なコンピュータシステムが提供される。このコンピュータシステムによってグラフデータ構造が生成され、この生成は、たとえばスマートフォンまたはタブレットコンピュータなどのようなモバイルデバイスで使用できる程度の比較的少ないメインメモリ容量を備えたハードウェアコンフィギュレーションにおいて、マルチプロセッサまたはマルチコアの能力の利点を最大限に使うことができるようにして行われる。したがってこのシステムは、個々のマップデータの詳細レベルに応じて、ＧＢのオーダまたはそれどころか数１００ＭＢというオーダのメインメモリの制約があるデバイス上で並列処理により実現されたほぼリアルタイムのレスポンス動作で、出発地から目的まで移動体をナビゲートするための無衝突経路を決定するように、構成されている。
【００３４】
１つの実施形態によれば、以下のようなコンピュータプログラム製品が提供される。すなわちこのコンピュータプログラム製品は、コンピュータシステムのメインメモリにロードされて、このコンピュータシステムの少なくとも１つのプロセッサによって実行されると、これまで開示してきたコンピュータで実装される方法を実施する。
【００３５】
添付の特許請求の範囲に詳しく記載された要素および組み合わせによれば、本発明のさらに別の態様が実現され達成される。なお、前述の一般的な説明と以下の詳細な説明の双方は共に、説明のために具体例として挙げたものにすぎず、ここで述べる本発明の範囲を限定するものではないことを理解されたい。
【図面の簡単な説明】
【００３６】
【図１】出発地から目的地まで移動体をナビゲートする無衝突経路を決定するための、本発明の１つの実施形態による並列処理可能なコンピュータシステムを示す概略図である。
【図２Ａ】コンピュータシステムの個々の実施形態により実行可能である、コンピュータで実装された方法を示す概略フローチャートである。
【図２Ｂ】コンピュータシステムの個々の実施形態により実行可能である、コンピュータで実装された方法を示す概略フローチャートである。
【図３】出発地から目的地までの複数の無衝突経路区間を含む例示的なグラフである。
【図４】上述の例示的なグラフの生成について示すフローチャートである。
【図５】衝突物体の局所的極値を識別するための、コンピュータで実装された並列処理可能な方法を示す概略フローチャートである。
【図６】並列処理による局所的極値の決定について、衝突物体のポリゴン表現の一例を挙げて示す図である。
【図７】ここで説明する技術によって使用可能な汎用コンピューティングデバイスおよび汎用モバイルコンピューティングデバイスの例を示す図である。
【発明を実施するための形態】
【００３７】
図１には、出発地から目的地まで移動体をナビゲートする無衝突経路を決定するための、本発明の１つの実施形態による並列処理可能なコンピュータシステム１００の概略図が示されている。図１は、図２Ａおよび図２Ｂに描かれた概略フローチャートの内容に関連して示されている。これらの概略フローチャートには、コンピュータシステム１００の個々の実施形態により実行可能である、コンピュータで実装された方法２００，１０００が示されている。よって、以下の説明では、図１、図２Ａおよび図２Ｂに記載された参照符号が用いられる。
【００３８】
図１のコンピュータシステム１００は、出発地から目的地まで移動体をナビゲートするための無衝突経路を、並列処理により決定するように構成されている。システム１００は、ステップ２１０，１１００における出発地および目的地のデータ１０の受け取り、および１つまたは複数の潜在的な衝突物体の１つまたは複数のポリゴン表現２０の受け取りのために、インタフェース構成要素１１０を有している。位置データの受け取りおよびポリゴン表現の受け取りは、必ずしも同時に行わなくてもよく、様々なデータソースからシーケンシャルに行ってもよい。出発地／目的地を、マシン−マシンインタフェースを介してコンピュータシステムにより供給することができ、またはそれらをコンピュータシステム１００のヒューマンユーザによって供給することができ、このケースであればインタフェース１１０には、かかるデータをユーザが入力できるようにする適切なヒューマン−マシンインタフェース（たとえばグラフィックユーザインタフェースまたはオーディオインタフェース）が含まれている。
【００３９】
システム１００の初期化構成要素１２０により、ステップ２２０において移動体表現が初期化される。この表現には、受け取った出発地ＳＬが現在地ＣＬとして含まれ、受け取った目的地ＴＬを有する目的地リストＬＯＴがさらに含まれている。換言すれば、初期化構成要素１２０はステップ１１１０において、現在地ＣＬとしてＳＬをセットし、目的地リストＬＯＴ＝｛ＴＬ｝にＴＬを加える。移動体の初期化された表現（パーティクル）を、集合Ｓ：＝｛ＣＬ，ＣＴ，ＬＯＴ｝とみなすことができる。これによれば、ＬＯＴにおける目的地リストに最後に加えられた目的地（つまり「ラストイン」）は、ここでは「最新目的地」と呼ばれる。以下の説明では、ＬＯＴがラストインファーストアウト型のキューとして実装されるものとする。当業者であれば、この代わりに他のキュー構造を採用することができる。
【００４０】
次いでグラフジェネレータ１３０はステップ２３０において、無衝突経路区間のグラフを（たとえば個々の経路区間をつなぐことによって）繰り返し構築する。この構築は、個々の移動体表現が受け取った目的地に到達しないかぎり、移動体表現各々のために極値識別器モジュール１３１とレプリケータモジュール１３２とを繰り返し呼び出すことによって行われる。ステップ２３０の「繰り返し構築する」とは本明細書によれば、受け取った目的地までグラフを通って移動体表現を仮想的に移動させるために、同じ構築ステップを繰り返し実行する、ということであり、この場合、反復は各々、新たな入力パラメータセットに基づき計算され、この新たな入力パラメータセットは、少なくとも部分的に先行の反復ステップの結果から生じる。この反復を、終了条件に合致すると反復が停止されるループ構造として実装することができる。ある１つの特定の移動体表現に関して、反復による構築に対する終了条件に合致するのは、その特定の移動体表現が受け取った目的地ＴＬに到達したときである。
【００４１】
ある特定の移動体表現に対する１つの反復ステップのうち最初のサブステップにおいて、グラフジェネレータはステップ１２００において、その特定の移動体表現に関する現在目的地ＣＴとして、個々のＬＯＴの最初の要素（最も新たに加えられた目的地）をセットし、この移動体表現の現在地ＣＬから現在目的地ＣＴまでの直結線が無衝突状態であるか否か、についてチェックする。換言すれば、グラフジェネレータはステップ１３００において、現在地と目的地リスト中の最新目的地とを直結した線上に衝突物体（すなわち障害物）が位置しているか否か、を判定する。
【００４２】
直結線が無衝突状態であるならば（図２Ｂのステップ１３００のイエスを参照）、グラフジェネレータは、（構築すべき）グラフのエッジとして対応する経路区間を保存する。さらに次の反復のために、最新目的地ＣＴがステップ１４００において、この特定の移動体表現の新たな現在地ＣＬ（新たな区間の出発地）としてセットされ、この最新目的地が目的地リストＬＯＴから削除される。このケースでは、ＬＯＴ内にさらに別の目的地が存在しており（すなわちステップ１５００の「ＬＯＴは空ではない／ノー」）、このプロセスはＬＯＴが最終的に空になるまで繰り返され、最終的に空になった結果、ステップ１６００においてグラフ中に無衝突経路が構築され識別される。目的地リストが空であれば、システム１００のいかなる処理またはメモリリソースもそれ以降はブロックすることがないよう、グラフジェネレータは個々の移動体の表現を削除することができる。
【００４３】
直結線が無衝突状態でなければ（図２Ｂのステップ１３００／ノー）、グラフジェネレータの極値識別器１３１はステップ１７００において、直結線と交差する１つまたは複数のポリゴン表現上の到達可能な複数のノードを識別する。この場合、識別されるノードは、現在地と最新目的地（現在目的地）との間の直結線から左または右へ逸脱した角度に対し相対的な局所的極値に基づく。換言すれば、極値識別器１３１は、個々の衝突物体との衝突を避けるために迂回しなければならないポリゴン表現の複数のノードから成る部分集合として、到達可能なノードを識別する。たとえば極値識別器は、特定の移動体表現のための中間目的地として、到達可能な複数のノードの中から大域的極値を識別することができる。また、識別された局所的／大域的極値付近の到達可能なノードを使用することもできる。たとえば、既述のように安全距離を実装することができる。さらに任意の水域ロケーションを、識別された個々の極値のノードから予め定められた距離内で到達可能なノードとして、用いることもできる。
【００４４】
グラフ構築を並列処理可能にするため、グラフジェネレータはレプリケータ１３２を有しており、ステップ１８００においてこのレプリケータ１３２によって、特定の移動体表現のために中間目的地が識別されるたびに、特定の移動体表現の複製（またはクローン）を作成することができる。複製作成後、特定の移動体表現の複数のコピーを使用することができ、それによってコピー各々（すなわち集合Ｓのうち１つのコピー）が、仮想的に中間目的地のうちの１つに向かって同時に並列して移動できるようになる。換言すれば、レプリケータ１３２はステップ１８００において次の反復のために、移動体表現から中間目的地各々について新たな表現を生成する。この新たな表現（クローニングされた集合Ｓ’）は、当初の表現と同じ位置から出発しているため、当初の表現と同じ現在地ＣＬを有している。さらに、新たな表現の目的地リストは、当初の表現の目的地リストの全要素を含んでおり、かつ最新目的地として１つの特定の中間目的地を含んでいる。この新たな最新目的地は、サブステップ１２００から再びスタートする次の反復ステップにおいて、新たな表現のための現在目的地ＣＴ’となる。換言すれば、中間目的地として識別された局所的極値は、ＬＩＦＯキューから最初の要素として再び取り出せるように、個々のＬＯＴキューの先頭にプッシュされる。次の反復段階は、ステップ１８００において生成された、移動体表現のすべてのクローンコピーに対して実施される。ここで述べておくと、用語「クローン」は、コピー間で１００％の同一性が存在する、という生物学的な意味では用いられない。そうではなく、当業者であれば理解できるように、種々のクローンコピーはそれらのＬＯＴに関して、それらがそれぞれ異なる最新目的地（つまり様々な中間目的地）を有する、という点で相違している。
【００４５】
オプションのフィルタステップ１７２０を用いて、衝突ルート計算のパフォーマンスをさらに改善することができる。パフォーマンスベースフィルタのうちいずれか１つのフィルタによって破棄される局所的極値のノードを、劣勢極値と称する。つまり、もっとよいルートを生じさせる少なくとも１つの別の局所的極値が存在する、ということである。ステップ１７２０において、かかる劣勢極値をフィルタリング除去することができ、その結果、それ以降のいかなる反復も考慮されないようになる。このようなフィルタリング機能によれば、見込みの少ないルートオプションにはそれ以上の計算ステップが課されないことから、ルート計算システムおよびルート計算方法の実行時間およびメモリ消費に関して、さらに改善がもたらされる。
【００４６】
グラフジェネレータ１３０はステップ２４０において、反復されたグラフ構築中に保存された無衝突経路区間に基づき、最終的に無衝突経路を構築する。たとえば、最終目的地ＴＬに到達した移動体表現によりステップ１６００において識別された無衝突経路区間の各シーケンスによって、１つの無衝突経路が規定される。ただし、必ずしもすべてのクローンコピーが、受け取った目的地ＴＬに到達するわけではない。図３および図４に示す実施例で開示するように、パフォーマンスベースフィルタ１３３を用いれば、移動体表現を再び削除することができる。この場合、パフォーマンスベースフィルタ１３３は、すでに他の移動体表現の方がよいルートを有すると判定されたことから、最終目的地に到達するまで個々の表現のために計算を実施する意味がない、と判断する。予め定められたパラメータ１５０（たとえば交通ルール、制約条件等）に依存して、異なるオプションフィルタ１３３を使用／適用してもよい。かかる移動体表現の削除によって、計算リソースがさらに節約される。換言すれば、ルート計算をさらにスピードアップするために、移動体表現の削除によって開放されたプロセッサまたはコアを、他の移動体表現に割り当てることができ、それによってルート計算システム１００の並列計算キャパシティをいっそう良好に使用できるようになる。
【００４７】
ステップ２５０において、経路セレクタ１４０に対し最終的に無衝突経路が供給される。経路セレクタを、コンピュータシステム１００またはこのシステム１００と通信接続されたリモートシステムにおける別の計算モジュールとすることができる。経路セレクタは、個々のパラメータ１５０（たとえば最短経路、最短時間、最低燃料消費等）により規定された予め定められた選択基準に従い、１つの特定の無衝突経路を選択する。また、経路セレクタをヒューマン−マシンインタフェースとして実装してもよく、この場合、システムのヒューマンユーザは、標準ユーザインタフェース技術（たとえばタッチスクリーン、マウスクリック等）を介して、与えられた複数の経路のうち１つの経路の手動選択を行うことができる。システム１００は、（実世界の）移動体制御システムのためのアップデータ１６０を含むことができ、またはこのアップデータ１６０と通信接続可能である。アップデータ１６０は、選択された１つの無衝突経路を経路セレクタ１４０から受け取ることができ、選択された経路に従い移動体の移動方向を調節するために、選択された無衝突経路により移動体の制御システムをステップ２６０において自動更新することができる。経路セレクタが技術システムであり人間でない実施形態の場合には、このようにして実世界の移動体に対し自律運転が可能となる。
【００４８】
図３は、出発地ＳＬから目的地ＴＬまでの複数の無衝突経路区間を含む例示的なグラフである。図３は、例示的なグラフ３００の生成について示す図４のフローチャートの内容に関連して描かれている。
【００４９】
グラフ３００は、１つの連続環境内の移動体のための出発地ＳＬから目的地ＴＬまでの無衝突経路を示している。本明細書で用いられる「連続環境」とは、道路網または鉄道網のナビゲーションの場合に用いられるようなグラフ状構造とは異なり、二次元ユークリッド平面または（球体におけるナビゲーションであれば）三次元ユークリッド空間などのような距離空間のことである。たとえば移動体を、出発地ＳＬから目的地ＴＬまでのナビゲーションを必要とする船舶（たとえばボート、船または水中移動体）とすることができる。ただしこの実施例の場合、衝突物体ＣＯ１およびＣＯ２が存在しており、これらはＳＬからＴＬまで直結線（破線）に沿って移動する移動体にとって障害物となっている。この実施例によればＣＯ１およびＣＯ２は、海または湖における障害物のポリゴン表現であって、実世界において移動体と何らかの衝突物体との衝突を回避する目的で、移動体はこれらの障害物を迂回しなければならない。衝突物体ＣＯ１，ＣＯ２は、島、砂州、氷山等を表すことができ、この実施例におけるポリゴン表現の境界は、水面下の衝突物体の周縁部を表すことができ、その場所では移動体が水底に接触せずに衝突物体を通過できる程度に十分な水深がある。
【００５０】
ポリゴン表現ＣＯ１，ＣＯ２を、不動位置にある静的衝突物体に相応するものとすることができ、グラフィック輪郭マップデータによって、たとえば衝突物体周囲の水深に関して個々の衝突物体の輪郭水平距離の詳細ジオロケーションを含むディジタル化海図などによって、このような衝突物体を提供することができる。静的衝突物体との衝突回避に加え、動的（すなわち移動中の）衝突物体との衝突も回避しなければならない。動的衝突物体の例として、他の移動体（船舶、船、ボート等）、気象現象（たとえば嵐、ハリケーンなど）または水域現象（たとえば強流、海震に起因する高波等）を挙げることができる。動的衝突物体に関するデータは典型的には、個々の現象の監視に用いられるセンサから受け取られる。たとえば他の移動体を、レーダ技術または位置特定システム（たとえばＧＰＳ等）を介して検出することができる。衛星画像を介して、気象現象を検出することができる。また、地震センサを介して、水域現象を検出することができる。検出されたこの種の現象の地理座標を特定し、関連する動的衝突物体の対応するポリゴン表現を提供することは、現在の技術水準である。たとえばレーダシステムは、ある特定の船舶の位置を検出することができる。船舶の名前／ＩＤを含む自動船舶識別装置（ＡＩＳ）の信号と組み合わせて、（利用可能な）データベースシステムから関連する船舶の形式を対応するポリゴン表現と共に取り出すことができる。図３の実施例によればポリゴン表現ＣＯ３は、船舶である衝突物体のこの種の水平方向投影に相応する。動的衝突物体のケースではポリゴン表現は、衝突物体の目下の境界に関してすでに安全距離を含むことができる。たとえば、ある船のポリゴン表現は、各方向でその船の実寸に１００ｍを加えることができ、またはその動きを考慮するために、延長、引き伸ばし、または他の操作を行うことができる。
【００５１】
上述のとおり目標は、潜在的な衝突物体ＣＯ１，ＣＯ２，ＣＯ３と衝突することなく、ＳＬからＴＬまで船舶をナビゲートすることである。最初にステップ４０１において、ルート計算システムは衝突回避のために、（船舶の現在地に対応させることができる）船舶の出発地ＳＬと、目的地ＴＬと、潜在的な衝突物体のポリゴン表現ＣＯ１，ＣＯ２，ＣＯ３とを受け取る。初期化ステップ４０２において、ルートシステムは最初の集合Ｓについて、現在地（出発地）ＣＳの変数を受け取った出発地ＳＬにより初期化し、現在目的地ＴＬを受け取った目的地ＴＬにより初期化する。さらにこの最初の集合Ｓについて目的地リストＬＯＴを生成し、受け取った目的地ＴＬをこの目的地リストに加える。本明細書で用いられる集合とは一般的には、特定の位置（グラフのノード）における移動体の表現に相応する。１つの集合はパーティクルと呼ばれることもある。
【００５２】
次のステップ４０３においてルートシステムは、直結線（破線）ＳＬ−ＴＬ上をＳＬからＴＬまで進む移動体を衝突物体が妨害しているか否か、を分析する。直結線を、１つの平面上の直線としてもよいし、１つの球体上の大円に沿った最短結線としてもよい。個々の潜在的な衝突物体の地理座標とそれらのポリゴン表現ＣＯ１，ＣＯ２，ＣＯ３とに基づき、システムはポリゴン表現ＣＯ１およびＣＯ２を、ＴＬに至る移動体進路上におけるその障害物として識別する。１つの実施形態によればこのチェックステップ４０３において、表現ＣＯ１を迂回するために１つの無衝突経路区間が見つけ出されたならば、このプロセス中に表現ＣＯ２を後で扱うことができようができまいが、表現ＣＯ１だけを識別し、さらに処理することができる。しかしながら有利であるといえるのは、最終目的地ＴＬに至る進路上のすべて障害物を、この最初のチェックステップ４０３において決定することである。なぜならば、それによっていっそう多くの情報が提供されるからであり、それらの情報を用いることによって、劣勢の中間目的地をそれらの探査前にフィルタリング除去することで、アルゴリズムのパフォーマンスを向上させることができるからである。
【００５３】
ポリゴン表現ＣＯ１，ＣＯ２が障害物として識別されたならば、ルートシステムはステップ４０４において、ポリゴン表現ＣＯ１，ＣＯ２におけるノード１〜５を識別する。この実施形態によればノード１〜５は、現在地ＣＬと現在目的地ＣＴとの間の直結線ＳＬ−ＴＬから左または右に逸脱した角度に対し相対的な局所的極値として、そのまま定義されている。グラフ３００には、識別された局所的極値が黒いポイント１〜５として描かれている。ＣＯ１に関して識別された局所的極値は、ポイント１（左への逸脱）およびポイント３（右への逸脱）である。ＣＯ２に関して識別された局所的極値は、ポイント２（左への逸脱）およびポイント４，５（右への逸脱）である。障害物ＣＯ１，ＣＯ２を考慮すると（ＣＯ３は直結線ＳＬ−ＴＬと交差していないので、まだ知られていない）、局所的極値１，３，４はＳＬから到達できるのに対し、識別された局所的極値２，５は（それぞれＣＯ１とＣＯ２とによって）隠されている。
【００５４】
複数のオプションルート経路上の移動体を、１つのパーティクル関連集合によって表すことができる。この段階においてルートシステムは、潜在的に無衝突の経路区間ＳＬ−１、ＳＬ−３、ＳＬ−４から成る３つのオプションを評価する必要がある、ということを把握している。これら３つのオプションをシーケンシャルに分析することができる。ただし、ここで提案するアプローチおよびグラフデータ構造３００によれば、マルチプロセッサプラットフォームを使用することによって、このアプローチを並列処理で実施することができる。並列処理を用いることによってこのシステムは、（多数のポリゴン区間を含む）極めて詳細なポリゴン表現、長距離または多数の衝突物体に対して、ルート計算およびルート調整をほぼリアルタイムで提供することができる。このことは、動的衝突物体が直前になって認識された状況（たとえば濃霧気象条件下で他の船が存在する状況、または竜巻が衝突コースをとったばかりであるが、移動体までまだ距離があるため竜巻を迂回できる状況）において、特に重要になる。かかる状況では衝突を回避するため、移動体の方向を即座に調整しなければならない可能性がある。到達可能な局所的極値が先行のステップで識別された回数だけ、移動体を表すパーティクルをクローニングすることによって、並列処理が達成される。この場合、各パーティクルは、識別された到達可能な局所的極値のうちの１つに至る仮定ルートをとる。
【００５５】
この実施例によれば、第１のパーティクルｐ１はポイント１へ進み、第２のパーティクルｐ２はポイント３へ進み、さらに第３のパーティクルｐ３はポイント４へ進む。パーティクル各々について、ステップ４０２〜４０４が繰り返し反復される。
【００５６】
ステップ４１０において、第１のパーティクルのために第２の集合（またはパーティクル）が生成され、これには現在地ＣＬとして当初の出発地ＳＬがまだ含まれている。ただし第２の集合はここでは新たな現在目的地ＣＴとして、到達可能な目的地のポイント１を有している。この中間目的地も、第２の集合の目的地リストに加えられる。簡単にする理由で、すべての新たな集合を図４のフローチャートにおいてＳと称する。当業者であれば理解できるように、クローニングされた各パーティクルはそれらに固有の集合を有する。第２および第３のパーティクルのために、ステップ４２０，４３０において第３および第４の集合がそれぞれ生成される。第３の集合は、現在地ＣＬとして当初の出発地ＳＬを含んでいる。ただし第３の集合はここでは新たな現在目的地ＣＴとして、到達可能な目的地のポイント３を有している。この中間目的地も、第３の集合の目的地リストに加えられる。第４の集合は、現在地ＣＬとして当初の出発地ＳＬを含んでいる。ただし第４の集合はここでは新たな現在目的地ＣＴとして、到達可能な目的地のポイント４を有している。この中間目的地も、第４の集合の目的地リストに加えられる。
【００５７】
第１のパーティクルについてルートシステムはステップ４１１において、直結線ＳＬ−１上で現在地ＣＬ＝ＳＬから現在目的地ＣＴ＝１まで進む移動体を衝突物体が妨害しているか否かをチェックする。この場合、いかなる衝突物体も見出されない。その結果、ＳＬ−１が、１つの無衝突経路区間としてグラフに保存され、ポイント１が新たな現在地ＣＬ＝１となり、受け取った当初の目的地が現在目的地ＣＴ＝ＴＬとなる。新たな中間目的地のポイント１（ここでは現在地）が、目的地リストから削除される。換言すれば、目的地リストはラストインファーストアウト型のキューに相応するものであり、このキューにおいて、最後に加えられた目的地に個々のパーティクルが到達すると、その目的地が最初に削除される。
【００５８】
ステップ４１２は、ＣＳ＝１，ＣＴ＝ＴＬという点で、ステップ４０３，４０４の反復に対応する。換言すれば、ルートシステムはステップ４１２において、この直結線１−ＴＬと交差する、つまり第１のパーティクルにより表される移動体に対する障害物を表す衝突物体を識別するために、この直結線をチェックする。ＣＯ２は、衝突物体のポリゴン表現として識別される。局所的極値２，４は、到達可能な局所的極値として識別される。１つの実施形態によれば、第１のパーティクルのクローニングにより２つの新たなパーティクルが生成されることになり、この場合、一方のパーティクルはポイント１からポイント２へと進み、他方のパーティクルはポイント１からポイント４へと進む。ただしこの実施例によれば、パフォーマンスフィルタが実装されており、以下でさらに詳しく説明するように、このパフォーマンスフィルタによって経路オプション１−４が却下される。したがって、ＳＬからポイント１を介してポイント４まで進むオプション（ＳＬ−１−４）は、最短距離を探索するならば、直結線ＳＬ−４よりも有利ではない。パフォーマンスフィルタの適用によって見込みの少ないルートオプションを却下することにより、以降に実施される反復において貴重な計算時間および計算リソースを節約することができる。その理由は、さもなければ各パーティクルによって、１つの完全な反復サイクルがトリガされてしまうからである。その結果、第１のパーティクルに対する集合が更新され、その際にポイント２が目的地リストに加えられ、ポイント２が新たな目的地としてもセットされる。
【００５９】
第１のパーティクルに対する次の反復中、ルートシステムはステップ４１３において、現在地ＣＬ＝１と現在目的地ＣＴ＝２との間の直結線１−２を、潜在的な衝突物体についてチェックする。新たな衝突物体が識別されなければ、無衝突経路区間１−２がグラフ３００に保存され、それに応じて第１のパーティクルの集合が更新され、その際にポイント２が現在地に割り当てられ（つまり移動体の第１のパーティクル表現はこのときポイント２に移動している）、目的地リストからポイント２が削除され、現在目的地が受け取った当初の目的地ＴＬと置き換えられる。目的地リストからポイント２が削除されても、すでに保存されたグラフ区間１−２には影響がない。このことは、移動体表現は目下の反復ステップにおいてすでにポイント２に到達していることから、このポイントが中間目的地から削除される、ということを意味するにすぎない。
【００６０】
第１のパーティクルに対する次の反復中、ルートシステムはステップ４１４において、潜在的な衝突物体について直結線２−ＴＬをチェックする。この場合、新たな衝突物体は識別されない。その結果、無衝突経路区間２−ＴＬがグラフ３００に保存される。第１のパーティクルは現在目的地ＴＬまで移動し、対応する集合が更新されて、その際に現在目的地ＣＬが受け取った当初の目的地ＴＬとなる。このことは、第１のパーティクルがその最終的な行先に到達して新たな反復は必要とされない、ということを表す。ルートシステムによって、第１の無衝突経路ＳＬ−１−２−ＴＬが決定されたのである。
【００６１】
次に、第２のパーティクルについて述べると、この第２のパーティクルのためにステップ４２０において第３の集合が生成されており、それに続くステップ４２１において、直結線ＳＬ−３上の潜在的な衝突物体についてチェックされ、実際にはその結果として、新たな衝突物体のポリゴン表現ＣＯ３が見出されることになり、これは到達可能であるとされていたポイント３に至る進路上の障害物である。つまり、第２のパーティクルに対するステップ４０３，４０４の第１の反復において、ルートシステムは、第２のパーティクルはＣＯ３と衝突せずにポイント３にダイレクトに進むことはできない、ということを見出し、ＣＯ３を迂回するためにＣＯ３の局所的極値としてポイント６およびポイント７を識別する。この段階では、到達可能な極値ポイントは双方共に有効なオプションであり（パフォーマンスベースフィルタによっても却下されず）、第２のパーティクルがクローニングされて２つのパーティクル２ａ，２ｂが生成される。次いで双方のパーティクル２ａ，２ｂについて、最終的に個々の現在地が最終目的地ＴＬに到達するまで、ステップ４０２〜４０４が反復される。これにはさらに、ある特定の現在地から複数のルートオプションが有効である場合に、個々のパーティクルをさらにクローニングするステップを含めることができる。例示的なフローチャートには、クローニング後初回の反復中、パーティクル２ａ，２ｂについてステップ４２２，４２４において２つの集合が生成されることが示されている。パーティクル２ａの場合、到達可能な局所的極値ポイント６が個々の目的地リストに加えられ、新たな現在目的地としてセットされる。パーティクル２ｂの場合、到達可能な局所的極値ポイント７が個々の目的地リストに加えられ、新たな現在目的地としてセットされる。双方の直結線ＳＬ−６およびＳＬ−７は無衝突経路区間であり、したがってグラフ３００に保存される。これに応じて、ステップ４２３および４２５において個々の集合が更新され、その際にパーティクル２ａに対する集合は、現在目的地のポイント３に到達するための現在地としてポイント６をセットするのに対し、パーティクル２ｂに対する集合は、現在目的地のポイント３に到達するための現在地としてポイント７をセットする。その結果、パーティクル２ａ，２ｂに対する新たな現在地がポイント６およびポイント７にそれぞれセットされ、中間目的地６，７が個々の目的地リストから削除される。次いで、直結線６−３および７−３上の衝突物体についてチェックを行った結果、両方の結線は共に無衝突経路区間であることが判明した。これらの経路区間を双方共にグラフ３００に保存してもよいけれども、この実施例の場合には、パフォーマンスベースフィルタのさらに別の例が示されている。各パーティクルは、これらのパーティクルがパラメータを計算できるようにする特性を有することができ、たとえば現在地に到達するまでに辿らなければならない無衝突経路区間の累積距離、または現在地に到達するまでにかかる時間などである。かかるパラメータを、個々のパーティクルによって発行することができ、これによって他のパーティクル（たとえばすべてのパーティクルまたは１群のパーティクル）に結果を通知することができ、それら他のパーティクルは、競合するパーティクルのパラメータを自身のパラメータと比較することができる。この実施例によれば、累積距離パラメータを比較できるようにするパフォーマンスベースフィルタが用いられる。反復によってパーティクル２ａ，２ｂの双方が共にポイント３に到達した後、パーティクル２ａは、パーティクル２ｂの累積距離ＳＬ−７−３が自身の距離ＳＬ−６−３よりも短い、ということを認識する。ルートシステムが経路距離を最適化するように構成されているならば、パーティクル２ａはパーティクル２ｂとは競合できないことを認識し、したがって存在しなくなる。その後、次の反復４２６はパーティクル２ｂに対してのみ実行されることになり、このときパーティクル２ｂは自身の現在地としてポイント３を有しており、受け取った当初の目的地ＴＬが新たな現在目的地となる。そこからはパーティクル２ｂは、パーティクル１がポイント１に到達した後でパーティクル１として相応の反復を実行する。ただしパーティクル２ｂは、ポイント４を介したルートオプションは考慮しない。なぜならばこの実施形態によればパーティクル２ｂは、位置ＳＬから位置ＴＬまでのステップをチェックしたとき、到達可能な局所的極値としてポイント４が識別されたことを、（たとえば以前に下したルーティング判定の判定履歴にアクセスするなどして）覚えているからである。よって、パーティクル２ｂは、最初にポイント３に到達するために迂回しなければならないことから、ポイント４に進むために位置ＳＬから送り出されたパーティクルとは競合できないことになる。このことは、ルートオプションＳＬ−１−４を却下するために第１のパーティクルにより用いられたのと同じロジックである。このことは、パーティクル３ｂ（パーティクル３の以下の説明を参照）がポイント７に到達し、ポイント４に到達するために衝突チェックを実行したときは、すでに知られている。つまりパーティクル２ｂはすでにこの段階において、経路区間３−４を含むルートオプションを介してパーティクル３ｂを打ち負かすことができない、ということをすでに知っている。したがってこの実施例によれば、相応のパフォーマンスベースフィルタによって、パーティクル２ｂが現在地のポイント３においてクローニングされるのを阻止し、その代わりにこのパーティクルはポイント２へ進む。この実施例によれば、パーティクル２ｂがポイント２に到達すると、パーティクル２ｂは、パーティクル１がポイント２に至る最短ルートを見つけたことを認識し、存在しなくなる。
【００６２】
次に、第３のパーティクルｐ３について述べると、この第３のパーティクルのためにステップ４３０において第４の集合が生成されており、それに続くステップ４３１において、直結線ＳＬ−４上の潜在的な衝突物体についてチェックされ、実際にはその結果として、新たな衝突物体のポリゴン表現ＣＯ３が見出されることになり、これは到達可能であるとされていたポイント４に至る進路上の障害物である。つまり、第３のパーティクルに対するステップ４０３，４０４の第１の反復において、ルートシステムは、第３のパーティクルはＣＯ３と衝突せずにポイント４にダイレクトに進むことはできない、ということを見出し、ＣＯ３を迂回するためにここでも局所的極値としてポイント６およびポイント７を識別する。この段階では、到達可能な極値ポイントは双方共に有効なオプションであり（パフォーマンスベースフィルタによって却下されず）、第３のパーティクルがクローニングされて２つのパーティクル３ａ，３ｂが生成される。次いで双方のパーティクル３ａ，３ｂについて、最終的に個々の現在地が最終目的地ＴＬに到達するまで、ステップ４０２〜４０４が反復される。これにはさらに、ある特定の現在地から複数のルートオプションが有効である場合に、個々のパーティクルをさらにクローニングするステップを含めることができる。例示的なフローチャートには、クローニング後最初の反復中、パーティクル３ａ，３ｂについてステップ４３２，４３４において２つの集合が生成されることが示されている。パーティクル３ａの場合、到達可能な局所的極値ポイント６が個々の目的地リストに加えられ、新たな現在目的地としてセットされる。パーティクル３ｂの場合、到達可能な局所的極値ポイント７が個々の目的地リストに加えられ、新たな現在目的地としてセットされる。直結線ＳＬ−６およびＳＬ−７は、双方共に無衝突経路区間であり、したがってグラフ３００に保存される。これに応じて、ステップ４３３および４３５において個々の集合が更新され、その際にパーティクル３ａに対する集合は、現在目的地のポイント４に到達するための現在地としてポイント６をセットするのに対し、パーティクル３ｂに対する集合は、現在目的地のポイント４に到達するための現在地としてポイント７をセットする。その結果、パーティクル３ａ，３ｂに対する新たな現在地がポイント６およびポイント７にそれぞれセットされ、中間目的地６，７が個々の目的地リストから削除される。次いで、直結線６−４および７−４上の衝突物体についてチェックを行った結果、両方の結線は共に無衝突経路区間であることが判明した。これらの経路区間を双方共にグラフ３００に保存してもよいけれども、この実施例ではパーティクル２，２ｂと同様に、最短距離パフォーマンスベースフィルタが、パーティクル３ａがさらに移動するのを阻止する。パーティクル３ａは、パーティクル３ｂのＳＬ−７−４がＳＬ−６−４よりも短いことを認識する。この理由から、パーティクル３ａは、中間目的地のポイント４に到達すると存在しなくなり、以降の反復はパーティクル３ｂに対してのみ実行される。
【００６３】
その後、パーティクル２ｂおよび３ｂに対して反復を完了させることができる。無衝突経路決定の最終結果には、無衝突経路オプションＳＬ−７−４−５−ＴＬ、ＳＬ−７−３−２−ＴＬ、およびＳＬ−１−２−ＴＬが含まれる。次いで、個々の選択基準に従い１つの特定の無衝突経路を選択するために、これらのオプションは経路セレクタへ供給される。
【００６４】
図５は、衝突物体の局所的極値を識別するための、コンピュータで実装された並列処理可能な方法６００を示す概略フローチャートである。この方法を、無衝突経路計算に関してこれまで開示してきた方法に関連して用いることができる。これまで開示してきた実施形態に依存することなく、この方法がスタンドアローンの方法として用いられる場合もあり、これはたとえば、現在地から現在目的地まで移動するために、移動体がただ１つの衝突物体だけしか迂回しなくてよい場合である。衝突物体の局所的極値識別のために、方法６００が独立した並列処理可能なコンピュータで実装された方法として実施される場合、この方法は入力パラメータとして、移動体表現の現在地と、（移動体が行きたい場所である）現在目的地と、迂回すべき衝突物体のポリゴン表現とを受け取る。
【００６５】
ここでは図５の方法を、図６の実施例に関連して説明することにする。図６には、並列処理による局所的極値の決定について、衝突物体の単純化されたポリゴン表現の一例を挙げて示されている。この実施例によれば、例示的な衝突物体のポリゴン表現が、ノードｎ１〜ｎ２１によって規定されている。ここで述べておくと、たとえば島または陸地の沿岸エリアなどのような実世界の衝突物体を表す典型的なポリゴンには、数１００万のノードが含まれる可能性がある。
【００６６】
ポイントＡ，Ｂにより規定される直線は、１つの特定の移動体表現の現在地Ａと（Ｂの方向における）現在目的地との間の直結線に対応している。この実施例の場合、直結線は無衝突経路区間ではなく、ポイントａ，ｂにおいて衝突物体表現ｎ１〜ｎ２１と交差している。この実施例の場合、現在地Ａは（環礁などのような）リング形状の衝突物体の中央にあり、これにはノードｎ５とｎ１６との間にしか出口がない。このため直結線を逆方向に仮想的に延ばすと（破線）、さらに交差個所ｄ，ｃが生じることになる。仮想的な延長により極値識別器はステップ６１０において、衝突物体を反時計回り（ｃｃｗ）で迂回するために左へ逸脱した角度φを有する（ノードｎ９〜ｎ２１により規定された）第１群のポリゴン区間を決定することができ、さらにステップ６１０において、対応する衝突物体を時計回り（ｃｗ）に迂回するために右へ逸脱した角度を有する（ノードｎ１〜ｎ８により規定された）第２群のポリゴン区間を決定することができる。
【００６７】
右に逸脱した角度を有する決定されたポリゴン区間各々について、極値識別器はステップ６２０において別個に、逸脱角度の値が大きい方のノードをマークする。たとえば、区間ｎ８−ｎ７であればｎ７がマークされる。区間ｎ６−ｎ５であればｎ５がマークされる。さらに区間ｎ５−ｎ４であればｎ５がマークされる、という具合である。衝突ポイント（図６の実施例のポイントａ，ｂ，ｃ，ｄを参照）を含むすべてのポリゴン区間については、両方のノードがマークされる。たとえば、ポリゴン区間ｎ２１−ｎ１は衝突ポイントａを含んでおり、ｎ２１とｎ１の両方がマークされる。このことは、衝突ポイントによってポリゴン区間を分離し、次いで衝突ポイントを含まない他のすべてのポリゴン区間の場合と同じマーキングロジックを適用する、ということと等価である。たとえばポリゴン区間ｎ２１−ｎ１であるならば、これをｎ２１−ａとａ−ｎ１とに分割することができ、次いでこれら２つのセグメントについて上述のマーキングロジックに従って、ｎ２１とｎ１の両方が極値識別器により１回だけマークされることになる。それぞれの区間は、マーキングに作用を及ぼすような相互依存性をもたないので、マーキングを完全に並列処理することができる。つまり、最終結果に何ら影響を及ぼすことなく、使用可能な処理ユニットのいずれか１つによって、任意の区間をいつでもマークすることができる。このことによって、並列処理デバイスの利点を最大限に活用することができる。同じマーキングプロセスは、左へ逸脱した角度についても適用される。つまり、左に逸脱した角度を有する決定されたポリゴン区間各々について、極値識別器は別個に、逸脱角度の値が大きい方のノードをマークする。
【００６８】
マーキングの結果は、受け取ったマークを有するポリゴン表現のすべてのノードを含むデータ構造である。すべてのノードは、マークを受け取っていないか、あるいは１つまたは２つのマークを受け取っている。ノードが２つの局所的極値の隣りにあるならば、そのノードはマークを受け取らない。たとえば図６の場合、ノードｎ４はマークを受け取らない。なぜならばその両隣りのｎ３およびｎ５は、ｎ４の逸脱角度よりも大きい逸脱角度値を有するからである。また、１つのノードには２つの近隣ノードしかないことから、１つのノードが２つよりも多くのマークを受け取ることもない。換言すれば、１つのノードは、正確に２つのポリゴン区間の一部であり、したがって１つのノードは、最大で２つのマークを受け取ることができる。さらに、局所的極値だけが正確に２つのマークを受け取り、すべての局所的極値は２つのマークを受け取る。
【００６９】
極値識別器はステップ６３０において、特定のポリゴン表現の局所的極値として、マーキングデータ構造において上述のように２つのマークが付されたノードを識別することができる。つまり、２つのポリゴン区間の一部であり、これら２つのポリゴン区間において他のノードよりも大きい逸脱値を有する各ノードが、かかる局所的極値を表すのである。
【００７０】
最終的にステップ６４０において極値識別器は、特定のポリゴン表現により現在地からは隠されている極値をフィルタリング除去することによって、到達可能なノードを取得する。この実施例によれば、このようなフィルタリング動作の結果、衝突物体を迂回するための潜在的な到達可能なノードとして、ノードｎ３，ｎ５およびｎ１６が与えられる。
【００７１】
ただし、局所的極値ｎ３に到達したときには、移動体は衝突物体を最終的に迂回するために、ｎ５までさらに移動しなければならない。移動体が衝突物体を迂回し、その衝突物体を超えて新たな目的地に到達できるようにする、到達可能なノードの部分集合を識別する目的で、極値識別器はステップ６５０において、右および左へ逸脱した角度の値が最も大きい到達可能なノード（ｎ５およびｎ１６と交差する矢印で表す）を、ノードのマーキングのために複数の処理ユニットを用いながら並列処理で、特定のポリゴン表現の大域的極値として識別することができる。このフィルタリング動作は、到達可能な複数のノード（到達可能な局所的極値）から成る低減された部分集合において実施され、その結果、従来技術の大域的極値決定手法と対比するとパフォーマンスが大幅に向上し、他方ではこれと同時に、メインメモリの消費が到達可能な複数の局所的極値のノードの部分集合に狭められる。その結果、無衝突経路区間として、経路区間Ａ−ｎ５とＡ−ｎ１６をグラフデータ構造に保存することができる。
【００７２】
図６には、φで表された方向での位置Ａとの間の直結線から左または右へ逸脱した角度に対し相対的なポリゴン表現における局所的極値に基づき、ノードを識別するプロセスが示されている。先行のステップにおいて、衝突物体がＡからＢに至る直結線上にあると識別されている。その後、この直結線の延長線と交差するポリゴン上のすべての衝突ポイントａ，ｂ，ｃ，ｄが識別される。Ｂに向かって進んだ場合、Ａから最初に到達する衝突ポイントはａである。ポリゴン区間を昇順に辿ると、次の衝突ポイントはｂであり、ａとｂとの間のすべてのポリゴン区間が、右旋回（時計回り角度ＣＷ）によって迂回しなければならないポリゴン区間群として昇順に識別される。他のポリゴン区間は、左旋回（反時計回り角度ＣＣＷ）によって迂回しなければならないポリゴン区間として識別される。第１群（ＣＷ）内のポリゴン区間各々について、逸脱角度が大きい方の個々のノードがマークされる。この実施例の場合、区間ｎ１−ｎ２であれば、ｎ２の方が大きい逸脱角度を有しており、このノードがマークされる。衝突ポイントを含むポリゴン区間（たとえばｎ２１−ｎ１）であれば、両方のノードがマークされる。１つの群におけるポリゴン区間各々について個々のノードをマーキングすることによって、ちょうど２つのマークが付されたノードとして局所的極値を見つけ出すことができる。この実施例によれば、ｎ３が局所的極値である。なぜならば、ｎ３はｎ２およびｎ４よりも大きい逸脱角度を有しており、したがって区間ｎ２−ｎ３とｎ３−ｎ４の双方について２回、マーキングされているからである。
この原理に従えば、ｎ５も局所的極値として識別される。ｎ３とｎ５とを比較すると、ｎ５の方が大きい逸脱角度を有しており、したがってｎ５が大域的極値となる。第２群（ＣＣＷ）についても同じ手順を辿って、ｎ１６を局所的極値として識別することができる。この群についてはただ１つの局所的極値しか存在しないので、その極値が自動的に大域的極値にもなる。マーキングプロセスのパフォーマンスをさらに向上させるため、第２群については、昇順に衝突ポイントｂからｃまでおよびｄからａまでのすべてのポリゴン区間は無視してかまわない。その理由は、衝突ポイントｃとｄの存在は、大域的極値が１８０゜よりも大きく左に逸脱した角度を有する、ということを意味するからである。
【００７３】
図７には、ここで説明する技術によって使用可能な汎用コンピューティングデバイス９００および汎用モバイルコンピューティングデバイス９５０に関する１つの実施例が示されている。コンピューティングデバイス９００は、ディジタルコンピュータの様々な形態を表すことを目的としており、たとえばラップトップ、デスクトップ、ワークステーション、パーソナルディジタルアシスタント、サーバ、ブレードサーバ、メインフレームおよび他の適切なコンピュータなどを表すことを目的としている。汎用コンピューティングデバイス９００を、図１のコンピュータシステム１００に相応するものとすることができる。コンピューティングデバイス９５０は、モバイルデバイスの様々な形態を表すことを目的としており、たとえばパーソナルディジタルアシスタント、携帯電話、スマートフォン、移動体（たとえば移動体４０１，４０２，４０３、図１参照）のドライビングアシスタンスシステムまたは搭載コンピュータ、および他の類似のコンピューティングデバイスなどを表すことを目的としている。たとえばコンピューティングデバイス９５０を、コンピューティングデバイス９００とのインタラクションのためのフロントエンドとして、ユーザが使用できる。本明細書で示す構成要素、それらの接続および関係、ならびにそれらの機能は、例示を意味するにすぎず、本願において説明する実現形態および／または本願の請求範囲の限定を意味するものではない。
【００７４】
コンピューティングデバイス９００には、プロセッサ９０２、メモリ９０４、ストレージデバイス９０６、メモリ９０４と接続するための高速インタフェース９０８、高速拡張ポート９１０、ならびに低速バス９１４およびストレージデバイス９０６と接続するための低速インタフェース９１２が含まれている。オプションとして、１つまたは複数のグラフィックスプロセッシングユニット（ＧＰＵ）を含むことができる。これらの構成要素９０２，９０４，９０６，９０８，９１０および９１２の各々は、種々のバスを用いて相互接続されており、１つの共通のマザーボード上に、または他の適切な手法で取り付け可能である。プロセッサ９０２は、コンピューティングデバイス９００内で実行するための命令を処理することができ、この命令には、高速インタフェース９０８と接続されたディスプレイ９１６など、外部の入／出力デバイスにおけるＧＵＩに対しグラフィック情報を表示するために、メモリ９０４またはストレージデバイス９０６に記憶された命令が含まれている。他の実装形態によれば、複数のプロセッサおよび／または複数のバスを、複数のメモリおよび複数のメモリタイプと共に、適切に用いることができる。また、複数のコンピューティングデバイス９００を接続することもでき、この場合、それらのコンピューティングデバイス各々が必要なオペレーションの一部分を（たとえばサーババンク、ブレードサーバ群、またはマルチプロセッサシステムとして）提供する。
【００７５】
メモリ９０４は、コンピューティングデバイス９００内部で情報を記憶する。１つの実装形態によれば、メモリ９０４は１つまたは複数の揮発性メモリユニットである。他の実装形態によれば、メモリ９０４は１つまたは複数の不揮発性ユニットである。メモリ９０４を、磁気ディスクまたは光ディスクなどのようなコンピュータ読み取り可能な他の媒体としてもよい。
【００７６】
ストレージデバイス９０６は、コンピューティングデバイス９００のために大容量記憶装置を提供することができる。１つの実装形態によれば、ストレージデバイス９０６をコンピュータ読み取り可能媒体とすることができ、またはストレージデバイス９０６はコンピュータ読み取り可能媒体を含むことができ、たとえばフロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、テープデバイス、フラッシュメモリまたは他の同様のソリッドステートメモリデバイス、あるいはストレージエリアネットワークまたは他の構成において複数のデバイスを含むデバイスアレイなどとすることができ、またはこれらを含むことができる。コンピュータプログラム製品を、情報担体として有形に具現化することができる。コンピュータプログラム製品は、その実行時に上述のような１つまたは複数の方法を実施する命令を含むこともできる。情報担体は、メモリ９０４、ストレージデバイス９０６、またはプロセッサ９０２上のメモリなどのように、コンピュータ読み取り可能または機械読み取り可能な媒体である。
【００７７】
高速コントローラ９０８は、コンピューティングデバイス９００のために多くの帯域幅を必要とするオペレーションを管理する一方、低速コントローラ９１２は、あまり帯域幅を必要としないオペレーションを管理する。機能のこのような割り当ては、例示的なものであるにすぎない。１つの実施形態によれば高速コントローラ９０８は、（たとえばグラフィックプロセッサまたはアクセラレータを介して）メモリ９０４、ディスプレイ９１６と接続されており、さらに高速拡張ポート９１０と接続されており、これによって種々の拡張カード（図示せず）を受け入れることができる。この実装形態によれば低速コントローラ９１２は、ストレージデバイス９０６および低速拡張ポート９１４と接続されている。低速拡張ポートは種々の通信ポート（たとえばＵＳＢ、ブルートゥース、イーサネット、ワイヤレスイーサネット）を含むことができ、このポートを１つまたは複数の入／出力デバイスと接続することができ、たとえばキーボード、ポインティングデバイス、スキャナと、あるいはたとえばネットワークアダプタを介してスイッチまたはルータなどのようなネットワーキングデバイスと、接続することができる。
【００７８】
コンピューティングデバイス９００を、図示されているものとは異なる多くの形態で実装することができる。たとえばコンピューティングデバイスを、標準サーバ９２０として、または１群のこの種のサーバにおいて多重に、実装することができる。さらにコンピューティングデバイスを、ラックサーバシステム９２４の一部として実装することもできる。これに加えコンピューティングデバイスをラップトップコンピュータ９２２などのようなパーソナルコンピュータとして実装してもよい。別の選択肢として、コンピューティングデバイス９００の構成要素を、デバイス９５０などのようなモバイルデバイス（図示せず）における他の構成要素と組み合わせてもよい。かかるデバイス各々は、１つまたは複数のコンピューティングデバイス９００，９５０を含むことができ、さらにシステム全体を、互いに通信し合う複数のコンピューティングデバイス９００，９５０から成るように構成することができる。
【００７９】
コンピューティングデバイス９５０には、他の構成要素もある中で、プロセッサ９５２、メモリ９６４、ディスプレイ９５４などのような入／出力デバイス、通信インタフェース９６６、トランシーバ９６８が含まれている。デバイス９５０には、付加的なストレージを提供するためにマイクロドライブまたは他のデバイスなどのようなストレージデバイスを設けることもできる。これらの構成要素９５０，９５２，９６４，９５４，９６６および９６８各々は、種々のバスを用いて相互接続されており、これらの構成要素のうちの複数を、１つの共通のマザーボード上に、または他の適切な手法で、取り付け可能である。
【００８０】
プロセッサ９５２は、メモリ９６４内に記憶された命令を含むコンピューティングデバイス９５０において、命令を実行することができる。プロセッサを、個別の複数のアナログおよびディジタルのプロセッサを含むチップから成るチップセットとして実装することができる。プロセッサはたとえば、ユーザインタフェースの制御、デバイス９５０により実行されるアプリケーション、デバイス９５０によるワイヤレス通信などのようなデバイス９５０の他の構成要素の調整機能を提供することができる。
【００８１】
プロセッサ９５２は、ディスプレイ９５４と接続されたコントロールインタフェース９５８およびディスプレイインタフェース９５６を介して、ユーザと通信を行うことができる。ディスプレイ９５４をたとえば、ＴＦＴ ＬＣＤ（Thin-Film-Transistor Liquid Crystal Display薄膜トランジスタ液晶ディスプレイ）またはＯＬＥＤ（Organic Light Emitting Diode有機発光ダイオード）ディスプレイ、または他の適切なディスプレイ技術のものとすることができる。ディスプレイインタフェース９５６は、ディスプレイ９５４を駆動してグラフィック情報および他の情報をユーザに呈示するための適切な回路を含むことができる。コントロールインタフェース９５８はユーザからコマンドを受信し、プロセッサ９５２へ供給するためにそれらを変換する。これに加え、デバイス９５０と他のデバイスとの近距離通信ができるよう、外部インタフェース９６２をプロセッサ９５２と連携させて設けることができる。外部インタフェース９６２によってたとえば、いくつかの実装形態では有線通信を、または他の実装形態では無線通信を提供することができ、さらに複数のインタフェースも用いることができる。
【００８２】
メモリ９６４は、コンピューティングデバイス９５０内部で情報を記憶する。メモリ９６４を、１つまたは複数のコンピュータ読み取り可能な媒体、１つまたは複数の揮発性メモリユニット、または１つまたは複数の不揮発性メモリユニットとすることができる。拡張メモリ９７４を設け、たとえばＳＩＭＭ（Single In Line Memory Moduleシングルラインメモリモジュール）カードインタフェースを含むことができる拡張インタフェース９７２を介して、デバイス９５０と接続することができる。かかる拡張メモリ９７４は、デバイス９５０のための拡張ストレージスペースを提供することができ、またはデバイス９５０のためのアプリケーションまたは他の情報を記憶することができる。特に拡張メモリ９７４は、上述のプロセスを実行するまたは補足する命令を含むことができ、さらにセキュア情報も含むことができる。したがってたとえば拡張メモリ９７４は、デバイス９５０のためのセキュリティモジュールとして動作し、デバイス９５０のセキュアな使用を許可する命令によってプログラミングすることができる。これに加え、ハッキング不可能な手法でＳＩＭＭカードに識別情報を配置するなど、ＳＩＭＭカードを介して付加的な情報と共にセキュアアプリケーションを提供することができる。
【００８３】
メモリはたとえば、以下で説明するようにフラッシュメモリおよび／またはＮＶＲＡＭメモリを含むことができる。１つの実装形態によればコンピュータプログラム製品は、情報担体として有形に具現化されている。このコンピュータプログラム製品は、その実行時に上述のような１つまたは複数の方法を実施する命令を含んでいる。情報担体は、メモリ９６４、拡張メモリ９７４またはプロセッサ９５２におけるメモリなどのようなコンピュータ読み取り可能または機械読み取り可能な媒体であり、これをたとえばトランシーバ９６８または拡張インタフェース９６２を介して受け取ることができる。
【００８４】
デバイス９５０は、通信インタフェース９６６を介してワイヤレス通信可能であり、このインタフェースは、必要に応じてディジタル信号処理回路を含むことができる。通信インタフェース９６６は、種々のモードまたはプロトコルでの通信を提供することができ、他にもいろいろある中で、たとえばＧＳＭボイスコール、ＳＭＳ，ＥＭＳまたはＭＭＳメッセージング、ＣＤＭＡ，ＴＤＭＡ，ＰＤＣ，ＷＣＤＭＡ，ＣＤＭＡ２０００またはＧＰＲＳなどでの通信を提供することができる。かかる通信を、たとえば無線周波数トランシーバ９６８を介して行わせることができる。これに加え、ブルートゥース、ＷｉＦｉまたはトランシーバ（図示せず）などのような他のものを使用して、短距離通信を行うこともできる。これに加え、ＧＰＳ（Global Positioning System全地球測位システム）レシーバモジュール９８０によって、ナビゲーション関連および位置特定関連の付加的なワイヤレスデータを、デバイス９５０に提供することができ、デバイス９５０において実行されるアプリケーションによって、これらのデータを適切に用いることができる。
【００８５】
デバイス９５０は、オーディオコーデック９６０を用いて通信を可聴で行うこともでき、この場合、オーディオコーデック９６０は、ユーザから発話情報を受け取り、この情報を使用可能なディジタル情報に変換することができる。オーディオコーデック９６０は同様にスピーカを介して、たとえばデバイス９５０のハンドセットにおけるスピーカを介して、ユーザのために可聴サウンドを生成可能である。かかるサウンドは、音声電話コールからのサウンドを含むことができ、記録されたサウンド（たとえばボイスメッセージ、音楽ファイル等）を含むことができ、さらにデバイス９５０上で動作するアプリケーションにより生成されたサウンドを含むこともできる。
【００８６】
コンピューティングデバイス９５０を、図示されているものとは異なる多くの形態で実装することができる。たとえば、携帯電話９８０として実装することもできる。また、スマートフォン９８２、パーソナルディジタルアシスタント、または他の同様のモバイルデバイスの一部として実装することもできる。
【００８７】
本明細書で説明するシステムおよび技術の様々な実装形態を、ディジタル電子回路、集積回路、特別設計のＡＳＩＣ（application specific integrated circuit特定用途向け集積回路）、コンピュータハードウェア、ファームウェア、ソフトウェア、および／またはそれらの組み合わせとして実現することができる。様々な実装形態には、プログラミング可能なシステム上で実行可能および／または解釈可能な１つまたは複数のコンピュータプログラムとしての実装を含むことができる。この場合、プログラミング可能なシステムは、少なくとも１つのプログラミング可能なプロセッサを含み、このプロセッサを特定の目的または汎用の目的のものとすることができ、データおよび命令をストレージシステム、少なくとも１つの入力デバイスおよび少なくとも１つの出力デバイスから受信するように、およびそれらに送信するように、接続することができる。
【００８８】
これらのコンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている）は、プログラミング可能なプロセッサのための機械命令を含み、高水準の手続き型プログラミング言語および／またはオブジェクト指向プログラミング言語、および／またはアセンブリ言語／機械語として実装することができる。本明細書で用いられる用語「機械読み取り可能媒体」および「コンピュータ読み取り可能媒体」とは、プログラミング可能なプロセッサへ機械命令および／またはデータを供給するために用いられる任意のコンピュータプログラム製品、装置および／またはデバイス（たとえば磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス（ＰＬＤ））のことを指し、これには機械読み取り可能な信号として機械命令を受け取る機械読み取り可能媒体が含まれる。用語「機械読み取り可能な信号」とは、プログラミング可能なプロセッサへ機械命令および／またはデータを供給するために用いられる任意の信号のことを指す。
【００８９】
ユーザとのインタラクションを提供するため、本明細書で説明するシステムおよび技術を、ユーザに情報を表示するためのディスプレイデバイス（たとえばＣＲＴ（cathode ray tubeブラウン管）またはＬＣＤ（liquid crystal display液晶ディスプレイ）モニタ）と、ユーザがコンピュータに入力を供給可能なキーボードおよびポインティングデバイス（たとえばマウスまたはトラックボール）を備えた１つのコンピュータシステム上で実装することができる。他の種類のデバイスを使用して、ユーザとのインタラクションを同様に提供することもでき、たとえばユーザに提供されるフィードバックを、任意の形態の感覚的フィードバック（たとえば視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバック）とすることができ、さらにユーザからの入力を任意の形態で受信することができ、これにはたとえば音響、音声または触覚による入力が含まれる。
【００９０】
本明細書で説明するシステムおよび技術を、以下のようなコンピューティングデバイスにおいて実装することができる。すなわちこのコンピューティングデバイスは、（たとえばデータサーバとして）バックエンド構成要素を含み、またはミドルウェア構成要素（たとえばアプリケーションサーバ）を含み、またはフロントエンド構成要素（たとえばユーザが本明細書で説明するシステムおよび技術の実装形態とインタラクション可能にするグラフィックユーザインタフェースまたはウェブブラウザを有するクライアントコンピュータ）を含み、またはかかるバックエンド、ミドルウェアまたはフロントエンドの構成要素の任意の組み合わせを含む。システムの各構成要素を、ディジタルデータ通信（たとえば通信ネットワーク）の任意の形態または媒体によって、相互接続することができる。通信ネットワークの例には、ローカルエリアネットワーク（”ＬＡＮ”）、ワイドエリアネットワーク（”ＷＡＮ”）およびインターネットが含まれる。
【００９１】
コンピューティングデバイスは、クライアントとサーバを含むことができる。クライアントとサーバは一般に互いに他方から隔たっており、典型的には通信ネットワークを介してインタラクションを行う。クライアントとサーバの関係は、個々のコンピュータ上で実行され相互にクライアント−サーバ関係を有するコンピュータプログラムに基づき発生する。
【００９２】
これまで数多くの実施形態について説明してきたが、本発明の着想および範囲を逸脱することなく様々な変形を行うことができることが理解されよう。
【００９３】
この点に加え、図面に描かれた論理的なフローは、望ましい結果を達成するためには、図示された特定の順序でなくてもよく、あるいは連続した順序でなくてもよい。さらにこれらに加え、他のステップを設けてもよいし、既述のフローからステップを削除してもよく、既述のシステムに他の構成要素を加えてもよいし、または既述のシステムから削除してもよい。よって、その他の実施形態は以下の特許請求の範囲内に含まれる。
【図１】
2018109621.tif 000003
【図２Ａ】
2018109621.tif 000004
【図２Ｂ】
2018109621.tif 000005
【図３】
2018109621.tif 000006
【図４】
2018109621.tif 000007
【図５】
2018109621.tif 000008
【図６】
2018109621.tif 000009
【図７】
2018109621.tif 000010
【外国語明細書】
2018109621.tif 000011
2018109621.tif 000012
2018109621.tif 000013
2018109621.tif 000014
2018109621.tif 000015
2018109621.tif 000016
2018109621.tif 000017
2018109621.tif 000018
2018109621.tif 000019
2018109621.tif 000020
2018109621.tif 000021
2018109621.tif 000022
2018109621.tif 000023
2018109621.tif 000024
2018109621.tif 000025
2018109621.tif 000026
2018109621.tif 000027
2018109621.tif 000028
2018109621.tif 000029
2018109621.tif 000030
2018109621.tif 000031
2018109621.tif 000032
2018109621.tif 000033
2018109621.tif 000034
2018109621.tif 000035
2018109621.tif 000036
2018109621.tif 000037
2018109621.tif 000038
2018109621.tif 000039
2018109621.tif 000040
2018109621.tif 000041
2018109621.tif 000042
2018109621.tif 000043
2018109621.tif 000044
2018109621.tif 000045
2018109621.tif 000046
2018109621.tif 000047
2018109621.tif 000048
2018109621.tif 000049
2018109621.tif 000050
2018109621.tif 000051
2018109621.tif 000052