3.9.3 Построение дерева поведения

Построение дерева поведения может быть выполнено либо сверху вниз, либо снизу вверх, либо даже в некоторой комбинации этих двух элементов. Часто бывает проще начать с корневого узла и двигаться вниз, начиная с более абстрактного сложного поведения, а затем добавляя более конкретные условия и задачи действий.

Для примера патрульного бота корневой узел будет иметь два составных дочерних поведения: «СТОЯТЬ СПОКОЙНО» и «ПАТРУЛИРОВАТЬ». Используя маркированный список, мы можем представить наше дерево так:

  • ПОВЕДЕНИЕ (корневой)

  • СТОЯТЬ СПОКОЙНО

  • ПАТРУЛИРОВАТЬ

Метка ПОВЕДЕНИЕ использована для корневого узла.

Обратите внимание, что приоритет дочернего поведения определяется его порядком в списке, так как мы всегда будем проходить через дочерние узлы в порядке списка. Таким образом, в этом случае поведение «СТОЯТЬ СПОКОЙНО» имеет более высокий приоритет, чем поведение «ПАТРУЛИРОВАТЬ». В конце концов, если мы позволим батарее разрядиться, робот не сможет продолжать свое патрулирование.

Далее, давайте конкретизируем эти два высокоуровневых поведения. Задача «СТОЯТЬ СПОКОЙНО» будет состоять из двух дочерних задач: «ПРОВЕРЯТЬ БАТАРЕЮ» и «ЗАРЯЖАТЬСЯ». Это также может включать проверку сервоприводов на перегрев или наблюдение за чрезмерным током приводных двигателей (возможно, робот застрял на чем-то). Задача «ПАТРУЛИРОВАТЬ» будет перемещать по четырем углам квадрата с помощью четырех дочерних задач. Итак, дерево поведения теперь выглядит следующим образом:

  • ПОВЕДЕНИЕ

  • СТОЯТЬ СПОКОЙНО

  • ПРОВЕРИТЬ БАТАРЕЮ

  • ЗАРЯЖАТЬСЯ

  • ПАТРУЛИРОВАТЬ

  • ТОЧКА МАРШРУТА_0

  • ТОЧКА МАРШРУТА_1

  • ТОЧКА МАРШРУТА_2

  • ТОЧКА МАРШРУТА_3

Еще раз, порядок списков очень важен. Например, мы хотим проверить батарею, прежде чем решим ее зарядить, и мы хотим патрулировать углы квадрата в определенном порядке.

Наконец, задача «ЗАРЯЖАТЬСЯ» состоит из двух дочерних моделей поведения: навигации к док-станции и подзарядки робота. Итак, наше финальное дерево поведения выглядит следующим образом:

  • ПОВЕДЕНИЕ;

  • СТОЯТЬ СПОКОЙНО;

  • ПРОВЕРИТЬ БАТАРЕЮ;

  • ЗАРЯЖАТЬСЯ;

  • НАПРАВИТЬСЯ К ДОК-СТАНЦИИ;

  • ЗАРЯДИТЬСЯ;

  • ПАТРУЛИРОВАТЬ;

  • ТОЧКА МАРШРУТА_0

  • ТОЧКА МАРШРУТА_1

  • ТОЧКА МАРШРУТА_2

  • ТОЧКА МАРШРУТА_3

При наличии нашей базовой древовидной структуры все, что нам остается - описать отношения между слоями в дереве, то есть между иерархическими задачами разного уровня. Давайте перейдем к этому дальше.

Last updated