Драйвер без фреймворка 4

Обновлено: 20.11.2024

Среда драйверов Vuforia Engine позволяет разработчикам предоставлять и использовать данные из внешних систем через Vuforia Engine.

Разработчики предоставляют Vuforia внешние данные с помощью драйвера. Затем разработчики приложений могут получать доступ к внешним системам и использовать их через Driver Framework. Разработчики драйверов могут распространять свой драйвер среди других разработчиков приложений, чтобы использовать преимущества внешних систем.

Среда драйверов обеспечивает доступ к функциям внешней камеры и внешнего позиционного устройства отслеживания. Функция «Внешняя камера» определяет, как внешняя система может предоставлять данные изображения для Vuforia Engine. Например, файловый драйвер берет последовательность файлов изображений, хранящихся на устройстве, и делает ее доступной для Vuforia Engine. Средство отслеживания внешнего позиционного устройства определяет, как внешняя система может предоставлять данные о положении устройства в Vuforia Engine. Например, файловый драйвер берет последовательность поз устройства, хранящуюся на устройстве, и делает ее доступной для Vuforia Engine.

Создание драйверов Vuforia Engine

Разработчики могут определить свой собственный драйвер Vuforia Engine для передачи внешних данных в Vuforia Engine. Например, производители, которые хотят предоставить доступ к USB- или Bluetooth-камере, могут создать свой собственный драйвер, чтобы разработчики Vuforia Engine могли воспользоваться преимуществами своего оборудования. Инфраструктура Vuforia Engine Driver также позволяет разработчикам извлекать кадры изображений из других мест, таких как файлы видео или изображений, а также позы устройств, хранящиеся локально или удаленно.

Драйвер Vuforia Engine должен быть написан на C/C++ и реализован в виде отдельной динамической библиотеки (файл .dll, файл .so или платформа iOS), которую Vuforia Engine загружает во время выполнения. Дополнительные сведения о создании драйвера см. в разделе Создание пользовательского драйвера.

Кроме того, Vuforia Engine можно включить на пользовательских устройствах, таких как очки, с помощью созданного вами драйвера Vuforia. Добавив драйвер Vuforia на пользовательское устройство, Vuforia Engine сможет получать данные о позе и сенсорах, а также кадры камеры от OEM-производителей с нестандартным оборудованием. См. раздел Поддержка Vuforia для пользовательских устройств с использованием драйвера Vuforia

Использование драйверов Vuforia Engine

Разработчикам, которые хотят получить доступ к внешним системам через драйвер, необходимо указать драйвер перед инициализацией Vuforia Engine. Как только Vuforia Engine инициализируется драйвером, Engine продолжает вести себя так, как будто он использует встроенную камеру. Создание приложений и функций аналогично созданию приложения с помощью встроенной камеры.

Примечание. При использовании Driver Framework разработчикам настоятельно рекомендуется использовать лицензионный ключ, созданный после 10 апреля 2018 года. Чтобы создать новые ключи, перейдите на страницу диспетчера лицензий на портале для разработчиков.

Использование записей и Vuforia Session Recorder API

В некоторых ситуациях использование записи для воспроизведения сеанса Vuforia может быть полезно для разработки и сбора данных для изменения и настройки некоторых аспектов приложения дополненной реальности. Кроме того, запись позволяет разработчикам воспроизвести отслеживание на Vuforia Target, которое недоступно в их среде разработки.

Vuforia Engine поддерживает запись с помощью API записи сеансов. Дополнительные сведения см. в статье «Запись и воспроизведение».

Дополнительную информацию о воспроизведении записанного сеанса см. в следующих статьях:

Поддерживаемые платформы

В настоящее время Driver Framework поддерживает портативные устройства Android, iOS и универсальной платформы Windows (UWP). Помимо традиционных телефонов и планшетов, Driver Framework также поддерживает Qualcomm Dragonboard 410c под управлением Android.

В этом разделе представлен общий обзор объектов платформы, которые вы будете использовать для разработки драйвера Kernel-Mode Driver Framework (KMDF). Если не указано иное, вы будете использовать те же объекты для разработки драйвера User-Mode Driver Framework (UMDF), начиная с версии 2 UMDF.

