1

廊下内の移動ロボットの経路探索に A* を実装しています。今のところ通路は通路の中に作られていますが、障害物のすべての端に沿って右に滑りますが、通路は通路の真ん中にある方がいいです。1.それを行うための平滑化アルゴリズムはありますか? 2.現実的/実現可能なパスを取得できるように、ステアリングの制約を含める方法は? 3. ジグザグの道を避けるために「ターン」にペナルティを与える方法。

私は A* アルゴリズムを初めて使用するので、上記の問題に困難を感じています。任意のリンクを参照してください。本も大歓迎です..ありがとう..

4

2 に答える 2

1

A* を実行するフィールドを、たとえば 1 タイル縮小することで事前に形成できます。これにより、4 通りの近隣の通行不能セルに隣接するセルが通行不能になります。結果として得られる A* パスは、回廊の中心に近くなります。もちろん、いくつかの回廊が完全に通行不能になる可能性がありますが、実際には 3x3 の十字型ロボットがグリッドを歩き回るシミュレーションを行っており、3x3 の十字形は 2xN のパスを通過できないため、これは予想されることです。

ターンへのコストの追加について - A* データを保持する配列に現在の方向を追加し、引数の (古い方向、新しい方向) ペアに対して負でない値を返す 2 つの引数関数を実装する必要があります。「old_direction が new direction と等しくない場合は 1 を返し、そうでない場合は 0 を返します」と言います。次に、その関数の結果を、A* 反復の各ステップで計算したコストに追加します。

于 2013-03-27T10:02:51.203 に答える
0

使用可能な領域を廊下の中央に制限するだけです。

于 2013-03-27T09:45:39.433 に答える