Пользовательские сообщения являются пользовательскими сообщениями, что можно использовать, чтобы расширить набор типов сообщений, в настоящее время поддержанных в ROS Toolbox. Если вы отправляете и получаете поддерживаемые типы сообщений, вы не должны использовать пользовательские сообщения. Чтобы видеть список поддерживаемых типов сообщений, вызовите rosmsg list
в командном окне MATLAB®.
Чтобы установить пользовательскую поддержку сообщения, вызовите rosAddons
и следуйте инструкциям в для установки в Интерфейсе ROS Toolbox для ROS Пользовательские сообщения. Пользовательское создание сообщения требует пакетов ROS, которые детализированы в Wiki ROS в Пакетах. После обеспечения, что у вас есть допустимые пакеты ROS для пользовательских сообщений, вызовите rosgenmsg
с путем к файлу к вашему пользовательскому пакету сообщения, чтобы сгенерировать необходимый код MATLAB, чтобы использовать пользовательские сообщения. Для примера о том, как сгенерировать ROS пользовательское сообщение в MATLAB, смотрите, Создают Пользовательские сообщения из Пакета 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:
Добавьте местоположение файлов к javaclasspath.txt
: Добавьте заданные пути как новые строки текста в javaclasspath.txt
файл. Если этот файл не существует, сообщение в командном окне предлагает вам создавать его. Этот текстовый файл задает статический путь к классу для классов Java. Для получения дополнительной информации о пути к классу Java смотрите Путь к классу Java (MATLAB).
Добавьте местоположение файлов класса к пути MATLAB: Используйте addpath
добавить новые местоположения файлов с расширением.m к пути MATLAB и использовать savepath
сохранить эти изменения.
Перезапустите MATLAB и проверьте, что сообщения доступны: После перезапуска MATLAB вызовите rosmsg
list
или rosmessage
проверять, что можно использовать сообщения как ожидалось.
Для примера этой процедуры смотрите, Создают Пользовательские сообщения из Пакета ROS. Этот пример использует демонстрационные пользовательские файлы сообщений, чтобы создать пользовательские сообщения в MATLAB.
Необходимо завершить эту процедуру только однажды для определенного набора пользовательских сообщений. После этого можно использовать новые пользовательские сообщения как любое другое сообщение ROS в MATLAB и использовать в своих интересах полную функциональность ROS, которую обеспечивает ROS 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 прежде, чем создать сгенерированный код.
ros2genmsg
| rosAddons
| rosgenmsg