Драйверы Windows Driver Frameworks (WDF) состоят из подпрограммы DriverEntry и набора функций обратного вызова событий, которые определяются объектами Windows Driver Framework, используемыми драйверами на основе каркаса. Функции обратного вызова вызывают методы объекта, экспортируемые платформой. Комплект драйверов Windows (WDK) содержит примеры драйверов WDF, которые демонстрируют, как реализовать функции обратного вызова событий драйвера. Эти образцы можно загрузить из Центра разработки для Windows — Оборудование. Информацию о том, какие образцы доступны, см. в разделах Образцы драйверов KMDF и Образцы драйверов UMDF.

При создании драйвера WDF обычно выполняются следующие действия:

Используйте объект драйвера платформы для представления вашего драйвера.

Подпрограмма драйвера DriverEntry должна вызвать WdfDriverCreate, чтобы создать объект драйвера платформы, представляющий драйвер.Метод WdfDriverCreate также регистрирует функцию обратного вызова EvtDriverDeviceAdd драйвера, которую платформа вызывает каждый раз, когда диспетчер Plug and Play (PnP) сообщает о существовании устройства, поддерживаемого драйвером.

Используйте объекты устройств платформы для поддержки PnP и управления питанием в вашем драйвере.

Все драйверы должны вызывать WdfDeviceCreate, чтобы создать объект устройства платформы для каждого устройства, поддерживаемого драйвером. Устройство может быть частью аппаратного обеспечения, подключенного к компьютеру, или программным устройством. Объекты устройств Framework поддерживают операции PnP и управления питанием, а драйверы могут регистрировать функции обратного вызова событий, которые уведомляют драйвер, когда устройство входит в рабочее состояние или выходит из него.

Дополнительную информацию об объектах устройств платформы см. в разделе Поддержка PnP и управления питанием в вашем драйвере.

Используйте объекты очереди фреймворка и объекты запросов фреймворка для поддержки операций ввода-вывода в драйвере.

Все драйверы, которые получают запросы на чтение, запись или управление вводом-выводом устройства от приложений или других драйверов, должны вызывать WdfIoQueueCreate для создания объектов очереди платформы, представляющих очереди ввода-вывода. Обычно драйверы регистрируют один или несколько обработчиков запросов для каждой очереди ввода-вывода. Когда диспетчер ввода-вывода отправляет запрос ввода-вывода драйверу, платформа создает объект запроса платформы для запроса, помещает объект запроса в очередь ввода-вывода и вызывает один из обработчиков запросов драйвера, чтобы сообщить драйверу. что запрос доступен. Драйвер получает запрос ввода-вывода и может повторно поставить в очередь, завершить, отменить или перенаправить запрос.

Дополнительную информацию об использовании объектов очереди и объектов запросов платформы см. в разделах Объекты очереди платформы и Объекты запросов платформы.

Используйте объекты прерывания платформы для обработки прерываний устройств.

Драйверы, обрабатывающие прерывания устройств, должны вызывать WdfInterruptCreate, чтобы создать объект прерывания инфраструктуры для каждого прерывания и зарегистрировать функции обратного вызова. Эти функции обратного вызова включают и отключают прерывание и служат в качестве подпрограммы обслуживания прерывания (ISR) и отложенного вызова процедуры (DPC) для прерывания.

Дополнительную информацию об объектах прерывания платформы см. в разделе Обработка аппаратных прерываний.

Драйверы KMDF могут использовать объекты включения DMA и объекты транзакций DMA платформы для обработки операций прямого доступа к памяти (DMA) устройства.

Если устройство вашего драйвера KMDF поддерживает операции DMA, драйвер должен вызвать WdfDmaEnablerCreate, чтобы создать объект активатора DMA, и WdfDmaTransactionCreate, чтобы создать один или несколько объектов транзакции DMA. Объект транзакции DMA определяет функцию обратного вызова EvtProgramDma, которая программирует аппаратное обеспечение устройства для выполнения операции DMA.

Дополнительную информацию о поддержке операций прямого доступа к памяти см. в разделе Обработка операций прямого доступа к памяти в драйверах на основе платформы.

Используйте целевые объекты ввода-вывода платформы для отправки запросов ввода-вывода другим драйверам.

Для передачи запросов ввода-вывода другим драйверам (обычно следующему нижестоящему драйверу в стеке драйверов) ваш драйвер отправляет запрос целевому объекту ввода-вывода.

Дополнительную информацию о целевых объектах ввода-вывода см. в разделе Использование целевых объектов ввода-вывода.

Драйвер KMDF может использовать объекты поставщика WMI и объекты экземпляра WMI платформы для поддержки возможностей инструментария управления Windows (WMI).

