Сгенерируйте код, чтобы вручную развернуть узел ROS от Simulink

Этот пример показывает вам, как сгенерировать Код С++ из модели Simulink®, чтобы развернуться как автономный узел ROS. Код сгенерирован на вашем компьютере и должен быть вручную передан целевому устройству ROS. Никакая связь с оборудованием не необходима для сгенерированного код. Для автоматизированного развертывания узла ROS смотрите, Генерируют Автономный Узел ROS от Simulink®.

Предпосылки

  • Этот пример требует Simulink Coder™ и Embedded Coder™.

  • Система Linux Ubuntu с ROS необходима для создания и выполнения сгенерированного Кода С++. Можно использовать собственный Ubuntu система ROS, или можно использовать виртуальную машину Linux, используемую в примерах ROS Toolbox™. Смотрите Начало работы с Gazebo и Симулированным TurtleBot для получения инструкций относительно того, как установить и использовать виртуальную машину.

  • Рассмотрите Управление с обратной связью поддерживающего ROS примера Робота, который подробно излагает модель Simulink, от которой генерируется код.

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

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

Откройте пропорциональные модели контроллеров.

edit robotROSFeedbackControlExample

Скопируйте целую модель в новую пустую модель Simulink.

Удалите блок Simulation Rate Control.

Откройте диалоговое окно Configuration Parameters. Под вкладкой Simulation нажмите Model Settings.

В панели Hardware Implementation, набор Hardware board к Robot Operating System (ROS).

Раздел Hardware board settings содержит настройки, характерные для сгенерированного пакета ROS, такие как информация, включенная в package.xml файл. Измените Maintainer name в ROS Example User и нажмите OK.

В панели Solver диалогового окна Configuration Parameters гарантируйте, что Type установлен в Fixed-step, Solver установлен в ode3 (Bogacki-Shampine)и Fixed-step size установлен в 0.05. В сгенерированном коде размер фиксированного шага задает фактический временной шаг, который используется в цикле обновления модели. Смотрите Подписание Кода, Сгенерированного из Модели (Simulink Coder) для получения дополнительной информации.

В панели Code Generation гарантируйте, что variable-size signals включен.

Нажмите OK, чтобы закрыть диалоговое окно Configuration Parameters. Сохраните модель как RobotController.slx.

Сконфигурируйте опции сборки для генерации кода

После конфигурирования модели необходимо задать опции сборки для целевого компьютера и установить папку или создание сгенерированного кода.

Откройте диалоговое окно Configuration Parameters. Под вкладкой Simulation нажмите Model Settings.

Во вкладке Hardware Implementation, под Target hardware resources, кликают по группе Build options. Установите Build action на None. Эта установка гарантирует, что код сгенерировал для узла ROS, не создавая ее на внешнем устройстве ROS.

Сгенерируйте и разверните код

Запустите ведущее устройство ROS в MATLAB®. Это ведущее устройство ROS используется Simulink в шагах генерации кода.

В Командном Окне MATLAB введите:

rosinit

Установите текущую папку на перезаписываемую директорию. Эта папка является местоположением, которые генерируют код, будет храниться, когда вы создаете модель.

Под вкладкой C Code нажмите Generate Code или нажмите Ctrl+B запустить генерацию кода для модели.

Если сборка завершается, два новых файла записаны в вашу папку.

  • RobotController.tgz– Архив, содержащий Код С++

  • build_ros_model.sh – Сценарий оболочки для извлечения и создания Кода С++

Вручную передайте эти два файла целевой машине. Если вы связываете с устройством ROS с помощью rosdevice, можно отправить файлы с помощью putFile. В противном случае этот шаг принимает, что вы используете виртуальную машину Linux, используемую в примерах Robotics System Toolbox™. Виртуальная машина сконфигурирована, чтобы принять связи SCP и SSH. Если вы используете свою собственную систему Linux, консультируйтесь со своим системным администратором для безопасного способа передать файлы.

Обеспечьте свою хост-систему (система с вашим RobotController.tgz и build_ros_model.sh файлы), имеет клиент SCP. Для систем Windows® следующий шаг принимает тот клиент PuTTY SCP (pcsp.exe) установлен.

Используйте SCP, чтобы передать файлы пользователю, домашнему директор на виртуальной машине Linux. Именем пользователя является user и паролем является password. Замените <virtual_machine_ip> с вашим IP-адресом виртуальных машин.

  • Хост-системы Windows:

    pscp.exe RobotController.tgz build_ros_model.sh user@<virtual_machine_ip>:
  • Linux или macOS хост-системы:

    scp RobotController.tgz build_ros_model.sh user@<virtual_machine_ip>:

build_ros_model.sh файл не характерен для этой модели. Это только должно быть передано однажды для многоуровневых моделей.

В системе Linux выполните следующие команды, чтобы создать рабочую область Сережки. Можно использовать существующую рабочую область Сережки.

mkdir -p ~/catkin_ws_simulink/src
cd ~/catkin_ws_simulink/src
catkin_init_workspace

Распакуйте и создайте узел там с помощью следующей команды в Linux. Замените <path_to_catkin_ws> с путем к вашей рабочей области сережки.

cd ~
./build_ros_model.sh RobotController.tgz <path_to_catkin_ws>

Если это не работает, гарантирует тот build_ros_model.sh настраивается как исполняемый файл путем ввода следующей команды.

chmod +x build_ros_model.sh

Сгенерированный исходный код находится под ~/catkin_ws_simulink/src/robotcontroller/. Рассмотрите содержимое package.xml файл. Проверьте, что исполняемый файл узла был создан с помощью:

file ~/catkin_ws_simulink/devel/lib/robotcontroller/robotcontroller_node

Если исполняемый файл был создан успешно, информация о списках команд о файле.

Модель теперь готова быть запущенной как автономный узел ROS на вашем устройстве.

Дополнительный: можно затем запустить узел с помощью этой команды. Замените <path_to_catkin_ws> с путем к вашей рабочей области сережки.

~/<path_to_catkin_workspace>/devel/lib/robotcontroller/robotcontroller_node 

Похожие темы