Применение системы позиционирования DDS

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

Импорт определений DDS для системы позиционирования

Для системы позиционирования определения DDS (для примера, Областей, тем, типов и политик QoS) были заданы в XML. В общем рабочем процессе DDS Blockset для импорта этих определений используется приложение DDS Quick Start. В данном примере XML уже импортирован. Чтобы просмотреть спецификации XML для системы позиционирования, откройте файл XML positioning_system.xml. Чтобы просмотреть представление этих определений в DDS Blockset, откройте DDS-словарь:

open positioning_system.sldd

Моделируйте и конфигурируйте компонент датчика

Первым компонентом в системе позиционирования являются датчики. Система позиционирования использует акселерометр и GPS, каждый из которых представлен моделью, для оценки положения транспортного средства. Каждая модель датчика сконструирована как Publisher. Чтобы просмотреть структуру модели и интерфейс, откройте модели:

open_system('ex_accelerometer');

open_system('ex_gps');

В каждой модели датчика можно просмотреть каждый аспект Publisher, смоделированный в Simulink:

  1. Логика модели Sensor, которая состоит из блока Function, который имитирует входные данные датчика.

  2. Блок Write DDS Sample, который преобразует данные датчика из типа данных Simulink в тип данных DDS.

  3. Порт вывода, который отправляет тип данных DDS.

В дополнение к моделированию датчиков, интерфейс DDS был сконфигурирован для каждой модели датчика. Вы можете просмотреть интерфейс DDS для каждого датчика в редакторе Отображения:

  1. На панели инструментов нажмите Code Interface и выберите Individual Elements Code Mappings.

  2. На вкладке Outports можно просмотреть, что для параметра Configuration Mode задано значение Use Writer XML Path. Эта конфигурация устанавливает для DataWriters определения, указанные в XML.

Моделируйте и конфигурируйте компонент оценки положения

Второй компонент является оценочной моделью. Оценочная модель получает данные от датчиков и вычисляет расчетное положение транспортного средства. Модель оценки строится как абонент датчиков и как издатель компонента отображения. Чтобы просмотреть структуру модели и интерфейс, откройте модель:

open_system('ex_positionestimator');

В модели оценки можно просмотреть каждый аспект Subscriber и Publisher, смоделированных в Simulink:

  1. Модель оценки имеет два входных порта, сконфигурированных как типы данных DDS, чтобы получить данные датчика.

  2. Модель имеет блок Take DDS Sample, присоединенный к каждому Inport, чтобы преобразовать типы данных DDS в типы данных Simulink.

  3. Модель оценки вычисляет логику, чтобы оценить положение транспортного средства.

  4. Модель использует блок Write DDS Sample, чтобы преобразовать типы данных Simulink в типы данных DDS.

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

В дополнение к моделированию модели оценки, интерфейс DDS был сконфигурирован для модели оценки. Вы можете просмотреть интерфейс DDS в редакторе Code Mappings:

  1. На панели инструментов нажмите Code Interface и выберите Individual Elements Code Mappings.

  2. На вкладке Inports можно просмотреть, что для параметра Configuration Mode задано значение Use Reader XML Path. Эта конфигурация устанавливает для DataReaders определения, указанные в XML.

  3. На вкладке Outports можно просмотреть, что для параметра Configuration Mode задано значение Use Writer XML Path. Эта конфигурация устанавливает значение DataWriter в определении, указанном в XML.

Модель и настройте Отображение компонент

Третьим компонентом является модель отображения. Модель отображения получает и графически отображает предполагаемое положение транспортного средства. Модель отображения строится как абонент компонента оценки. Чтобы просмотреть структуру модели и интерфейс, откройте модель:

open_system('ex_resultdisplay');

В модели отображения можно просмотреть каждый аспект приложения, которое действует как Подписчик, смоделированный в Simulink:

  1. Модель оценки имеет входной порт, сконфигурированный как тип данных DDS, чтобы принять оценку положения транспортного средства.

  2. Модель имеет Взятие блок Выборки DDS для преобразования типа данных DDS в тип данных Simulink, чтобы он мог отображать оценку транспортного средства.

  3. Логика модели компонента отображения графически показывает оценку положения транспортного средства.

В дополнение к моделированию модели отображения был сконфигурирован интерфейс DDS. Вы можете просмотреть интерфейс DDS в редакторе Code Mappings:

  1. На панели инструментов нажмите Code Interface и выберите Individual Elements Code Mappings.

  2. На вкладке Inports можно просмотреть, что для параметра Configuration Mode задано значение Use Reader XML Path. Эта конфигурация устанавливает DataReader в определение, заданное в XML.

Построение и развертывание системы позиционирования

Чтобы визуально показать приложение системы позиционирования DDS, этот пример моделирует сеть DDS, чтобы показать результаты системы позиционирования. Блок Queue помещается между блоками модели Accelerometer и Position Estimator, чтобы симулировать HISTORY QoS. Когда вы симулируете приложение, вы можете увидеть на приборной панели, что система оценки положения производит более точное положение транспортного средства, чем вход датчика.

open_system('ex_positioningsystem');

set_param('ex_positioningsystem/DDS Samples: GPSPos','TimeSpan','10');
set_param('ex_positioningsystem/DDS Samples: EstPos','TimeSpan','10');
sim('ex_positioningsystem');
set_param('ex_positioningsystem/DDS Samples: GPSPos','TimeSpan','100');
set_param('ex_positioningsystem/DDS Samples: EstPos','TimeSpan','100');

Чтобы увидеть эффект качества обслуживания (QoS) на оценку, если QoS не соблюдается, результаты неточны.

set_param(['ex_positioningsystem/Queue for HISTORY' newline 'QoS Simulation'], ...
    'Commented','through')
set_param('ex_positioningsystem/DDS Samples: GPSPos','TimeSpan','10');
set_param('ex_positioningsystem/DDS Samples: EstPos','TimeSpan','10');
sim('ex_positioningsystem');
set_param('ex_positioningsystem/DDS Samples: GPSPos','TimeSpan','100');
set_param('ex_positioningsystem/DDS Samples: EstPos','TimeSpan','100');

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