Большинство драйверов KMDF должны поддерживать WMI и вызывать WdfWmiInstanceCreate для регистрации функций обратного вызова, которые отправляют или получают данные WMI.

Используйте возможности синхронизации платформы.

Все драйверы должны быть осведомлены о проблемах многопроцессорной синхронизации и должны использовать методы синхронизации, предоставляемые платформой.

Используйте дополнительные объекты и функции, предоставляемые платформой.

Среда предоставляет дополнительные объекты, которые может использовать ваш драйвер. Дополнительные сведения об этих объектах см. в разделе Объекты поддержки WDF.



Команда Microsoft Devices рада объявить о выпуске платформы с открытым исходным кодом для разработчиков драйверов Windows — Driver Module Framework (DMF). С помощью DMF вы можете не только легко разрабатывать простые и структурированные драйверы Windows Driver Framework (WDF), но и обмениваться кодом между вашими драйверами.

Фон

За прошедшие годы организация Surface разработала множество продуктов, таких как Pro, Studio, Laptop, Book, с уникальными, инновационными аппаратными возможностями. Чтобы осветить эти возможности, нам часто приходилось писать драйвера и прошивки. Несмотря на то, что эти продукты имели общие черты с точки зрения того, как они взаимодействовали с оборудованием, отдельные группы разработчиков работали изолированно и создавали свои собственные драйверы с нуля или копировали их на основе своего знания существующего кода и модифицировали в соответствии со своими потребностями. Это действительно помогло решить их непосредственные бизнес-задачи, но привело к огромному дублированию кода и накладным расходам на обслуживание.Разработчики с разным уровнем опыта часто создавали множество разных решений для решения одной и той же проблемы, а коду не хватало структуры и качества.

Около трех лет назад команда решила комплексно проанализировать драйверы, написанные для различных продуктов Surface, и начала работу по структурированию кода таким образом, чтобы обеспечить максимальное повторное использование кода с целью повышения эффективности, удобства обслуживания и масштабируемость команд для создания новых продуктов.

Мы начали с того, что разбили отдельные функции драйверов на общую кодовую базу. Эта повторяющаяся работа привела к созданию DMF: расширения WDF, которое предоставляет вам библиотеку новых объектов WDF, называемых модулями DMF. Модули позволяют структурированно взаимодействовать друг с другом, WDF и оборудованием.

Сегодня все драйверы WDF в команде написаны с использованием DMF. Модули хорошо протестированы и могут быть повторно использованы или расширены позже для соответствия новым требованиям. Помимо преимуществ хорошо спроектированных драйверов, исправления ошибок теперь эффективны. Исправление ошибки в модуле автоматически применяется ко всем драйверам, созданным с использованием этого модуля.

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

Архитектура DMF

Давайте начнем с типичного дизайна драйвера WDF.

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

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

Теперь давайте улучшим архитектуру с помощью DMF. Здесь драйвер создается с использованием клиентского модуля и нескольких готовых универсальных служебных модулей. Мы будем ссылаться на код, который использует модуль в качестве клиентского драйвера. Между WDF и отдельными модулями существует тонкий уровень арбитража (DMF) для привязки модулей и отправки событий WDF каждому модулю. Теперь модули взаимодействуют друг с другом и с клиентским драйвером четко определенным образом, как показано стрелками. Вместо того, чтобы все модули совместно использовали контекст устройства, каждый из них использует свою собственную контекстную область для поддержания своего состояния.

Вот некоторые ключевые различия между традиционным драйвером WDF и драйвером WDF на основе DMF:

  • WDF связывается с DMF, а DMF взаимодействует с драйвером.
  • Контекст устройства (показан зеленым) существует независимо в каждом модуле и в коде драйвера клиента. Каждый меньший контекст устройства содержит только те элементы, которые необходимы для этого модуля. Ни один модуль не может получить доступ к контексту устройства другого модуля.
  • Обратные вызовы WDF (показаны красным) теперь существуют независимо в каждом модуле и в клиентском коде. WDF обращается к драйверу клиента. DMF перехватывает этот вызов и отправляет его каждому модулю в дереве созданных модулей. Каждый модуль обрабатывает каждый обратный вызов по своему усмотрению. Наконец, DMF отправляет обратные вызовы обратным вызовам клиентского драйвера.
  • И наконец, обратите внимание на стрелки. Стрелки конкретно показывают поток между модулями и клиентским кодом. В этом примере клиентский код может взаимодействовать только с тремя модулями: ACPI, Button и Stream. Он не может взаимодействовать с GPIO, FIFO, List или Thread. ACPI не может взаимодействовать с FIFO и т. д. Даже не глядя на исходный код, мы хорошо понимаем, как данные передаются в этом драйвере.

