適切なターゲット位置を指定することは多くの状況で難しい場合があるため、2D占有グリッドマップに基づく次のアプローチは検討する価値があります。一般に「値の反復」と呼ばれ、勾配下降/上昇と組み合わせて、シンプルでかなり効率的な(実装に応じて)パス計画アルゴリズムを提供します。そのシンプルさにより、モバイルロボット工学、特に屋内環境でナビゲートする「シンプルロボット」でよく知られています。上記のように、このアプローチは、次のようにターゲット位置を明示的に指定せずに、開始位置から離れたパスを見つける手段を提供します。可能であれば、target-positionをオプションで指定できることに注意してください。また、アプローチ/アルゴリズムは幅優先の検索を構成し、
バイナリの場合、2D占有グリッドマップは占有グリッドセル用であり、他の場所ではゼロです。この占有値は、範囲[0,1]でも連続的である可能性があることに注意してください。以下に戻ります。特定のグリッドセルg iの値はV(g i)です。
基本バージョン
- グリッドセルg 0に開始位置が含まれると仮定します。セットV(G 0)= 0、およびput G 0を FIFOキューに。
- キューから次のグリッドセルg iを取得します。
- g iのすべての隣人g jに対して:
- g jが使用されておらず、以前にアクセスされていない場合:
- V(g j)= V(g i)+1
- g jを訪問済みとしてマークします。
- FIFOキューにg jを追加します。
- 所定の距離しきい値にまだ到達していない場合は(2.)に進み、そうでない場合は(5.)に進みます。
- パスは、g 0から始まる最も急な勾配上昇に従って取得されます。
ステップ4に関する注意。
- 上記のように、ステップ(4.)では、カバーされる最大距離を追跡する必要があります。これは、明確化/簡潔化の理由で上記の説明では省略されています。
- 目標位置が指定されている場合、目標位置に到達するとすぐに反復が停止します。つまり、ステップ(3.)の一部として処理/訪問されます。
- もちろん、グリッドマップ全体を単純に処理すること、つまり、すべての(無料の)グリッドセルが処理/訪問されるまで続行することもできます。制限要因は、明らかに解像度と併せてグリッドマップのサイズです。
拡張機能とさらなるコメント
更新式V(g j)= V(g i)+1は、V(g j)を縮小することにより、あらゆる種類の追加のヒューリスティックを適用する余地を十分に残しています。または、特定のパスオプションの値を減らすための追加コンポーネント。すべてではないにしても、ほとんどの場合、このような変更は、[0,1]からの連続値を持つグリッドマップを使用してうまく、一般的に組み込むことができます。たとえば、障害物の境界に沿って1から0へのトランジションを追加すると、「俳優」は障害物のない状態を保つことができます。このようなグリッドマップは、たとえば、ぼかし、重み付き拡張などによってバイナリバージョンから生成できます。脅威と敵を大きなぼかし半径を持つ障害物として追加すると、これらに近いパスにペナルティが課せられます。次のように、グリッドマップ全体で拡散プロセスを使用することもできます。
V(g j)=(1 /(N + 1))×[V(g j)+ sum(V(g i))]
ここで、「合計」は、隣接するすべてのグリッドセルの合計を指します。たとえば、バイナリマップを作成する代わりに、初期(整数)値は脅威の大きさに比例し、障害物は「小さな」脅威を提示します。拡散プロセスを適用した後、グリッド値を[0,1]にスケーリングする必要があり、障害、脅威、および敵が占めるセルを1に設定/強制する必要があります。そうでない場合、更新式のスケーリングは期待どおりに動作しません。
この一般的なスキーム/アプローチには多くのバリエーションがあります。障害物などの値は小さい可能性がありますが、フリーグリッドセルの値は大きいため、目的に応じて最終ステップで勾配降下が必要になる場合があります。いずれにせよ、アプローチは、IMHO、驚くほど汎用性が高く、実装がかなり簡単で、潜在的にかなり高速です(grid-map-size / resolutionに依存)。最後に、特定のターゲット位置を想定しない多くのパス計画アルゴリズムと同様に、行き詰まりに陥る明らかなリスクがあります。ある程度まで、このリスクを減らすために最後のステップの前に専用の後処理ステップを適用することが可能かもしれません。
Java-Script(?)の図を使用した別の簡単な説明を次に示しますが、この図は私のブラウザーでは機能しませんでした:(
http://www.cs.ubc.ca/~poole/demos/mdp/vi.html
計画の詳細については、次の本を参照してください。値の反復については、第2章、セクション2.3.1最適な固定長計画で具体的に説明します。
http://planning.cs.uiuc.edu/
Derikさんのお役に立てば幸いです。