Я работаю над проектом с роботом, который должен найти путь к объекту и избежать некоторых препятствий при движении к этому объекту, который он должен поднять.
Проблема заключается в том, что робот иобъект, который должен поднять робот, имеет ширину в один пиксель в поисковике пути.На самом деле они намного больше.Часто следопыт A * выбирает путь вдоль краев препятствий, иногда заставляя его сталкиваться с ними, что нам и не нужно делать.
Я пытался добавить еще не пройденный путьполя для препятствий, но это не всегда получается очень хорошо.Он по-прежнему сталкивается с препятствиями, добавляя слишком много точек, по которым ему не разрешено идти, в результате чего нет пути, по которому он может идти.
Есть ли у вас какие-либо предложения относительно того, что делать с этой проблемой??
Редактировать:
Итак, я сделал так, как предложил Джастин Л., добавив много затрат вокруг препятствий, что приводит к фоллингу: Сетка без пути http://sogaard.us/uploades/1_grid_no_path.png
Здесь вы можете увидеть стоимость вокруг препятствий, первоначально средние два препятствия должны выглядеть точно так же, как и в углах, но после запуска нашего поискового указателя кажется, что затраты переопределены:
Сетка с путемhttp://sogaard.us/uploades/1_map_grid.png
Изображение, которое показывает вещи, найденные на картинке http://sogaard.us/uploades/2_complete_map.png
Изображение выше показывает, что вещи найдены на картинке.
Путь найден http://sogaard.us/uploades/3_path.png
Это найденный путь, который, как и наша проблема, был раньше, обнимает препятствие.
Сетка ранее с путем на http://sogaard.us/uploades/4_mg_path.png
И еще одна картинка с картой стоимостис путем.
Так что я нахожу странным, почему указатель пути A * переопределяет эти затраты на поле, которые ОЧЕНЬ высоки.
Было бы, когда он оценивает узлы внутри открытогосписок с текущим полем, чтобы увидеть, является ли путь к текущему полю короче, чем путь в открытом списке?
А вот код, который я использую для pathfinder:
Pathfinder.cs:http://pastebin.org/343774
Field.cs и Grid.cs: http://pastebin.org/343775