exponenta event banner

Создание кода для развертывания узла ROS вручную из Simulink

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

Предпосылки

Настройка модели для создания кода

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

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

edit robotROSFeedbackControlExample

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

Удалите блок управления скоростью моделирования.

На вкладке Приложения в разделе Системы управления щелкните Операционная система робота (ROS).

В открывшемся диалоговом окне ROS выберите Robot Operating System (ROS) из раскрывающегося списка Сеть ROS. Откроется вкладка ROS на панели инструментов, на которой отображается указанная сеть ROS в разделе Connect.

В разделе Подготовка (Prepare) на вкладке АФК (ROS) щелкните Настройки оборудования (Hardware Settings), чтобы открыть диалоговое окно параметров конфигурации модели.

Раздел Hardware board settings содержит настройки, относящиеся к сгенерированному пакету ROS, например, информацию, включенную в package.xml файл. Изменить имя сопровождающего на ROS Example User и нажмите кнопку ОК.

На панели «Решатель» диалогового окна «Параметры конфигурации» убедитесь, что для параметра «Тип» задано значение Fixed-step, для решателя установлено значение ode3 (Bogacki-Shampine)а для параметра Фиксированный размер шага (Fixed-step size) установлено значение 0.05. В сгенерированном коде фиксированный размер шага определяет фактический временной шаг, который используется для цикла обновления модели. Дополнительные сведения см. в разделе Выполнение кода, созданного на основе модели (Simulink Coder).

На панели «Создание кода» убедитесь, что включены сигналы переменного размера.

Нажмите кнопку «ОК», чтобы закрыть диалоговое окно «Параметры конфигурации». Сохранить модель как RobotController.slx.

Настройка параметров построения для создания кода

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

Щелкните Развернуть на вкладке ROS. Затем в разделе Deployment (Развертывание) щелкните Build Model.Этот параметр обеспечивает создание кода для узла ROS без создания его на внешнем устройстве ROS.

Создание и развертывание кода

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

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

rosinit

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

На вкладке Код C (C Code) щелкните Создать код (Generate Code) или нажмите клавишу Ctrl+B для начала создания кода для модели.

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

  • RobotController.tgz-- Архив, содержащий код C++

  • build_ros_model.sh - Сценарий оболочки для извлечения и построения кода C++

Вручную перенесите эти два файла на конечный компьютер. При подключении к устройству ROS с помощью rosdevice, вы можете отправить файлы с помощью putFile. В противном случае предполагается, что вы используете виртуальную машину Linux, используемую для примеров Toolbox™ Robotics System. Виртуальная машина настроена на прием соединений SSH и SCP. Если вы используете собственную систему 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 выполните следующие команды для создания рабочей области Catkin. Можно использовать существующую рабочую область Catkin.

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

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

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> с путем к вашему рабочему пространству catkin.

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

Связанные темы