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

®

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

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

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

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

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

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

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

  • На панели Solver убедитесь, что для параметра Solver Type задано значение Fixed-step, и установите для параметра Fixed-step значение 0.05. В сгенерированном коде размер Fixed-step определяет фактический временной шаг, в секундах, который используется для цикла обновления модели (см. Выполнение кода, сгенерированного из модели (Simulink Coder)). Он может быть сделан меньшим (например, 0,001 или 0,0001), но для текущих целей достаточно 0,05.

  • Нажмите кнопку ОК.

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

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

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

  • На вкладке Simulation, в разделе Prepare, выберите ROS Toolbox > ROS Network.

  • Установите идентификатор области (ROS 2) сети ROS 2. Этот пример использует идентификатор области как 25.

  • На вкладке ROS в выпадающем списке Deploy section нажмите 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