В этом примере показано, как выполнить приложение предупреждения прямого столкновения (FCW) с датчиком и данными зрения, воспроизводимыми в реальном времени через протоколы CAN FD и TCP/IP. Зарегистрированные данные из набора датчиков, установленного на тестовом транспортном средстве, воспроизводятся в реальном времени, как если бы они поступали через сетевые интерфейсы транспортного средства. Эти интерфейсы обеспечивают Vehicle Network Toolbox™ и Instrument Control Toolbox™. Эта настройка используется для тестирования системы FCW, разработанной с использованием функций Automated Driving Toolbox™. Для помощи в разработке и проекте фактических алгоритмов FCW, смотрите пример предупреждения прямого столкновения с использованием Sensor Fusion.
Этот пример использует виртуальные каналы CAN FD от вектор. Эти каналы виртуальных устройств доступны с установкой пакета 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
функция. Можно нажать START, чтобы начать прием, обработку и визуализацию данных. Можно исследовать helperStartReceiver
функция для просмотра функций Vehicle Network Toolbox CAN FD, Instrument Control Toolbox TCP/IP и возможностей Automated Driving Toolbox используются совместно друг с другом.
helperStartReceiver('interpreted')
Когда приложение передатчика будет готово, остановите его с помощью кнопки close window в командном окне. Нажмите STOP на принимающем приложении FCW, а затем закройте его окно.
Когда принимающее приложение FCW останавливается, появляется график, детализирующий характеристики эффективности приложения. Это показывает время, потраченное на прием данных, обработку алгоритма FCW и выполнение визуализации. Бенчмаркинг полезен, чтобы показать части настройки, которые нуждаются в улучшении эффективности. Понятно, что значительный фрагмент времени тратится на выполнение алгоритма FCW. В следующем разделе исследуйте генерацию кода как стратегию повышения эффективности.
Если более высокая эффективность является требованием в вашем рабочем процессе, можно использовать MATLAB Coder™ для генерации и компиляции кода MATLAB в качестве кода MEX. Чтобы создать этот пример в качестве кода MEX, используйте helperGenerateCode
функция. Сборка скомпилирует приложение FCW в MEX-функцию, вызываемую непосредственно в MATLAB.
helperGenerateCode('mex')
Перезапустите приложение передатчика.
system('matlab -nodesktop -nosplash -r helperStartTransmitter &')
Можно также перезапустить принимающее приложение FCW. На этот раз с входным параметром использовать скомпилированный код MEX, созданный на предыдущем шаге.
helperStartReceiver('mex')
Когда вы готовы, остановите и закройте передатчик и принимающее приложение FCW. Сравнивая график времени для выполнения MEX с графиком интерпретированного режима, можно увидеть улучшение эффективности для алгоритма FCW.
В примере используется один компьютер, чтобы симулировать всю систему с виртуальной связью. Как таковая, его эффективность подразумевается как приближение. Можно также выполнить этот пример, используя два компьютера (один как передатчик, один как приемник). Это будет представлять собой более реальный сценарий данных в реальном времени. Чтобы добиться этого, можно сделать простые изменения в коде примера.
Изменение связи CAN FD с виртуальных на физические устройства требует редактирования кода передачи и приема, чтобы вызвать canChannel
использование аппаратного устройства вместо виртуальных каналов. Вам также может потребоваться изменить вызов на configBusSpeed
в зависимости от возможностей оборудования. Эти вызовы находятся в helperStartReceiver
и dataTransmitter
функций примера.
Изменение связи TCP/IP для нескольких компьютеров требует настройки TCP/IP-адреса передатчика с локального хоста (127.0.0.1) на статическое значение (рекомендуется 192.168.1.2). Этот адрес устанавливается первым на хост-передающем компьютере. После измените tcpipAddr
переменная в helperStartReceiver
функция, которая соответствует.
После настройки и подключения физически можно запустить приложение передатчика на одном компьютере и приложение FCW на другом.