Доступные сервисы
На этой странице перечислены встроенные сервисы поведения, доступные в opencda/core/application/behavior/services/.
Сейчас встроенный каталог содержит четыре сервиса:
self_informermovement_controlleraim_clientaim_server
Описание фреймворка сервисов, общего жизненного цикла и рекомендуемого шаблона реализации приведено в Сервисы поведения.
self_informer
Публикует текущее состояние транспортного средства для соседних сервисов на том же узле.
service_type:self_informerowner:VehicleManagerdefault priority:1capabilities:request.submitstate snapshot: ID владельца, текущее положение и текущая скорость
Типовая роль:
выполняться в начале такта
получить текущие позу и скорость владельца
отправить локальное широковещательное сообщение, получаемое другими сервисами транспортного средства
Поля конфигурации:
priority: необязательный целочисленный приоритет выполнения
Пример:
behavior_services:
- type: self_informer
Примечания:
обычно это первый сервис на стороне транспортного средства в цепочке
aim_clientзависит от его выходных данных, используемых как контекст локального состояния
movement_controller
Получает локальные команды движения и применяет их к контроллеру транспортного средства.
service_type:movement_controllerowner:VehicleManagerdefault priority:100capabilities: отсутствуютstate snapshot: ID владельца и текущее целевое положение
Типовая роль:
выполняться ближе к концу конвейера сервисов транспортного средства
получать локальные команды управления
вызвать
owner.control(...)не отправлять исходящие сообщения
Поля конфигурации:
priority: необязательный целочисленный приоритет выполнения
Пример:
behavior_services:
- type: movement_controller
Примечания:
обычно это конечный сервис на стороне транспортного средства
aim_clientотправляет этому сервису сообщения команд
aim_client
Работает на транспортном средстве, получает ответы AIM и преобразует их в локальные команды движения и следующий запрос AIM.
service_type:aim_clientowner:VehicleManagerdefault priority:20capabilities:response.observe,command.submit,request.submitstate snapshot: ID владельца и текущая активная траектория управления
Типовая роль:
наблюдать локальное собственное состояние от
self_informerнаблюдать удалённые ответы от
aim_serverвычислить следующую траекторию управления
отправить локальные команды
movement_controllerотправить следующий запрос для
aim_server
Поля конфигурации:
priority: необязательный целочисленный приоритет выполненияdebug: необязательное логическое значение, включает отладочную визуализацию траекторий
Пример:
behavior_services:
- type: self_informer
- type: aim_client
debug: true
- type: movement_controller
Зависимости:
требует
self_informerна том же транспортном средствеобычно требует
movement_controllerна том же транспортном средстветребует хотя бы один доступный сервис
aim_serverна RSU
aim_server
Работает на RSU, собирает запросы AIM от транспортных средств, прогнозирует траектории с помощью AIMModelManager и возвращает ответы AIM.
service_type:aim_serverowner:RSUManagerdefault priority:20capabilities:request.observe,response.submit,state.observestate snapshot: ID отслеживаемых транспортных средств, ID транспортных средств с траекториями и их количество
Типовая роль:
наблюдать входящие сообщения запросов AIM
запустить настроенную серверную часть модели AIM
отправить сообщения ответов транспортным средствам
предоставить состояние времени выполнения для атак, метрик и отладки
Поля конфигурации:
priority: необязательный целочисленный приоритет выполненияcontrol_radius: необязательный целочисленный радиус для управляемых транспортных средствcontrol_center_location: необязательное явно заданное положение центраdebug: необязательное логическое значение, включает отладочную визуализациюmodelи дополнительные параметры серверной части AIM, передаваемые при инициализации модели
Пример:
behavior_services:
- type: aim_server
priority: 1
control_radius: 15
control_center_location:
x: 256
y: -171
z: 15
model: "MTP"
Примечания:
предназначен для развёртывания на стороне RSU
обычно используется совместно с одним или несколькими сервисами
aim_clientна транспортных средствах
Типовые цепочки сервисов
Локальная цепочка транспортного средства по умолчанию:
self_informer -> movement_controller
Цепочка транспортного средства с поддержкой AIM:
self_informer -> aim_client -> movement_controller
Цепочка RSU с поддержкой AIM:
aim_server
Точный порядок выполнения определяется значением priority, но приведённые выше цепочки отражают предполагаемую функциональную последовательность.