Я думаю о том, чтобы собрать трех роботов, соединяющихся вместе и образующих треугольник (не физически), и пытаться избегать статических препятствий на пути к цели в Java-апплете. Кроме того, я сосредоточусь на алгоритме A* для поиска пути и выбора центра системы в качестве точки отсчета для эвристического значения. Но я обнаружил, что даже A* сгенерировал путь, основанный на центре системы, мульти-роботы все еще могут натыкаться на препятствия на пути к цели. Есть ли хороший способ решить эту проблему?
Двухмерные мультироботы, избегающие препятствий на пути к цели
Ответы (1)
Если вы используете карту занятости для навигации, сделайте каждую плитку размером не менее размера сети роботов. Тогда, если ячейка «не занята», вы точно знаете, что вся ваша сеть может поместиться в ней, не натыкаясь на какие-либо препятствия. Сами роботы могли бы использовать разделенную карту. Таким образом, вы можете представить, что одна ячейка на карте заполняемости представляет для ботов ячейку 3x3. Таким образом, боты по-прежнему могут точно формироваться, используя свою разделенную ячейку, в то время как алгоритм планирования пути может гарантировать, что независимо от того, как устроены боты, они будут в безопасности.
Я включил игрушечный пример. Темные линии представляют собой ячейку для карты заполнения, это то, что видит ваш алгоритм планирования пути. Боты (маленькие желтые квадраты) внутренне подразделяют карту занятости (алгоритму планирования не нужно знать, что это происходит), а также могут изменять свою собственную конфигурацию в пределах одной ячейки занятости.
Темно-розовые ячейки показывают, где может быть физический блок, но мы считаем всю область (большую ячейку) занятой. Даже если сеть потенциально может пройти мимо физического препятствия. Просто говоря, что область рядом с ней оккупирована, мы уменьшаем вероятность попадания в сложные ситуации.
A* может видеть только светло-розовые и светло-зеленые клетки. Роботы могут дополнительно подразделять большие блоки внутри