В этом примере показано, как сгенерировать и создать автономный узел ROS 2 из модели Simulink ®. Вы конфигурируете модель, чтобы сгенерировать код С++ для автономного узла ROS 2. Затем создайте и запустите узел ROS 2 на вашем хосте-компьютере .
Этот пример требует Simulink Coder™ и Embedded Coder™.
Загрузите виртуальную машину с помощью инструкции в Запуск с Gazebo и Моделируемый TurtleBot.
Рассмотрим пример управления обратной связью робота с поддержкой ROS Over ROS 2.
Смотрите Отказ сборки модели ROS 2 в поддержке и ограничениях ROS Simulink.
Чтобы убедиться, что у вас есть соответствующее программное обеспечение сторонних производителей, смотрите Системные требования ROS.
Сконфигурируйте модель, чтобы сгенерировать код С++ для автономного узла 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.
Нажмите кнопку ОК.
В этой задаче вы генерируете код для автономного узла 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