ROS пользовательская поддержка сообщения

Пользовательский обзор сообщения

Пользовательские сообщения являются пользовательскими сообщениями, что можно использовать, чтобы расширить набор типов сообщений, в настоящее время поддержанных в Robotics System Toolbox™. Если вы отправляете и получаете поддерживаемые типы сообщений, вы не должны использовать пользовательские сообщения. Чтобы видеть список поддерживаемых типов сообщений, вызовите rosmsg list в Командном окне MATLAB®.

Чтобы установить пользовательскую поддержку сообщения, вызовите roboticsAddons и следуйте инструкциям для установки. Пользовательское создание сообщения требует пакетов ROS, которые детализированы в Wiki ROS в Пакетах. После обеспечения, что у вас есть допустимые пакеты ROS для пользовательских сообщений, вызовите rosgenmsg, чтобы сгенерировать необходимый код MATLAB, чтобы использовать пользовательские сообщения. Для примера о том, как сгенерировать ROS пользовательское сообщение в MATLAB, seeCreate Пользовательские сообщения от Пакета ROS.

Пользовательское содержимое сообщения

Пользовательские сообщения ROS заданы в папках пакета ROS, которые содержат файл package.xml и дополнительные директории msg и srv. Папка msg содержит все ваши пользовательские определения типа сообщения. Необходимо также добавить все определения типа службы поддержки папке srv. Например, пакет custom_robot_msgs имеет эту структуру папок и файловую структуру.

Пакет содержит один пользовательский тип сообщения в RobotTopic.msg и один тип службы поддержки в RobotService.srv. MATLAB использует эти файлы, чтобы сгенерировать необходимые файлы для использования пользовательских сообщений, содержавшихся в пакете. Для получения дополнительной информации о создании msg и файлов srv, смотрите Создание сообщения ROS и srv и Определения Пользовательских сообщений на Wiki ROS. Синтаксис этих файлов описан на страницах, характерных для msg и srv.

Во всех пакетах необходимо задать файл package.xml, который имеет следующее содержимое:

  • Имя — custom_robot_msgs

  • Версия — 1.1.01

  • Зависимость — message_generation

  • Другие зависимости от (дополнительных) пакетов сообщения — geometry_msgs, std_msgs

Вот демонстрационный файл package.xml с ранее показанным содержимым.

<package>
	<name>custom_robot_msgs</name>
	<version>1.1.01</version>
	
	<build_depend>message_generation</build_depend>
	<build_depend>geometry_msgs</build_depend>
	<build_depend>std_msgs</build_depend>
</package>			

Примечание

  • У вас должен быть доступ для записи к пользовательской папке сообщений.

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

  • Действия ROS в настоящее время не поддержаны и будут проигнорированы во время пользовательской генерации сообщения.

  • Пакеты ROS не будут обработаны, если оба из этих условий будут соблюдать:

    • Пакет с тем же именем уже существует

    • Номером версии которого существующий пакет является тем же самым

Именование свойства от полей сообщения

Когда определения сообщения ROS преобразованы в MATLAB, имена полей преобразованы в свойства для объекта сообщения. Свойства объектов всегда начинаются с прописной буквы и не содержат символы нижнего подчеркивания. Имена полей изменяются, чтобы соответствовать этому соглашению о присвоении имен. Первая буква и первая буква после символов нижнего подчеркивания использованы для своей выгоды с удаленными символами нижнего подчеркивания. Например, сообщение sensor_msgs/Image имеет эти поля в ROS:

header
height
width
encoding
is_bigendian
step
data

Конвертированные свойства MATLAB:

Header
Height
Width
Encoding
IsBigendian
Step
Data

Это также отражается при использовании сообщений ROS в Simulink®. Шины сообщения ROS используют те же имена свойств в качестве MATLAB.

Пользовательский рабочий процесс создания сообщения

Если у вас есть своя пользовательская структура сообщения, настроенная, как описано в предыдущем разделе, можно создать код, должен был использовать эти пользовательские сообщения. Во-первых, вы вызываете rosgenmsg со своим известным путем к пользовательским файлам сообщений, чтобы создать код MATLAB.

