Подпишите следующего робота Используя алгоритм обнаружения YOLOv2 с ROS в Simulink

В этом примере показано, как использовать Simulink®, чтобы управлять симулированным роботом, работающим на отдельном ОСНОВАННОМ НА ROS средстве моделирования. Это затем показывает, как сгенерировать CUDA-оптимизированный-код для узла ROS, из модели Simulink и развернуть его в localhost устройство.

В этом примере вы запускаете модель, которая реализует следующий за знаком алгоритм и управляет симулированным роботом, чтобы следовать, путь на основе входит в систему среда. Алгоритм получает информацию о местоположении и информацию о камере от симулированного робота, который запускается в отдельном ОСНОВАННОМ НА ROS средстве моделирования. Алгоритм обнаруживает цвет знака с помощью детектора YOLO v2 и отправляет скоростные команды, чтобы повернуть робота на основе цвета. В этом примере алгоритм спроектирован, чтобы повернуть налево, когда робот сталкивается с синим знаком, и поверните направо, когда робот сталкивается с зеленым знаком. Наконец робот останавливается, когда он сталкивается с красным знаком.

Чтобы видеть, что этот пример использует ROS 2 или MATLAB®, смотрите Знак Следовать за Роботом с ROS в MATLAB.

Запустите средство моделирования робота

Запустите ОСНОВАННОЕ НА ROS средство моделирования для робота с дифференциальным приводом и сконфигурируйте связь Simulink® со средством моделирования робота.

Этот пример использует виртуальную машину (VM) доступную для скачивания в Виртуальной машине с Мелодичным ROS 2 и Gazebo.

  • Запустите рабочий стол виртуальной машины Ubuntu®.

  • В рабочем столе Ubuntu кликните по Последователю Знака Gazebo значок ROS, чтобы запустить мир Gazebo, созданный для этого примера.

Получите предварительно обученную сеть обнаружения знака

Эта функция загружает YoloV2DirectionSignRecognitionModel.mat файл, если, уже не присутствует.

exampleHelperGetYoloV2DirectionSignRecognitionNetwork()
Downloading pretrained lane detection network (58b MB)...

Открытая модель и конфигурирует Simulink

Setup настройки ROS Simulink, чтобы связаться со средством моделирования робота.

Откройте модель в качестве примера.

open_system('signFollowingRobotYOLOv2ROS.slx');

Сконфигурировать сетевые настройки для ROS.

  • От вкладки Simulation Подготовьте группу, выберите ROS Network.

  • Задайте IP-адрес и номер порта ведущего устройства ROS в Gazebo. В данном примере ведущим устройством ROS в Gazebo является 192.168.203.128:11311. Введите 192.168.203.128 в поле ИМЕНИ УЗЛА/IP-АДРЕСА и 11311 в поле Port Number.

  • Нажмите ОК, чтобы применить изменения и закрыть диалоговое окно.

На каждом временном шаге алгоритм обнаруживает знак от канала камеры, выбирает поворот и управляет им вперед. Обнаружение знака сделано с помощью предварительно обученного детектора объектов YOLO v2 в подсистеме Обнаружения объектов Глубокого обучения модели.

open_system('signFollowingRobotYOLOv2ROS/Deep Learning Object Detection');

Знак, Отслеживающий Логическую подсистему, реализует график Stateflow®, который берет в обнаруженном размере изображения и координатах от Обнаружения объектов Глубокого обучения и обеспечивает линейный и скорость вращения, чтобы управлять роботом.

open_system('signFollowingRobotYOLOv2ROS/Sign Tracking Logic');

Запустите модель

Открытое диалоговое окно Параметров конфигурации signFollowingRobotYOLOv2ROS модель. В Целевой панели Симуляции выберите ускорение GPU. В группе Глубокого обучения выберите целевую библиотеку как cuDNN.

set_param('signFollowingRobotYOLOv2ROS','GPUAcceleration','on');
set_param('signFollowingRobotYOLOv2ROS','SimDLTargetLibrary','cudnn');
set_param('signFollowingRobotYOLOv2ROS','DLTargetLibrary','cudnn');

Запустите модель и наблюдайте поведение робота в средстве моделирования робота.

  • Видео средства просмотра показывают фактический канал камеры и обнаруженное изображение знака.

  • В средстве моделирования робот следует за знаком и поворотами на основе цвета.

  • Симуляция останавливается автоматически, если робот достигает красного знака в конце.

Сгенерируйте и разверните CUDA-оптимизированный узел ROS

Третье лицо Пререкуизитис

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

Открытое диалоговое окно Параметров конфигурации signFollowingRobotYOLOv2ROS модель. В панели Аппаратной реализации выберите Robot Operating System (ROS) for Hardware Board и задайте соответствующего Поставщика Устройства и Тип устройства. Затем в панели Генерации кода выберите Language как C++ и включите, Генерируют код графического процессора.

set_param('signFollowingRobotYOLOv2ROS','TargetLang','C++');
set_param('signFollowingRobotYOLOv2ROS','GenerateGPUCode','CUDA');

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

set_param('signFollowingRobotYOLOv2ROS','GPUcuBLAS','on');
set_param('signFollowingRobotYOLOv2ROS','GPUcuSOLVER','on');
set_param('signFollowingRobotYOLOv2ROS','GPUcuFFT','on');

Разверните узел ROS

Чтобы сконфигурировать развертывание узла ROS на локальной хост-машине, в разделе Connect вкладки ROS, набор Развертывается к к Localhost. Нажмите кнопку Build and Run от вкладки ROS, чтобы развернуть узел. В конце процесса сборки вы будете видеть, что узел ROS работает на локальной хост-машине.

Для просмотра документации необходимо авторизоваться на сайте