A* パスファインダー障害物衝突問題

オブジェクトの近くのピクセルにグラデーション コストを追加することを検討しましたか?

おそらく、線形グラデーションと同じくらい単純なもの:

C = -mx + b

ここで、x は最も近いオブジェクトまでの距離、b は境界のすぐ外側のコスト、m はコストが減少する割合です。もちろん、C が負の場合は 0 に設定する必要があります。

おそらく単純な双曲線崩壊

C = b/x

ここで、b は境界のすぐ外側にある目的のコストです。一定の最低点に達したら、0 にカットオフします。

または、指数関数的減衰を使用することもできます

C = k e^(-hx)

ここで、k はスケーリング定数、h は減衰率です。繰り返しますが、カットオフは賢明です。

2 つ目の提案

A* をピクセル マップ マップに適用したことはありません。ほとんどの場合、タイルです。

タイルの「解像度」を大幅に下げてみてはいかがでしょうか?おそらく、10 x 10 または 20 x 20 のピクセル セットごとに 1 つのタイルです。タイルのコストは、タイル内のピクセルの最高コストです。

また、A* に使用している最短距離ヒューリスティックの価値を下げてみることもできます。


ロボットのサイズを考慮して、障害物を大きくしてみてください。ブロックの問題に対処するために、障害物の角を丸くすることができます。その場合、埋められた隙間は小さすぎて、いずれにせよロボットが通り抜けることはできません.


私はそのような物理的なロボットを 1 つ作りました。私の解決策は、左折と右折が必要な場合は常に 1 歩後退することでした。

赤い線は、私があなたの問題を理解しているとおりです。黒い線は、問題を解決するために私がしたことです。ロボットは、1 歩後ろにまっすぐ移動してから、右に曲がることができます。