Этот пример показывает вам, как сгенерировать и создать автономный узел ROS 2 из модели Simulink®. Вы конфигурируете модель, чтобы сгенерировать Код С++ для автономного узла ROS 2. Затем сборка и запуск узел ROS 2 на вашем хосте - компьютере.
Этот пример требует Simulink Coder™ и Embedded Coder™.
Смотрите Виртуальную машину с Бодрым ROS 2 и Gazebo для получения инструкций относительно подготовки симулированного робота.
Рассмотрите Управление с обратной связью поддерживающего ROS Робота по примеру ROS 2.
Смотрите отказ ROS 2 сборки модели в ROS поддержка Simulink и ограничения.
Компилятор C++, чтобы совпадать со средой сборки (Visual Studio 2017, XCode 10.x, GCC 6.3.x)
Сконфигурируйте модель, чтобы сгенерировать Код С++ для автономного узла 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)). Это может быть сделано меньшим (например, 0.001 или 0.0001), но в текущих целях 0.05 достаточно.
Нажать ОК.
В этой задаче вы генерируете код для автономного узла 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