Приложение З Принципы распределенного управления мобильными сервисными роботами
Системы управления мобильных роботов - сложные системы, которые должны решать в реальном масштабе времени ряд задач обеспечения их автономного функционирования: управления движением, считывания и обработки сигналов датчиков, планирования маршрутов и действий, распознавания образов, навигации и др.
СУ мобильных роботов обычно разрабатываются как модульные и иерархические системы, состоящие из взаимодействующих модулей, решающих определенные задачи на различных уровнях управления. Имеется ряд публикаций в которых предложены некоторые архитектуры систем управления мобильных роботов, некоторые из которых были успешно реализованы [215, 217, 236, 258, 287].Современные мобильные роботы должны выполнять полезные задачи в открытых рабочих средах, которые приспособлены для трудовой деятельности и нахождения в них людей. СУ таких роботов должны обеспечиваться высокоуровневыми по интеллектуальным особенностям функциями, подобно естественным человеко-машинным интерфейсам: распознавание речевых команд, лиц, знаков, жестов, образов, планирование действий, а также другие способы взаимодействия человека с роботом или действия автономного робота в неорганизованной среде.
Рис.1. Функциональная схема системы управления мобильного робота.
Таким образом, СУ мобильных роботов включающие не только традиционные контуры управления движением с обратной связью по координатам состояния, разомкнутые системы программного управления, но и системы планирования действий и принятия решений, распознавания образов и речи, глобальной и локальной навигации основанные на алгоритмах и моделях разного уровня сложности - от систем нечеткой логики до систем, основанных на базах знаний, от эволюционных алгоритмов до технологий нейронных сетей можно отнести к системам интеллектуального (интеллектного)
управления [36,266,276].
Рассмотрим вариант функциональной схемы системы управления мобильным роботом (рис.1). Существенной проблемой здесь является то, что модули, реализующие высокоуровневые интеллектуальные функции, требуют больших вычислительных ресурсов, что заставляет искать новые подходы для реализации СУ.
Высокоуровневые программы не могут использовать в полной мере для своих вычислений бортовой компьютер робота, который применяется, в первую очередь, для обработки в реальном времени задач управления низкого уровня. В противном случае, это снизит характеристики и эффективность системы управления в целом, ухудшит время отклика работающих в реальном времени элементов СУ, что может сказаться на стабильности работы системы управления MP в целом. Наращивание мощности бортового компьютера имеет естественные пределы по следующим эксплуатационным и конструктивным соображениям:
- единственный компьютер обладает малой надежностью;
- функциональные (специализированные) модули робота зачастую требуют больших вычислительных мощностей;
- усложняется настройка и отладка взаимодействующих модулей СУ;
- на подвижном роботе ограничено место для размещения контроллера управления;
- повышается энергопотребление от автономных бортовых источников питания;
- достаточно трудно модифицировать структуру системы управления в случае необходимости;
- накладываются дополнительные ограничения на подвижный робот из-за увеличения веса управляющего устройства.
Избежать этих нежелательных явлений можно в СУ реализованной по распределенному принципу, за счет использования нескольких компьютеров, связанных в единую сеть [108,109]. Тогда задачи, требующие больших вычислительных ресурсов, могут решаться на отдельных и даже удаленных компьютерах.
Распределенная реализация СУ дает также большие преимущества в виде открытости архитектуры, возможности наращивания вычислительной мощности, динамической расширяемости, мобильности и совместного использования модулей системы управления несколькими роботами [302, 315].
Модули распределенной системы могут быть созданы на различных языках программирования, работать на различных аппаратных платформах, взаимодействовать с другими существующими системами. Распределенная система может быть легко расширена и изменена за счет добавления, замещения и удаления модулей, что может быть сделано даже во время ее функционирования. При использовании беспроводных сетевых технологий распределенная СУ позволяет использовать бортовые компьютеры роботов для реализации основных функций, критически необходимых для управления в реальном времени, а редко используемые процедуры с интенсивными вычислительны-ми задачами передаются стационарным внешним компьютерам. Это позволит сделать сами мобильные роботы более дешевыми и расширить срок службы бортовых аккумуляторов. При управлении группой из нескольких роботов функции отдельных модулей, работающих на внешних компьютерах, можно будет использовать всеми роботами в группе по принципу «клиент-сервер» (модуль, реализующий некоторую функцию, является сервером, а отдельные роботы - клиентами). Это позволит поддерживать более тесную координацию между роботами в группе при управлении группой роботов как одним целым распределенным объектом.
Для экспериментального мобильного робота (рис.2) созданного в качестве прототипа сервисного робота используемого в качестве помощника в офисах, социальных учреждениях была разработана распределенная СУ на основе трех персональных компьютеров, объединенных в единую быстродействующую (100 Мбит/с) вычислительную сеть.
Рис.2. Конфигурация мобильного сервисного робота
Рис.З. Пример реализации распределенной СУ
Для распределения вычислительной нагрузки при управлении роботом в
реальном времени интерфейсные адаптеры управления приводами робота и движения видеокамер, подключения ультразвуковых датчиков препятствий, а также адаптеры ввода видеоизображений в компьютер, сенсорный LCD экран и средства мультимедиа были подключены к различным компьютерам (рис.З).
На рис.4 проиллюстрированы некоторые преимущества распределенной СУ мобильного робота.
Рис.4. Некоторые преимущества распределенной системы управления мобильного робота: (а) - наращиваемые вычислительные ресурсы; (б) - открытая архитектура; (в) - динамическая расширяемость; (г) - совместное использование сервиса; (д) - мобильность
1. Архитектура системы управления
Структурная схема распределенной СУ основана на иерархическом подходе к построению сложных управляющих систем [217, 287]. В системе имеются два вертикальных уровня управления: нижний уровень управления аппаратными средствами и верхний уровень управления функционированием робота (рис.5). Уровень управления аппаратными средствами (уровень аналитического управления) включает набор средств и процедур для управления аппаратными устройствами робота (двигателями, вращающимися видеокамерами, другими исполнительными устройствами) и опроса сенсорных систем робота (импульсных датчиков положения и скорости, ультразвуковых и других сенсоров, изображения от видеокамер, и т.д.). Данный уровень изолирует все аппаратно-зависимые низкоуровневые детали управления техническими средствами робота от верхнего уровня, представляя верхнему уров
ню информацию о состоянии устройств робота и команды управлении ими в абстрактной форме - в виде некоторого вектора состояния робота.
Часть параметров в векторе состояния робота являются управляющими - при изменении значений этих параметров на желаемые на нижнем уровне задействуются замкнутые контуры управления, приводящие текущие значения измененных параметров к заданным. Так, например, установка параметров поступательной и вращательной скоростей движения платформы робота использует сервоконтуры нижнего уровня для управления напряжением на приводах ведущих колес робота, установка желаемых углов поворота видеокамер робота использует позиционные контуры нижнего уровня для управления положением вращающихся головок с видеокамерами.
Рис.5. Архитектура распределенной системы управления.
Другая часть параметров в векторе состояния робота носит информационный характер и содержит обобщенную и обработанную информацию от сенсоров робота. Так, например, сигналы от импульсных датчиков положения, установленных на осях колес робота, обрабатываются на нижнем уровне системой одометрии с использованием уравнений движения робота и передаются на верхний уровень в виде перемещения робота относительно некоторого исходного положения. Сигналы от ультразвуковых датчиков препятствий фильтруются нижним уровнем для устранения помех и систематических погрешностей и представляются верхнему уровню в виде вектора чисел, говорящего о наличии препятствий по оси каждого из датчиков, а возможно и о расстояниях до них (зависит от типа датчиков).
Уровень управления функционированием робота (уровень интеллектуального управления) включает процедуры, относящиеся к проблемам управления верхнего уровня: управление движением робота, интерпретация дан
ных сенсоров, решение задач навигации, планирование действий робота и поддержка интеллектуальных интерфейсов. Для снижения сложности разработки данного уровня в целом его функции выполняются набором отдельных проблемно-ориентированных модулей (компонентов), обменивающихся между собой необходимой информацией и пользующихся функциями друг друга. Аппаратный уровень управления представлен на верхнем уровне в виде модуля, работающего в режиме сервера, который предоставляет другим роботам как информацию о текущем векторе параметров состояния робота, так и набор команд, позволяющий управлять параметрами состояния робота. В традиционных системам управления мобильными роботами функциональные компоненты исполняются на одном компьютере и тесно взаимосвязаны между собой за счет прямого доступа к данным других модулей и использования общих ресурсов компьютера. Таким образом, обеспечивается согласованность всех процедур управления роботом.
При реализации распределенной системы на основе вычислительной сети существует ряд дополнительных проблем. В такой системе тесная взаимосвязь между модулями СУ роботом уже невозможна, потому что модули выполняются на различных компьютерах и не имеют свободного доступа к внутреннему состоянию других модулей. Таким образом, в распределенной системе связи между модулями системы должны быть ослаблены, а обмен информацией между ними должен происходить только через сетевые механизмы взаимодействия. Эти механизмы взаимодействия должны быть достаточно гибкими, чтобы позволить модулям системы использовать различные стратегии взаимодействия и обмена информацией, таких как широковещательная рассылка, индивидуальные каналы обмена информацией между модулями по типу «один к одному» и «один ко многим» (сервер-клиент), а также обеспечить однородный интерфейс и динамическую расширяемость. В нашей системе мы используем открытую распределенную объектную архитектуру CORBA (Common Object Request Broker Architecture - Обобщенную Архитектуру построения Брокеров Объектных Запросов), для того чтобы выполнить все поставленные нами задачи при реализации механизмов взаимодействия модулей. Особенности архитектуры CORBA:
• имеет открытую, объектно-ориентированную структуру;
• является инструментом разработки распределенных вычислительных систем;
• разрабатываемая система представляется в виде совокупности взаимодействующих объектов;
• поддерживает разработку распределенных СУ в реальном времени;
• обеспечивает жестко запрограммированные взаимодействия (объектные интерфейсы);
• поддерживается множеством языков программирования на множестве платформ.
Распределенные модули и протоколы их взаимодействия также должны корректно поддерживать совместное использование ресурсов и обеспечивать
быструю реакцию системы. Это необходимо в ситуациях, когда несколько модулей конкурируют за единственный ресурс, например, доступ к командам управления движением робота или перемещений вращающейся камеры. В нашей системе для разрешения данной проблемы мы используем стандартные механизмы синхронизации: очереди, блокирование занятых ресурсов и приоритетное обслуживание.
Существует также проблема организации работы всех распределенных модулей в целом, объединения их работы как единой системы. Это требует наличия некоторого центрального исполнительного управления, которое будет координировать и управлять функционированием распределенных компонентов системы для выполнения поставленных целей. В нашей системе мы делегируем эту роль одному из модулей распределенной системы, называемому супервизором или исполнительным модулем. .
2. Механизмы связи
Рассмотрим механизмы взаимодействия модулей, используемые для построения распределенной СУ. Как уже было сказано выше, для этой цели используется CORBA - открытая распределенная объектная архитектура и инфраструктура, предназначенная для построения распределенных вычислительных систем. Благодаря принятому стандарту эта архитектура является независимой от выбора компьютерной платформы (от больших компьютеров до микроЭВМ и встроенных систем), операционной системы и языка программирования. CORBA реализует стандартную схему интеграции компьютеров и программ от разных поставщиков для построения распределенных приложений, включая прикладные системы реального времени. Для реализации нашей системы мы использовали свободно распространяемую версию Брокера Объектных Запросов - omniORB.
В нашей системе мы имеем два уровня взаимодействия между модулями: объектный уровень и уровень обмена сообщениями. На рис.6, схематично изображены имеющиеся уровни взаимодействия между модулями распределенной системы. Объектный уровень взаимодействия (рис.6,а) позволяет модулю экспортировать свои процедуры и данные другим модулям через сетевые объекты CORBA. Объектный уровень выполняет следующие функции:
• реализует интерфейсы нижнего уровня между модулями системы;
• позволяет осуществлять тесное интегрирование модулей системы;
• обеспечивает открытость и расширяемость.
Уровень обмена сообщениями (рис.6,6) позволяет узлам взаимодействовать, используя сообщения. Данный уровень:
• обеспечивает наибольшую гибкость взаимодействия за счет использования однородного интерфейса;
• позволяет реализовать различные стратегии взаимодействия и динамически перестраивать конфигурацию;
• скрывает внутренние детали и механизмы библиотеки CORBA.
Рис.6. Уровни взаимодействия между модулями системы: (а) - объектный
уровень; (б) - уровень обмена сообщениями
Рис.7. Распределенные механизмы связи
На рис.7 показаны все распределенные механизмы взаимодействия, доступные модулям системы. Объектный уровень позволяет модулям системы экспортировать свои процедуры и внутренние данные в сетевую распределенную среду при помощи объектов CORBA. Другие модули осуществляют
доступ экспортируемым процедурам и данным модуля путем вызова методов объектов CORBA.
Объектный уровень может использоваться для расширения функциональных возможностей имеющихся в системе модулей. Например, модуль управления роботом с помощью объектного уровня взаимодействия экспортирует низкоуровневые процедуры управления приводами робота и необработанную информацию от сенсоров робота. Данные процедуры и информация могут быть использованы при реализации других модулей управления роботом, которые, в свою очередь, будут использовать специализированные алгоритмы управления движением и обработки данных, поступающих от сенсоров. Этим модулям не придется заново решать проблемы управления аппаратными средствами низкого уровня. Эти проблемы будут решены_исходным управляющим модулем. Такой подход делает архитектуру системы управления открытой и динамичной - добавлять и удалять модули расширения возможностей можно непосредственно во время работы системы.
Объектный уровень взаимодействия используется и в тех случаях, когда необходима тесная взаимосвязь между модулями системы, например в алгоритмах управления реального времени с жесткими временными ограничениями. Используемые при этом непосредственные вызовы процедур через библиотеки CORBA позволяют достичь более высокой производительности и меньших задержек, чем на уровне передачи сообщений.
Уровень взаимодействия с помощью обмена сообщениями обеспечивает более удобный и гибкий обмен информацией между модулями системы за счет скрытия большинства деталей и механизмов архитектуры CORBA. Для обмена информацией на этом уровне используется однородный интерфейс - процедуры посылки и приема сообщений определенного формата. Здесь также возможны такие стратегии взаимодействия как посылка сообщений нескольким модулям сразу и «подписка» на получение сообщений от других модулей. Механизмы уровня сообщений автоматически находят модули- адресаты сообщений в распределенной системе, гарантируют надежную доставку сообщений, извещают адресаты о их прибытии, обеспечивают диагностику ошибок.
Каждое посылаемое сообщение состоит из заголовка и блока данных. Заголовок сообщения содержит служебную информацию о сообщении: его идентификатор, категорию, приоритет, информацию об отправителе, статус и др. Эта информация используется для того чтобы организовать более эффективную доставку сообщений при минимальном использовании ресурсов сети.
Обмен сообщениями между модулями системы производится при помощи таких объектов, как очереди сообщений и маршрутизаторы сообщений (см. рис.6). Очереди и маршрутизаторы сообщений используют внутренние объекты CORBA, чтобы передавать сообщения в распределенной сетевой среде. Очереди сообщений используются для пересылки сообщений между двумя взаимодействующими модулями. Они обеспечивают отправку и получение сообщений, а также определяют очередность их обработки модулями в соответствии с приоритетами. Маршрутизаторы сообщений обеспечивают обмен
сообщениями между несколькими модулями одновременно, рассылку всех или определенных сообщений по запросу получателя, рассылку сообщений сразу нескольким получателем. При использовании маршрутизаторов схема обмена сообщениями может быть гибко настроена непосредственно во время работы распределенной системы.
Для модулей распределенной системы очереди и маршрутизаторы сообщений представляют собой коммуникационные объекты с четко определенным программным интерфейсом для взаимодействия модулей с ними. На уровне сетевой среды очереди и маршрутизаторы сообщений представлены соответствующими CORBA-объектами, детали взаимодействия которых скрыты от модулей системы. Таким образом, от модулей распределенной системы скрыты не только детали сетевых низкоуровневых протоколов, но и детали использования CORBA архитектуры, что значительно упрощает разработку модулей. В программном интерфейсе коммуникационных объектов отсутствуют ссылки на элементы сетевой распределенной среды, что позволяет организовать взаимодействие между модулями вне зависимости от их физического расположения на любом из компьютеров сетевой системы управления. Идентификация и поиск коммуникационных объектов в сетевой среде осуществляется процедурами подсистемы CORBA по символьным именам, которые должны быть уникальными в рамках системы. Рассмотрим каждый из коммуникационных механизмов более подробно.
Очереди сообщений предназначены для передачи сообщений в одном направлении между двумя модулями распределенной системы. Механизм взаимодействия с использованием очереди сообщений включает серверную и клиентскую части. Серверная часть располагается на стороне модуля получающего сообщения и является собственно очередью, в которую помещаются сообщения от любого количества отправляющих модулей. При получении сообщения принимающий модуль уведомляется об этом. Для отправки сообщений модули используют клиентскую часть. Сообщения, помещенные в очередь, обрабатываются принимающим модулем поочередно в соответствии с их приоритетом. Модуль распределенной системы может создать любое количество клиентских и серверных частей очередей сообщений. Два модуля, создав противоположные клиентские и серверные части, могут создать двусторонний канал обмена информацией.
Интерфейс серверной и клиентской частей очередей сообщения минимален. Клиентская часть имеет только один метод, позволяющий послать сообщение в очередь с указанным именем. Серверная часть имеет два метода: первый - для отслеживания состояния очереди, второй - для извлечения сообщений из очереди для их обработки.
Маршрутизаторы сообщений в нашей системе обеспечивают динамически конфигурируемые схемы обмена сообщениями между модулями: рассылку сообщений получателям по их запросу («подписка» на сообщения) и рассылку одного сообщения любому числу получателей (широковещательная рассылка). Данный механизм, например, может быть использован модулем управления движением робота для рассылки изменений в векторе состояния
робота всем модулям, которым необходима данная информация. Для того чтобы стать абонентом в широковещательной рассылке сообщений, другие модули используют схему «подписки» на сообщения, причем модуль может «подписаться» только на некоторые сообщения. Таким образом, модуль, отправляющий информацию, может ничего не знать заранее об ее получателях. Такой модуль просто выдает результаты своей работы в виде сообщений в распределенную среду, где она автоматически распространяется в соответствии с ее необходимостью для работы других модулей.
Маршрутизаторы сообщений также включают серверную и клиентскую части. Серверная часть используется модулем системы, исходящие сообщения которого будут распространяться в распределенной среде по широковещательной схеме с «подпиской». Клиентская часть используется другими модулями в системе для организации схемы «подписки».
Программный интерфейс серверной части минимален - в нем имеется лишь один метод, который используется модулем для передачи отправляемых сообщений маршрутизатору. Серверная часть маршрутизатора сообщений имеет динамический реестр «подписчиков» на отправляемые сообщения, который управляется через CORBA-объект клиентскими частями других модулей. Аналогично, клиентская часть имеет единственный метод, который - позволяет посылать запросы на «подписку» маршрутизатору с определенным именем в распределенной среде. Запрос на «подписку» содержит имя очереди сообщений, в которую требуется помещать отправляемые по запросу сообщения, категорию и идентификатор (или их диапазон) интересуемых сообщений. Запрос может также отменить ранее сделанный запрос. Запрос помещается в динамический реестр маршрутизатора, который используется для фильтрации и доставки исходящих сообщения маршрутизатора в указанные в запросах очереди. Сама доставка сообщений осуществляется при помощи клиентских частей очередей сообщений. При помощи процедур подсистемы CORBA маршрутизатор поддерживает реестр запросов в состоянии, отражающем текущую ситуацию в распределенной среде. Если маршрутизатор обнаружит, что указанная в запросе очередь сообщений отсутствует в распределенной среде в течение некоторого времени, то он удалит из реестра связанный с ней запрос.
В распределенной системе существует проблема управления доступом модулей системы к совместно используемым ресурсам. Эта проблема появляется в случае, если какой-либо модуль системы предоставляет другим модулям системы какие-либо услуги или функции, которые не могут использоваться несколькими модулями одновременно. Для модуля управления роботом совместно используемыми ресурсами являются команды управления движением робота, команды управления приводами видеокамер, и т.д. Управление совместно используемыми ресурсами традиционно решается путем организации последовательного доступа к ним. В нашей распределенной системе для этого были разработаны протоколы последовательного доступа (синхронизации) включающие в себя следующие механизмы: очереди команд, очереди запросов и блокировку ресурса для его эксклюзивного исполь-
зования.
3. Управление роботом в распределенной вычислительной среде
Для управления роботом в распределенной СУ необходимо решить проблему координации функционирования отдельных модулей. Несмотря на то, что каждый из модулей работает автономно и обменивается с другими модулями лишь необходимой ему информацией, система управления роботом должна решать возложенные на нее задачи как единое целое. Как и в любой другой системе управления в ней должен присутствовать программно управляемый модуль, на вход которого подаются управляющие алгоритмы или задачи управления, а на выходе которого вырабатываются управляющие и координирующие воздействия для отдельных управляющих или обрабатывающих информацию подсистем. В нашей распределенной системе эту роль выполняет так называемый модуль-супервизор или исполнительный модуль.
Задачей исполнительного модуля является координация и управление другими модулями распределенной системы для обеспечения выполнения заданной программы управления роботом. Исполнительный модуль взаимодействует с другими модулями системы на уровне обмена сообщениями. Программы для управления роботом имеют вид сценариев, которые выполняются в реальном времени машиной сценариев (scripting engine) исполнительного модуля. Простые сценарии могут описывать определенные действия робота и несложные стратегии его поведения (например, избежание столкновений с препятствием). Сложные сценарии могут состоять из более простых сценариев. Сценарии управления роботом основаны на принципах конечных автоматов - каждый сценарий определяет набор некоторых состояний, а переход между этими состояниями осуществляется за счет взаимодействия сценария с вспомогательными подсистемами исполнительного модуля. Вспомогательные подсистемы включают: ядро исполнительного модуля, подсистему многопоточной обработки сценариев, подсистему обработки сообщений и подсистему обработки событий.
Подсистема многопоточной обработки сценариев обеспечивают среду для выполнения управляющих сценариев. В этой среде одни сценарии могут вызывать (запускать) другие сценарии, планировать и упорядочивать параллельное исполнение нескольких сценариев. Исполнение сценария представляется в виде последовательности некоторых состояний и переходов между ними. Некоторые из этих состояний заранее определены системой, такие как инициализация, завершение, приостановка, другие состояния определяются самим сценарием, например, достигнута конечная точка траектории, обнаружено препятствие и т.д. Сценарий также определяет возможные переходы между его состояниями, которые выполняются путем вызовов процедур, других сценариев, вычислений или посылкой сообщений, причем следующее за переходом состояние может определяться динамически в зависимости от состояний других сценариев или системных объектов. Подсистема многопоточной обработки занимается планированием переходов между состояниями сценариев на основе принципов работы конечных автоматов. Те же принци-
пы она использует и для управления параллельным исполнением множества сценариев.
Подсистема обработки сообщений позволяет управляющим сценариям обмениваться сообщениями с другими модулями распределенной системы для управления и координирования работы модулей. При обмене сообщениями сценарии могут использовать рассмотренные выше механизмы взаимодействия модулей - очереди и маршрутизаторы сообщений. Сценарии могут отправлять сообщения, создавать отдельные очереди для получения сообщений, посылать запросы на «подписку» маршрутизаторам других модулей, транслировать свои сообщения с помощью маршрутизатора исполнительного модуля. Подсистема обработки сообщений позволяет сценариям автоматизировать обработку поступающих в исполнительных модуль сообщений. Сценарий может создать фильтр для поступающих сообщений и указать в нем, какие сообщения он ожидает. При получении данных сообщений подсистема их обработки может инициировать переход между состояниями ожидающего это сообщение сценария или инициировать некоторое системное событие.
Подсистема обработки событий связывает между собой механизмы многопоточной обработки и механизмы обработки сообщений. Данная подсистема играет важную роль в реализации принципов работы конечных автоматов - системные события являются инициаторами большинства переходов между состояниями управляющих сценариев. Подсистема обработки сообщений использует события для выдачи сигналов ожидающим события сценариям. Подсистема многопоточной обработки использует события при управлении параллельным выполнением множества взаимодействующих сценариев. Сценарии также могут создавать и посылать друг другу прикладные события, а также создавать временные генераторы событий - таймеры.
Ядро исполнительного модуля обеспечивает работу и взаимодействие всех перечисленных подсистем. Ядро также обеспечивает взаимодействие исполняющихся сценариев с подсистемами исполнительного модуля, а также с операционной системой компьютера. Дополнительными функциями ядра являются диагностика работы подсистем и сценариев, а также обработка ошибок.
Распределенная вычислительная среда позволяет использовать в одной системе управления не один, а несколько исполнительных модулей. В этом случае может быть создано несколько уровней иерархии системы управления, где каждый исполнительный модуль будет решать узкий круг задач на своем уровне, выдавая обобщенные управляющие команды более низкому уровню и отчитываясь о результатах выполнения поставленных задач более высокому уровню.