Подводя итог, каждый модуль представляет собой автономную единицу. У него есть собственный код, контекст и обратные вызовы. Это упрощает повторное использование кода. Такая организация водителей решает многие проблемы.

Дизайн модулей DMF

DMF следует дизайну и шаблонам взаимодействия WDF. DMF не заменяет WDF и не запрещает драйверу напрямую использовать интерфейсы ОС. DMF упрощает разбиение задач, которые должен выполнять драйвер устройства, на более мелкие блоки.Затем эти меньшие автономные единицы, выполняющие одну задачу, можно записать в виде модулей.

<р>1. Модули DMF используют шаблоны взаимодействия, совместимые с существующими объектами WDF. Как и любой объект WDF, модуль DMF:

  • Имеет структуру CONFIG, методы и обратные вызовы событий.
  • Может быть связан с другими объектами WDF для управления сроком службы.
<р>2. Модули в клиентском драйвере организованы в виде древовидной структуры, поддерживаемой ядром DMF. Ядро отвечает за создание, открытие, закрытие и уничтожение модулей. В свою очередь, каждый модуль отвечает за выделение и освобождение своих собственных ресурсов.

<р>3. Модули, являющиеся родственными друг другу, не могут взаимодействовать напрямую. Только модули в отношениях родитель-потомок могут общаться друг с другом; только родительские модули могут взаимодействовать со своими дочерними модулями (за исключением обратных вызовов).

<р>4. Модули можно расширить, чтобы они соответствовали новым требованиям, или можно создать новый модуль, объединив несколько модулей.

<р>5. Дизайн модуля аналогичен классу в шаблоне объектно-ориентированного программирования. Если вы знакомы со средой выполнения драйверов (DXE) универсального расширяемого интерфейса встроенного ПО (UEFI), вы обнаружите сходство с модулями.)

Модуль DMF

Аналогичная концепция C++

<р>6. Каждый модуль имеет свои замки. Каждый модуль отвечает за блокировку своего собственного частного контекста. Таким образом, блокировка детализирована, но в то же время эффективна и проста для понимания.

<р>7. Модули могут использоваться драйвером клиента или другими модулями; не зависят от кода, который их использует.

<р>8. Модули могут использовать любое количество дочерних модулей. Дочерние модули, в свою очередь, могут использовать любое количество дочерних модулей.

<р>9. DMF предоставляет реализации по умолчанию для многих подпрограмм драйверов, таких как DriverEntry, AddDevice, создание очереди WDF, так что простой драйвер (также известный как драйвер контейнера) можно создать с минимальным количеством кода.

<р>10. Драйверу клиента нужно только создать экземпляр модуля, который нужен драйверу. Требуемые дочерние модули (если они есть) автоматически создаются DMF от имени драйвера.

<р>11. Модули поддерживают наследование. Если вы хотите изменить или добавить возможности в существующий модуль X, легко создать модуль Y, являющийся родительским для X. Затем Y повторно использует X, но при необходимости предоставляет другие функции.

<р>12. Модули могут напрямую получать все обратные вызовы WDF, полученные драйвером клиента.

<р>13. DMF поддерживает все драйверы WDF: KMDF/UMDF, драйверы шины/фильтра/функции, драйверы минипорта, драйверы C/C++.

<р>14. Вы можете легко интегрировать DMF в свои существующие драйверы или легко написать новые драйверы с нуля.

Мы представляем основу для оценки поведения водителей в долгосрочной перспективе для автономных транспортных средств и систем безопасности транспортных средств. Система гибридных состояний и скрытой марковской модели (HSS+HMM), обсуждаемая в этой статье, способна описывать гибридные характеристики сцепления водителя и транспортного средства. В нашей модели ведущие наблюдения следуют непрерывной траектории, которую можно измерить для создания непрерывных оценок состояния. Затем эти непрерывные оценки состояния можно использовать для оценки наиболее вероятного состояния драйвера, используя взаимосвязь между решением и поведением, присущую системе HSS+HMM. Система HSS+HMM включена в структуру HSS, а межсистемная связность определяется с помощью методов обработки сигналов и распознавания образов. Предлагаемый метод подходит для ряда автономных сценариев и сценариев безопасности транспортных средств, таких как оценка намерений других транспортных средств вблизи перекрестков или предотвращение опасных событий вождения, таких как неожиданная смена полосы движения. Система долгосрочной оценки поведения водителей включает в себя расширенную структуру HSS+HMM, которая способна включать внешнюю информацию в процесс оценки. Путем прививки и обрезки метасостояний система HSS+HMM может динамически обновляться, чтобы наилучшим образом отображать выбор драйверов с учетом внешней информации. Также приведены три примера применения для разъяснения теоретической системы.

