FlexBE — система управления поведением роботов¶
FlexBE — это программная платформа с открытым исходным кодом для разработки и выполнения поведений автономных мобильных роботов, основанная на иерархических конечных автоматах. Система разработана для работы в среде Robot Operating System (ROS) и предоставляет графический интерфейс для визуального проектирования логики управления, что позволяет создавать сложные поведенческие цепочки без необходимости написания низкоуровневого кода на каждом этапе.
¶Архитектура и принцип работы
В основе FlexBE лежит концепция конечного автомата, где каждое состояние (State) представляет собой отдельный атомарный модуль поведения, а переходы между состояниями определяют логику последовательности. В отличие от классических конечных автоматов, FlexBE поддерживает иерархическую структуру: составные состояния (Container State) могут включать в себя вложенные автоматы, что позволяет декомпозировать сложные задачи на управляемые подзадачи.
Ключевым элементом архитектуры является разделение на две основные части: редактор поведений (FlexBE App) и исполнительную среду (FlexBE Engine). Редактор представляет собой графическое приложение на базе Qt, работающее в браузере через веб-интерфейс. Исполнительная среда — это набор узлов ROS, которые интерпретируют загруженное поведение и управляют его выполнением в реальном времени.
Взаимодействие между редактором и исполнительной средой осуществляется через распределённую систему, что позволяет редактировать поведение удалённо, например, с рабочей станции, в то время как сам робот управляется бортовым компьютером. Это даёт возможность изменять логику поведения без остановки работы робота и перекомпиляции кода.
¶Основные компоненты
Система включает несколько ключевых библиотек и модулей:
- flexbe_core — центральная библиотека, содержащая базовые классы для определения состояний, переходов и событий.
- flexbe_app — графический редактор поведений, работающий в веб-браузере.
- flexbe_behavior_engine — исполнительный узел, который загружает поведение и управляет его выполнением.
- flexbe_mirror — механизм, обеспечивающий синхронизацию состояния выполнения между несколькими экземплярами системы (например, на симуляторе и реальном роботе).
- flexbe_onboard — набор узлов, запускаемых непосредственно на борту робота.
Каждое состояние в FlexBE определяется как класс Python, наследующий от базового класса State. Разработчик определяет методы для входа в состояние, выполнения действий, обработки событий и выхода из него. Переходы между состояниями осуществляются через механизм событий (outcomes), которые генерируются по завершении выполнения состояния.
¶История развития
Проект FlexBE был создан в 2014 году в Технологическом институте Виргинии (Virginia Tech) под руководством профессора Дугласа Брукса (Douglas Brooks) в рамках исследовательской лаборатории по автономным системам. Первоначально система разрабатывалась для исследовательских целей и применялась в проектах по управлению гуманоидными роботами и беспилотными летательными аппаратами.
В 2016 году проект был опубликован как открытый исходный код и стал доступен для широкого сообщества разработчиков ROS. Активное развитие продолжалось до 2020 года, когда вышла последняя стабильная версия. Несмотря на то, что основная разработка замедлилась, проект остаётся востребованным в академической среде и используется в ряде коммерческих разработок.
¶Применение
FlexBE нашёл применение в различных областях робототехники:
- Исследовательские проекты — в университетах и научных лабораториях для прототипирования алгоритмов управления.
- Образовательный процесс — для обучения студентов основам программирования роботов и теории конечных автоматов.
- Промышленная автоматизация — на производственных линиях для управления мобильными роботами, выполняющими транспортировку грузов.
- Сервисная робототехника — в разработке роботов для взаимодействия с людьми в общественных пространствах.
Особенностью FlexBE является возможность использования в системах с высокой критичностью к безопасности. Механизм FlexBE Mirror позволяет верифицировать поведение в симуляции перед развёртыванием на реальном оборудовании, а также обеспечивает контроль со стороны оператора через интерфейс оперативного управления (Operator Control Interface).
¶Преимущества и ограничения
К сильным сторонам FlexBE относятся:
- Визуальное проектирование логики, снижающее порог входа для исследователей без глубоких знаний программирования.
- Иерархическая структура, облегчающая масштабирование поведений.
- Гибкость за счёт возможности написания произвольных состояний на Python.
- Активное сообщество пользователей и наличие документации.
Среди ограничений отмечаются:
- Ориентация исключительно на экосистему ROS (первая версия — ROS 1, частичная поддержка ROS 2 появилась позднее).
- Отсутствие активной поддержки со стороны основных мейнтейнеров после 2020 года.
- Необходимость изучения специфической терминологии и концепций конечных автоматов.
¶Сравнение с альтернативами
В экосистеме ROS существуют и другие инструменты для разработки поведений. Например, Behavior Trees (деревья поведения) реализованы в библиотеке BehaviorTree.CPP, а SMACH — это библиотека конечных автоматов, встроенная в ROS. По сравнению с SMACH, FlexBE предоставляет более развитый графический редактор и механизм оперативного контроля. Отличие от деревьев поведения заключается в ином подходе к моделированию: конечные автоматы более строго определяют последовательность состояний, тогда как деревья поведения ориентированы на принятие решений в условиях неопределённости.
¶Лицензия и доступность
FlexBE распространяется под лицензией BSD-3-Clause, что позволяет свободное использование, модификацию и распространение как в академических, так и в коммерческих проектах. Исходный код размещён в публичном репозитории на GitHub. Документация включает руководства по установке, созданию состояний и разработке поведений, а также примеры готовых реализаций для популярных робототехнических платформ, включая роботов TurtleBot и PR2.
¶Источники
- Официальная документация проекта FlexBE на GitHub
- Статья «FlexBE: A Flexible Architecture for Behavior Engineering» (2014)
- Материалы конференций ROSCon, посвящённые FlexBE
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

