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

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

Предпосылки

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

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

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

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

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

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

edit robotROSFeedbackControlExample

Скопируйте целую модель в новую пустую модель Simulink. В меню Нажмите Edit> Select All, затем Edit> Copy.

Откройте новую модель Simulink. В меню Нажмите Edit> Paste.

Удалите Блок управления Уровня Симуляции.

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

В панели 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, и Fixed-step size установлен в 0.05. В сгенерированном коде размер фиксированного шага задает фактический временной шаг, который используется для образцового цикла обновления. Смотрите Подписание Кода, Сгенерированного из Модели (Simulink Coder) для получения дополнительной информации.

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

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

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

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

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

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

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

В типе окна команды MATLAB:

rosinit

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

В Simulink нажмите Code> C/C++ Code> Deploy to Hardware или нажмите 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® следующий шаг принимает, что клиент (pcsp.exe) PuTTY SCP установлен.

Используйте 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>

Сгенерированный исходный код находится под ~/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 

Похожие темы