1. Введение

В Центре интеллектуального транспорта (CITR) Университета штата Огайо мы заинтересованы в решении проблемы киберфизических систем (CPS), связанной с автономными транспортными средствами, безопасно работающими в городских условиях со смешанным движением. . Киберфизические системы относятся к соединению вычислительных и физических элементов системы [1]. Примеры киберфизических систем включают, помимо прочего, роботизированную хирургию, автоматизированное управление дорожным движением и автономные транспортные средства. CPS может устранить многие дорогостоящие и опасные препятствия, необходимые для выполнения обычных человеческих задач. Одной из областей применения CPS является личный транспорт посредством разработки автономных или беспилотных транспортных средств, которые могут произвести революцию в транспорте, исключив людей из цикла вождения.Автономные транспортные средства могут решить некоторые из самых серьезных проблем, связанных с личным и коммерческим транспортом. Конечно, как и в случае с любой новой технологией, для широкого внедрения автономных транспортных средств важно рассмотреть возможный путь внедрения и определить проблемы на этом пути внедрения.

Наиболее вероятным путем широкого внедрения автономных транспортных средств является постепенное включение полностью или частично автономных транспортных средств в текущую транспортную систему. Это соответствует последним разработкам автопроизводителей, внедряющих автомобили с частичными автономными возможностями. Такая среда, в которой одновременно работают как автономные, так и управляемые человеком транспортные средства, известна как городская среда со смешанным движением (MUE). В такой среде автономные транспортные средства будут взаимодействовать с управляемыми людьми транспортными средствами в их обычной работе. Это взаимодействие потребует, чтобы автономные транспортные средства имели возможность получать информацию о транспортных средствах, управляемых человеком, либо посредством связи между транспортными средствами (V2V), либо с помощью бортовых датчиков. Затем автономное транспортное средство должно иметь возможность определять поведение других транспортных средств исключительно на основе полученной или измеренной информации. Эта способность имеет решающее значение для предотвращения и/или снижения угрозы дорожно-транспортных происшествий. Такие требования необходимы и при разработке автомобилей с усовершенствованными системами безопасности. Способность автономного транспортного средства определять вероятное поведение автомобиля, управляемого человеком, на основе данных датчика или V2V называется оценкой поведения водителя.

В нашей модели водители принимают дискретные решения на более высоком уровне, за которыми следует непрерывная траектория транспортного средства более низкого уровня. Рассмотрим дискретное решение, которое водитель, приближающийся к перекрестку, может принять: «Повернуть направо». Хотя это решение может быть обусловлено многими причинами, транспортное средство следует измеримому непрерывному пути, основанному на этом решении. В этом примере транспортное средство может снизить скорость, иметь отрицательное ускорение, использовать сигнал поворота, изменить рыскание и скорость рыскания и, в конечном итоге, выполнить поворот направо на перекрестке. Наша работа заключается в оценке состояния водителя более высокого уровня на основе измерений непрерывных наблюдений за транспортным средством. Для целей этой статьи термин «водитель» используется для описания комбинации человека-оператора и транспортного средства, а поведение, демонстрируемое этой комбинацией, называется просто поведением водителя. Для точного определения поведения водителя необходима структура, способная описать качественный и количественный характер оценки поведения водителя. Основная тема этой статьи — расширение ранее разработанной системы оценки поведения водителей.

В нашей ранее разработанной структуре представление гибридной системы состояний (HSS) используется для предоставления качественного представления о том, как связаны решения водителя и динамика автомобиля. Представление HSS использовалось в ряде работ [2–5]. В нашем приложении мы используем HSS как механизм моделирования и оценки поведения водителя для автономных транспортных средств. HSS обеспечивает интуитивно понятную архитектуру, в которой непрерывное состояние транспортного средства и дискретные состояния водителя представлены в виде двух уровней, которые взаимодействуют друг с другом, чтобы обеспечить общее представление о том, как взаимодействуют водители и транспортные средства. Ключевым элементом этой архитектуры является возможность использовать сходство моделей транспортных средств, работающих в различных ситуациях. Взаимосвязь между состоянием драйвера более высокого уровня и непрерывными измерениями более низкого уровня осуществляется с помощью инструментов, заимствованных из сообщества обработки сигналов и распознавания образов.

