mavlinksub

Получите сообщения MAVLink

Описание

Объект mavlinksub подписывается на темы от связанных клиентов MAVLink, использующих объект mavlinkio. Используйте объект mavlinksub получить последний раз полученные сообщения и вызвать функции, чтобы обработать недавно полученные сообщения.

Примечание

Этот объект требует, чтобы вы установили Библиотеку UAV для Robotics System Toolbox™. Чтобы установить дополнения, используйте roboticsAddons и выберите желаемое дополнение.

Создание

Синтаксис

sub = mavlinksub(mavlink)
sub = mavlinksub(mavlink,topic)
sub = mavlinksub(mavlink,client)
sub = mavlinksub(mavlink,client,topic)
sub = mavlinksub(___,Name,Value)

Описание

sub = mavlinksub(mavlink) подписывается на все темы от всех клиентов, соединенных через объект mavlinkio. Этот синтаксис устанавливает свойство Client на "Any".

sub = mavlinksub(mavlink,topic) подписывается на определенную тему, заданную как строка или целое число, от всех клиентов, соединенных через объект mavlinkio. Функция устанавливает вход topic на свойство Topic.

sub = mavlinksub(mavlink,client) подписывается на все темы от клиента, заданного как объект mavlinkclient. Функция устанавливает свойство Client на этот входной клиент.

пример

sub = mavlinksub(mavlink,client,topic) подписывается на определенную тему на определенном клиенте. Функция устанавливает свойства Client и Topic.

sub = mavlinksub(___,Name,Value) дополнительно задает свойства BuffferSize или NewMessageFcn с помощью пар "имя-значение" и предыдущих синтаксисов. Вход Name является одним из имен свойства.

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Свойства

развернуть все

Информация о клиенте полученного сообщения, заданного как объект mavlinkclient. Значение по умолчанию "Any" означает, что подписчик слушает все клиенты, соединенные через объект mavlinkio.

Название темы подписчик слушает, заданный как строка. Значение по умолчанию "Any" означает, что подписчик слушает все темы на клиенте.

Пример: "HEARTBEAT"

Типы данных: char | string

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

Типы данных: double

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

callback(sub,msg)
sub является структурой с полями для Client, Topic и свойств BufferSize объекта mavlinksub. msg является сообщением, полученным как структура с полями:

  • MsgID Положительное целое число для идентификатора сообщения.

  • SystemID – Системный ID клиента MAVLink, который отправил сообщение.

  • ComponentID – ID компонента клиента MAVLink, который отправил сообщение.

  • Payload – Структура, содержащая поля на основе определения сообщения.

  • Seq – Положительное целое число для последовательности сообщения.

Payload является структурой, заданной определением сообщения для диалекта MAVLink.

Типы данных: function_handle

Функции объекта

latestmsgsПолученные сообщения от подписчика MAVLink

Примеры

свернуть все

ПРИМЕЧАНИЕ: Этот пример требует, чтобы вы установили Библиотеку UAV для Robotics System Toolbox®. Вызовите roboticsAddons, чтобы открыть Проводник Дополнений и установить библиотеку.

Соединитесь с клиентом MAVLink.

mavlink = mavlinkio("common.xml")
mavlink = 
  mavlinkio with properties:

        Dialect: [1x1 mavlinkdialect]
    LocalClient: [1x1 struct]

connect(mavlink,"UDP")
ans = 
"Connection1"

Получите клиентскую информацию.

client = mavlinkclient(mavlink,1,1);

Подпишитесь на тему "HEARTBEAT".

heartbeat = mavlinksub(mavlink,client,'HEARTBEAT');

Получите последнее сообщение. Необходимо ожидать сообщения, которое будет получено. В настоящее время никакое сообщение heartbeat не было получено на объекте mavlink.

latestmsgs(heartbeat,1)
ans = 

  1x0 empty struct array with fields:

    MsgID
    SystemID
    ComponentID
    Payload
    Seq

Разъединитесь от клиента.

disconnect(mavlink)

Введенный в R2019a