В этом примере показано, как выполнить приложение предупреждения о прямом столкновении (FCW) с данными датчика и изображения, воспроизводимыми в реальном времени через протоколы CAN FD и TCP/IP. Записанные данные из набора датчиков, установленных на испытываемом транспортном средстве, воспроизводятся в реальном времени, как если бы они поступали через сетевые интерфейсы транспортного средства. Toolbox™ сети транспортных средств и Toolbox™ управления приборами обеспечивают эти интерфейсы. Эта настройка используется для тестирования системы FCW, разработанной с использованием функций Toolbox™ автоматизированного вождения. Для получения помощи в проектировании и разработке фактических алгоритмов FCW см. пример «Предупреждение о столкновении в прямом направлении с использованием слияния датчиков».
В этом примере используются виртуальные каналы CAN FD из Vector. Эти каналы виртуальных устройств доступны при установке пакета Vector Driver Setup из www.vector.com.
В этом примере представлены два основных компонента:
Передатчик: Отправляет данные датчика и изображения через CAN FD и TCP/IP. Эта часть представляет образец среды транспортного средства. Он воспроизводит предварительно записанные данные так, будто это живой автомобиль.
Приемник: Собирает все данные и выполняет алгоритм FCW и визуализации. Эта часть представляет прикладной компонент.
Чтобы выполнить пример, части передатчика и приемника выполняются из отдельных сеансов MATLAB. При этом реплицируется источник данных, существующий вне сеанса MATLAB, выполняющего функции инструмента разработки. Кроме того, этот пример позволяет запускать приложение FCW в нескольких режимах выполнения (интерпретируемых и MEX) с различными характеристиками производительности.

Передающее приложение выполняется через helperStartTransmitter функция. Он запускает отдельный процесс MATLAB для выполнения вне текущего сеанса MATLAB. Датчик инициализируется и начинает автоматически посылать данные датчика и изображения. Для запуска датчика используйте system команда.
system('matlab -nodesktop -nosplash -r helperStartTransmitter &')

Для открытия принимающего приложения FCW выполните команду helperStartReceiver функция. Нажмите кнопку ПУСК, чтобы начать прием, обработку и визуализацию данных. Вы можете исследовать helperStartReceiver функция, чтобы увидеть, как Vehicle Network Toolbox CAN FD функции, Instrument Control Toolbox TCP/IP функции и автоматизированные инструменты вождения используются совместно друг с другом.
helperStartReceiver('interpreted')

После готовности остановите приложение датчика с помощью кнопки закрытия окна в окне команд. Нажмите кнопку STOP в принимающем приложении FCW, а затем закройте его окно.
При остановке принимающего приложения FCW появляется график, детализирующий эксплуатационные характеристики приложения. Он показывает время, затраченное на получение данных, обработку алгоритма FCW и выполнение визуализации. Сравнительный анализ полезен для демонстрации частей настройки, требующих повышения производительности. Ясно, что значительная часть времени тратится на выполнение алгоритма FCW. В следующем разделе рассматривается создание кода в качестве стратегии повышения производительности.

Если в рабочем процессе требуется более высокая производительность, для создания и компиляции кода MATLAB в качестве кода MEX можно использовать MATLAB Coder™. Чтобы создать этот пример в виде кода MEX, используйте helperGenerateCode функция. Сборка компилирует приложение FCW в функцию MEX, вызываемую непосредственно в MATLAB.
helperGenerateCode('mex')
Перезапустите приложение датчика.
system('matlab -nodesktop -nosplash -r helperStartTransmitter &')
Также можно перезапустить принимающее приложение FCW. На этот раз с входным аргументом для использования компилированного кода MEX, построенного на предыдущем шаге.
helperStartReceiver('mex')
После готовности остановите и закройте датчик и примите приложение FCW. Сравнивая график времени для выполнения MEX с графиком интерпретируемого режима, можно увидеть улучшение производительности алгоритма FCW.

В примере используется один компьютер для моделирования всей системы с виртуальным подключением. Как таковая его производительность подразумевается как приближение. Этот пример можно также выполнить с использованием двух компьютеров (один в качестве передатчика, другой в качестве приемника). Это представляло бы собой скорее реальный сценарий с живыми данными. Для этого можно внести простые изменения в код примера.
Изменение связи CAN FD с виртуальных на физические устройства требует редактирования кода передачи и приема для вызова canChannel (Vehicle Network Toolbox) с использованием аппаратного устройства вместо виртуальных каналов. Возможно, также потребуется изменить вызов на configBusSpeed (Vehicle Network Toolbox) в зависимости от возможностей оборудования. Эти вызовы находятся в helperStartReceiver и dataTransmitter функции примера.
Изменение связи TCP/IP для нескольких компьютеров требует настройки адреса TCP/IP передатчика с локального узла (127.0.0.1) на статическое значение (рекомендуется 192.168.1.2). Этот адрес устанавливается первым на хост-передающем компьютере. После этого измените tcpipAddr переменной в helperStartReceiver функция для сопоставления.
После настройки и физического подключения можно запустить приложение датчика на одном компьютере и приложение FCW на другом.
tcpip(Панель инструментов управления приборами) | canChannel(Панель инструментов сети транспортных средств) | canDatabase(Панель инструментов сети транспортных средств) | configBusSpeed(Панель инструментов сети транспортных средств)