Затем два основных шага создания, которые обработаны функцией rosgenmsg. Эта функция берет ваши пользовательские файлы сообщений (.msg, .srv и package.xml) и преобразовывает каждый тип сообщения в рабочий код MATLAB. Функция rosgenmsg будет искать файлы .msg в папке msg и для файлов .srv в папке srv. Этот код является группой классов, которые задают свойства сообщения, когда вы создаете новые пользовательские сообщения. Основная процедура берет пользовательские файлы сообщений и преобразовывает их в файлы .jar и затем создает программу MATLAB для каждой темы и сервиса. Не изменяйте файлы .jar, потому что MATLAB использует их внутренне.

После того, как функция rosgenmsg создает эти файлы, необходимо добавить файлы в путь к классу Java и путь MATLAB, прежде чем можно будет использовать пользовательские сообщения. Эти шаги даны как подсказки в Окне Команды MATLAB:

  1. Добавьте местоположение файлов к javaclasspath.txt: Добавьте заданные пути как новые строки текста в файле javaclasspath.txt. Если этот файл не существует, сообщение в командном окне предлагает вам создавать его. Этот текстовый файл задает статический путь к классу для классов Java. Для получения дополнительной информации о пути к классу Java смотрите Путь к классу Java (MATLAB).

  2. Добавьте местоположение файлов класса к пути MATLAB: Используйте addpath, чтобы добавить новые местоположения файлов с расширением.m к пути MATLAB и использовать savepath, чтобы сохранить эти изменения.

  3. Перезапустите MATLAB и проверьте, что сообщения доступны: После перезапуска MATLAB вызовите rosmsg list или rosmessage, чтобы проверять, что можно использовать сообщения как ожидалось.

Для примера этой процедуры смотрите, Создают Пользовательские сообщения из Пакета ROS. Этот пример использует демонстрационные пользовательские файлы сообщений, чтобы создать пользовательские сообщения в MATLAB.

Необходимо завершить эту процедуру только однажды для определенного набора пользовательских сообщений. После этого можно использовать новые пользовательские сообщения как любое другое сообщение ROS в MATLAB и использовать в своих интересах полную функциональность ROS, которую обеспечивает Robotics System Toolbox. Повторите эту процедуру генерации, когда требуется обновить или создать новые типы сообщений.

Необходимо поддержать путь к классу Java и путь MATLAB, которые содержат директории файлов. Убедитесь, что путь MATLAB имеет только одну папку за один раз, которая содержит пользовательские артефакты сообщения. Кроме того, гарантируйте, что вы добавляете правильные пути к javaclasspath.txt, когда подсказка направляет. Не изменяйте путь. Этот файл используется, чтобы загрузить файлы Java в начале каждого сеанса работы с MATLAB.

Совместное использование пользовательских сообщений

После создания ваших пользовательских файлов сообщений можно совместно использовать их с другими пользователями. Другие люди не должны вызывать rosgenmsg, чтобы получить доступ к вашим сообщениям. Вместо этого чтобы совместно использовать ваши сообщения, получите доступ к папке _matlab_gen и выполните те же три шага для определения путей, как описано ранее. Если у вас есть доступ к этим файлам, или по сетевому или общему диску, добавьте путь к папке matlab_gen/jar к файлу javaclasspath.txt и путь matlab_gen/msggen к пути MATLAB. После перезапуска MATLAB другие пользователи могут использовать пользовательские сообщения как любое другое сообщение ROS.

Генерация кода с Пользовательскими сообщениями

Пользовательское сообщение и сервисные типы могут использоваться с блоками Simulink ROS для генерации Кода С++ для автономного узла ROS. Сгенерированный код (архив .tgz) будет включать определения Simulink для пользовательских сообщений, но это не будет включать ROS пользовательские пакеты сообщения. Когда сгенерированный код будет создан в целевой Системе Linux, он ожидает, что пользовательские пакеты сообщения будут доступны в рабочей области сережки или на ROS_PACKAGE_PATH. Гарантируйте, что вы или устанавливаете или копируете пользовательский пакет сообщения в свою систему Linux прежде, чем создать сгенерированный код.

Смотрите также

|

Похожие темы