Генерация кода графического процессора для обнаружения маршрута в Simulink

В этом примере показано, как сгенерировать код CUDA® для модели Simulink®, которая может обнаружить и вывести контуры маркера маршрута на изображении. Этот пример берет изображение RGB в качестве входа и использует imresize (Image Processing Toolbox), rgb2gray, ordfilt2 (Image Processing Toolbox), hough (Image Processing Toolbox), houghpeaks (Image Processing Toolbox) и houghlines Функции (Image Processing Toolbox), которые являются частью Image Processing Toolbox™, чтобы обнаружить маркировки маршрута. Этот пример сопровождает Обнаружение Маршрута на графическом процессоре при помощи Функции houghlines.

Этот пример иллюстрирует следующие концепции:

  • Смоделируйте приложение обнаружения маршрута в Simulink при помощи функций обработки изображений.

  • Сконфигурируйте модель для генерации кода графического процессора.

  • Сгенерируйте исполняемый файл CUDA для модели Simulink.

Необходимые условия

Проверьте среду графического процессора

Чтобы проверить, что компиляторы и библиотеки, необходимые для выполнения этого примера, настраиваются правильно, используйте coder.checkGpuInstall функция.

envCfg = coder.gpuEnvConfig('host');
envCfg.BasicCodegen = 1;
envCfg.Quiet = 1;
coder.checkGpuInstall(envCfg);

Обнаружение маршрута с помощью houghlines Модель Simulink

Модель Simulink для обнаружения маршрута показывают.

open_system('lane_detection');

Lane Detection подсистема содержит MATLAB Function блокируйтесь, который берет изображение интенсивности, как введено и обеспечивает обнаруженные маршруты, как выведено. Эта функция основана на реализации алгоритма обнаружения маршрута с помощью houghlines как описано в Обнаружении Маршрута на графическом процессоре при помощи примера Функции houghlines. Когда модель запускается, Visualization блок отображается, маршрут обнаружил выходное изображение.

Запустите симуляцию

Открытое диалоговое окно Configuration Parameters.

В Целевой панели Симуляции выберите ускорение GPU.

Запустите симуляцию в Режиме normal mode.

set_param('lane_detection', 'SimulationMode', 'Normal');
sim('lane_detection');

Сгенерируйте и создайте модель Simulink

В панели Генерации кода выберите Language как C++ и включите, Генерируют код графического процессора.

Открытая Целевая панель Симуляции. В Продвинутых параметрах включите порог Динамического выделения памяти в функциях MATLAB. Для получения дополнительной информации смотрите Динамическое выделение памяти в функциях MATLAB (Simulink)

Генерация Открытого кода> панель графического процессора Кода. В Библиотеках подкатегории включите cuBLAS, cuSOLVER и cuFFT.

Сгенерируйте и создайте модель Simulink на хосте графический процессор при помощи rtwbuild команда. Генератор кода помещает файлы в папку сборки, подпапку под названием lane_detection_ert_rtw под вашей текущей рабочей папкой.

status = evalc("rtwbuild('lane_detection')");

Очистка

Закройте модель Simulink.

close_system('lane_detection');