В этом примере показано, как создать и построить автономный узел ROS 2 из модели Simulink ®. Модель настраивается для создания кода C++ для автономного узла ROS 2. Затем создайте и запустите узел ROS 2 на хост-компьютере .
В этом примере требуется Simulink Coder™ и Embedded Coder™.
Загрузите виртуальную машину с помощью инструкций в разделе Начало работы с беседкой и моделируемым TurtleBot.
Просмотрите пример управления обратной связью робота с поддержкой ROS над ROS 2.
См. раздел Отказ сборки модели ROS 2 в разделе Поддержка и ограничения ROS Simulink.
Для проверки наличия соответствующего программного обеспечения сторонних производителей см. раздел Системные требования ROS.
Настройте модель для генерации кода C++ для автономного узла ROS 2. Модель представляет собой пропорциональный контроллер, представленный в примере управления обратной связью робота с поддержкой ROS над ROS 2.
Откройте модель управления обратной связью робота, сконфигурированную для ROS 2. Также можно позвонить open_system("robotControllerROS2").
На вкладке ROS в разделе Prepare (Подготовка) выберите Hardware settings (Параметры оборудования). На панели «Hardware implementation» раздел «Hardware board settings» содержит настройки, относящиеся к сгенерированному пакету ROS 2, такие как информация, которая будет включена в package.xml файл. Изменить имя сопровождающего на ROS 2 Example User.
Для модели требуются массивы переменного размера. Чтобы включить этот параметр, проверьте сигналы переменного размера в разделе «Создание кода» > «Интерфейс» > «Программная среда».
На панели «Решатель» убедитесь, что для параметра «Тип решателя» задано значение «Фиксированный шаг», а для параметра «Фиксированный размер шага» - 0.05. В сгенерированном коде размер фиксированного шага определяет фактический временной шаг в секундах, который используется для цикла обновления модели (см. Выполнение кода, сгенерированного из модели (Simulink Coder)). Его можно сделать меньшим (например, 0,001 или 0,0001), но для текущих целей достаточно 0,05.
Нажмите кнопку ОК.
В этой задаче создается код для автономного узла ROS 2, автоматически создается и запускается на хост-компьютере.
В MATLAB ® измените текущую папку на папку с разрешением на запись.
На вкладке Моделирование (Simulation) в разделе Подготовка (Prepare) выберите пункт Панель инструментов ROS (ROS Toolbox) > Сеть ROS (ROS Network).
Установите идентификатор домена (ROS 2) сети ROS 2. В этом примере используется идентификатор домена 25.
На вкладке ROS в раскрывающемся списке Deploy (Развернуть) выберите Build & Run (Построить и выполнить). При обнаружении ошибок, связанных с несоответствием типов шин, закройте модель, очистите все переменные из базового рабочего пространства MATLAB и снова откройте модель. Щелкните ссылку Вид (View) Диагностика (Diagnostics) в нижней части панели инструментов модели, чтобы увидеть выходные данные процесса построения.
После завершения создания кода узел 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