exponenta event banner

mavlinkdialect

Анализ и хранение XML диалекта MAVLink

Описание

mavlinkdialect объект анализирует и сохраняет определения сообщений и перечислений, извлеченные из файла определения сообщений MAVLink (.xml). Файлы определения сообщений определяют сообщения, поддерживаемые для данного диалекта. Структура определений сообщений определяется протоколом сообщений MAVLink.

Создание

Описание

пример

dialect = mavlinkdialect("common.xml") создает диалект MAVLink с помощью common.xml для стандартных сообщений MAVLink.

dialect = mavlinkdialect(dialectXML) указывает XML-файл для синтаксического анализа определений сообщений. Входные значения устанавливают DialectXML собственность.

dialect = mavlinkdialect(dialectXML,version) дополнительно указывает версию протокола MAVLink. Входные данные устанавливают DialectXML и Version соответственно.

Свойства

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

Имя диалекта MAVLink, указанное как строка. Это имя основано на имени XML-файла.

Пример: "ardupilotmega"

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

Версия протокола MAVLink, указанная как 1 или 2.

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

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

createcmdСоздать сообщение команды MAVLink
createmsgСоздание сообщения MAVLink
deserializemsgДесериализация сообщения MAVLink из двоичного буфера
msginfoОпределение сообщения для идентификатора сообщения
enuminfoОпределение перечисления для идентификатора перечисления
enum2numЗначение перечисления для данной записи
num2enumЗапись перечисления для данного значения

Примеры

свернуть все

В этом примере показано, как анализировать XML-файл MAVLink и создавать сообщения и команды из определений.

ПРИМЕЧАНИе.В этом примере необходимо установить библиотеку БПЛА для системы робототехники Toolbox ®. ЗвонитьroboticsAddons для открытия проводника надстроек и установки библиотеки.

Разбор и хранение XML диалекта MAVLink. Укажите путь XML. Дефолт "common.xml" предусмотрен диалект. Этот XML-файл содержит все определения сообщений и перечислений.

dialect = mavlinkdialect("common.xml");

Создайте команду MAVLink из MAV_CMD enum, который является перечислением команд MAVLink для отправки в БПЛА. Укажите параметр как "int" или "long"и тип в виде целого числа или строки.

cmdMsg = createcmd(dialect,"long",22)
cmdMsg = struct with fields:
      MsgID: 76
    Payload: [1x1 struct]

Проверьте имя команды с помощью num2enum. Команда 22 является взлётной командой для БПЛА. Можно преобразовать обратно в идентификатор с помощью enum2num. Диалект может содержать множество различных перечислений с различными именами и идентификаторами.

cmdName = num2enum(dialect,"MAV_CMD",22)
cmdName = 
"MAV_CMD_NAV_TAKEOFF"
cmdID = enum2num(dialect,"MAV_CMD",cmdName)
cmdID = 22

Использовать enuminfo для просмотра таблицы MAV_CMD перечисление записей.

info = enuminfo(dialect,"MAV_CMD");
info.Entries{:}
ans=133×3 table
                    Name                     Value                                                                                                                                                                              Description                                                                                                                                                                          
    _____________________________________    _____    _______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

    "MAV_CMD_NAV_WAYPOINT"                    16      "Navigate to waypoint."                                                                                                                                                                                                                                                                                                                                        
    "MAV_CMD_NAV_LOITER_UNLIM"                17      "Loiter around this waypoint an unlimited amount of time"                                                                                                                                                                                                                                                                                                      
    "MAV_CMD_NAV_LOITER_TURNS"                18      "Loiter around this waypoint for X turns"                                                                                                                                                                                                                                                                                                                      
    "MAV_CMD_NAV_LOITER_TIME"                 19      "Loiter around this waypoint for X seconds"                                                                                                                                                                                                                                                                                                                    
    "MAV_CMD_NAV_RETURN_TO_LAUNCH"            20      "Return to launch location"                                                                                                                                                                                                                                                                                                                                    
    "MAV_CMD_NAV_LAND"                        21      "Land at location"                                                                                                                                                                                                                                                                                                                                             
    "MAV_CMD_NAV_TAKEOFF"                     22      "Takeoff from ground / hand"                                                                                                                                                                                                                                                                                                                                   
    "MAV_CMD_NAV_LAND_LOCAL"                  23      "Land at local position (local frame only)"                                                                                                                                                                                                                                                                                                                    
    "MAV_CMD_NAV_TAKEOFF_LOCAL"               24      "Takeoff from local position (local frame only)"                                                                                                                                                                                                                                                                                                               
    "MAV_CMD_NAV_FOLLOW"                      25      "Vehicle following, i.e. this waypoint represents the position of a moving vehicle"                                                                                                                                                                                                                                                                            
    "MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT"     30      "Continue on the current course and climb/descend to specified altitude. When the altitude is reached continue to the next command (i.e., don't proceed to the next command until the desired altitude is reached."                                                                                                                                            
    "MAV_CMD_NAV_LOITER_TO_ALT"               31      "Begin loiter at the specified Latitude and Longitude. If Lat=Lon=0, then loiter at the current position. Don't consider the navigation command complete (don't leave loiter) until the altitude has been reached. Additionally, if the Heading Required parameter is non-zero the aircraft will not leave the loiter until heading toward the next waypoint. "
    "MAV_CMD_DO_FOLLOW"                       32      "Being following a target"                                                                                                                                                                                                                                                                                                                                     
    "MAV_CMD_DO_FOLLOW_REPOSITION"            33      "Reposition the MAV after a follow target command has been sent"                                                                                                                                                                                                                                                                                               
    "MAV_CMD_DO_ORBIT"                        34      "Start orbiting on the circumference of a circle defined by the parameters. Setting any value NaN results in using defaults."                                                                                                                                                                                                                                  
    "MAV_CMD_NAV_ROI"                         80      "Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras."                                                                                                                                          
      ⋮

Запросите у диалекта определенный идентификатор сообщения. Создайте пустое сообщение MAVLink с использованием идентификатора сообщения.

info = msginfo(dialect,"HEARTBEAT")
info=1×4 table
    MessageID    MessageName                                                                                                                                Description                                                                                                                                  Fields   
    _________    ___________    ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________    ___________

        0        "HEARTBEAT"    "The heartbeat message shows that a system is present and responding. The type of the MAV and Autopilot hardware allow the receiving system to treat further messages from this system appropriate (e.g. by laying out the user interface based on the autopilot)."    {6x6 table}

msg = createmsg(dialect,info.MessageID);
Представлен в R2019a