Сгенерируйте автономный узел ROS 2 от Simulink®

Этот пример показывает вам, как сгенерировать и создать автономный узел ROS 2 из модели Simulink®. Вы конфигурируете модель, чтобы сгенерировать Код С++ для автономного узла ROS 2. Затем сборка и запуск узел ROS 2 на вашем хосте - компьютере.

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

Сконфигурируйте модель для генерации кода

Сконфигурируйте модель, чтобы сгенерировать Код С++ для автономного узла ROS 2. Модель является пропорциональным контроллером, введенным в Управлении с обратной связью поддерживающего ROS Робота по примеру ROS 2.

  • Откройте модель управления с обратной связью робота, сконфигурированную для ROS 2. В качестве альтернативы call open_system("robotControllerROS2").

  • Под вкладкой Robot кликните по настройкам Hardware. В панели Аппаратной реализации Аппаратный раздел настроек платы содержит настройки, характерные для сгенерированного пакета ROS 2, такие как информация, которая будет включена в package.xml файл. Поменяйте Обслуживающее имя на ROS 2 Example User.

  • Модель требует массивов переменного размера. Чтобы включить эту опцию, проверяйте сигналы переменного размера под Генерацией кода> Интерфейс> Программная среда.

  • В панели Решателя гарантируйте, что Тип Решателя установлен в Фиксированный шаг и размер Фиксированного шага набора к 0.05. В сгенерированном коде размер Фиксированного шага задает фактический временной шаг в секундах, который используется для цикла обновления модели (см. Подписание Кода, Сгенерированного из Модели (Simulink Coder)). Это может быть сделано меньшим (e.g., 0.001 или 0.0001), но в текущих целях 0.05 достаточно.

  • Нажать ОК.

Сгенерируйте узел ROS 2 C++

В этой задаче вы генерируете код для автономного узла ROS 2, и автоматически создаете и запускаете его на хосте - компьютере.

  • В MATLAB®, превращаются текущая папка в местоположение, где у вас есть разрешение записи.

  • Под вкладкой Simulation, в Готовят, выбирают ROS Toolbox> ROS Network.

  • Установите Доменный ID (ROS 2) сети ROS 2. Этот пример использует Доменный ID в качестве 25.

  • Во вкладке Robot, от выпадающего списка раздела Deploy, нажимают Build & Run. Если вы получаете какие-либо ошибки о несоответствии типа шины, закрываете модель, очищаете все переменные из основного рабочего пространства MATLAB и вновь открыли модель. Нажмите на ссылку Диагностики Представления в нижней части панели инструментов модели, чтобы видеть выход процесса сборки.

Если генерация кода завершается, сборки узла ROS 2 в существующей рабочей папке начинает запускаться автоматически. При выполнении в Windows® открывается Командное окно. Не закрывайте окно, но используйте Ctrl+C, чтобы завершить работу узла ROS 2.

Используйте ros2 node перечислять все рабочие узлы - сеть ROS 2. robotControllerROS2 должен быть в отображенном списке узлов.

ros2('node','list')
/robotControllerROS2
/ros_bridge

Проверьте, что развернутый узел публикует данные по теме ROS 2, /cmd_vel, управлять движением симулированного робота.

ros2('topic','list')
/clock
/cmd_vel
/gazebo/link_states
/gazebo/model_states
/imu
/joint_states
/odom
/parameter_events
/rosout
/rosout_agg
/scan
/tf