Скрытые марковские модели (HMM) [6] используются для определения того, как изменения в состоянии водителя соответствуют изменениям в непрерывном состоянии транспортного средства.

Количественные аспекты (системные взаимосвязи HSS) оценки поведения водителя обеспечиваются скрытыми марковскими моделями (HMM) [6]. HMM — это стохастические модели, которые можно использовать для определения взаимосвязи между относительно простыми для измерения наблюдениями (непрерывная траектория транспортного средства в нашем приложении) и скрытыми состояниями, которые, как говорят, генерируют эти наблюдения (дискретные состояния водителя в нашем приложении). Хотя HMM добились значительных успехов в таких областях, как распознавание речи [7], они также использовались для оценки поведения человека [8] и ранее для распознавания движущихся событий [9]. Чтобы наилучшим образом смоделировать непрерывное состояние транспортного средства, мы используем гауссовские смешанные модели (GMM) для изучения HMM. Оценка состояния драйвера по набору непрерывных наблюдений выполняется с помощью метода распознавания образов, который находит наиболее вероятное состояние драйвера по набору непрерывных наблюдений.В целом, HSS обеспечивает качественную архитектуру соединения водителя и транспортного средства, а HMM определяют количественную взаимосвязь между двумя уровнями архитектуры. Мы называем эту комбинацию HSS и HMM HSS+HMM.

В [10] мы представили результаты, полученные для оценки поведения водителя с использованием системы HSS+HMM. Система, представленная в этой статье, выполняет точную оценку поведения водителя на перекрестках. Эта система была расширена за счет включения маневров смены полосы движения и событий на шоссе, чтобы лучше описать поведение автомобиля в долгосрочной перспективе. Для целей этой статьи мы определяем «долгосрочное поведение» как длительные периоды вождения, которые могут включать транспортное средство, работающее на перекрестках, автомагистралях и магистралях. Предыдущие исследования, такие как [11–13], рассматривали только определенные аспекты долгосрочного поведения водителя.

Эта статья начинается с обзора системы HSS+HMM, в котором мы обсуждаем разработанную систему и эксперимент по сбору данных. В разделе 3 обсуждается текущая реализация системы, а также ограничения, препятствующие оценке долгосрочного поведения драйвера. Раздел 4 обсуждает предлагаемое теоретическое расширение системы HSS+HMM вместе с определениями. Наконец, мы обсудим три примера реализации предлагаемой системы, обсудим направления будущей работы и завершим статью.

2. Система HSS+HMM

Система HSS+HMM представляет собой объединение двух моделей: гибридных систем состояний и скрытых марковских моделей. HSS используется для описания взаимодействия между непрерывными наблюдениями за транспортным средством и дискретным набором решений водителя, которые привели к этим наблюдениям. HSS состоит из двух слоев. Верхний уровень представляет собой систему дискретных состояний (DSS), которая инкапсулирует дискретные решения драйвера; нижний уровень представляет собой систему непрерывного состояния (CSS), которая инкапсулирует непрерывные наблюдения за транспортным средством. Эту архитектуру можно увидеть на рис. 2. В нашей модели мы предполагаем, что водитель действует в пространстве состояний в DSS, и на основе решения, принятого на этом более высоком уровне, транспортное средство следует некоторой наблюдаемой непрерывной траектории. В других исследованиях, таких как [14], системы моделирования рассматриваются как HSS для таких приложений, как автономные транспортные средства. Состояния DSS моделируются как конечный автомат (FSM). В нашем приложении мы предполагаем, что непрерывные оценки состояния (оценка состояния CSS) могут выполняться с помощью межтранспортных средств (v2v) или бортовых датчиков.

Учитывая последовательность оценок состояния CSS, полученных от бортовых датчиков, определение состояния DSS более высокого уровня выполняется с использованием скрытых марковских моделей и методов распознавания образов. Используя процесс сбора данных, описанный в разделе 2.1, многие HMM обучаются с использованием метода Баума-Уэлча. Детали этого процесса описаны в [10]. По сути, сначала мы обучаем ряд моделей HMM,

, которые соответствуют

различное действие транспортного средства. Затем мы используем прямой алгоритм для вычисления вероятностей

Читайте также: