В этом примере показано, как использовать 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)...
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 включил NVIDIA графический процессор.
NVIDIA инструментарий CUDA и драйвер.
Библиотека NVIDIA cuDNN.
Переменные окружения для компиляторов и библиотек. Для получения дополнительной информации смотрите Стороннее Оборудование и Подготовку Необходимых как условие продуктов.
Открытое диалоговое окно Параметров конфигурации 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 на локальной хост-машине, в разделе Connect вкладки ROS, набор Развертывается к к Localhost
. Нажмите кнопку Build and Run от вкладки ROS, чтобы развернуть узел. В конце процесса сборки вы будете видеть, что узел ROS работает на локальной хост-машине.