主要内容

使用Simulink为MAVLink微服务交换数据,如任务协议和参数协议金宝app

这个例子展示了如何实现MAVLink微服务任务的协议参数协议使用Simulink®中的MAVLink序列化和反序列化块。金宝app

这个示例使用:

  • MATLAB®

  • 金宝app仿真软件®

  • 无人机工具箱™

  • Stateflow™

  • 仪器控制工具箱™

  • DSP系统工具箱™

MAVLink中的任务协议微服务允许地面控制站(GCS)与无人机通信,发送和接收执行任务所需的任务信息。Mission协议微服务允许您:

  • 从GCS向无人机上传任务

  • 从无人机上下载任务

  • 设置当前任务项

MAVLink中的参数协议微服务允许你在无人机和GCS之间交换代表重要配置信息的参数。参数表示为键-值对。

这个例子解释了如何:

  • 上传一个由10个航路点组成的任务,从GCS到一架在Simulink中模拟的无人机。金宝app使用QGroundControl (QGC)gc。如果主机上没有安装QGC,请从在这里

  • 从QGC和无人机读取和写入28个参数列表的数据。

设计模型

开始时,请遵循以下步骤:

1.打开exampleHelperMAVLinkMissionAndParamProtocol文件在MATLAB中点击运行.这将创建在Simulink中初始化数据所需的工作空间变量,并将自动驾驶仪参数上传到QGC。金宝app

2.在Simulink中单击启动示例模型金宝app开放模式在这一页的顶部。还可以在单击之后使用以下命令启动模型开放模式按钮:

open_system (“MissionAndParameterProtocolUsingMAVLink.slx”);

Simu金宝applink模型包括:

1.模型设置:模型中的这个区域由两个子系统块组成——初始化函数和全局数据存储。这些块用于从基本工作区中生成的信号初始化将在模型中使用的数据。

2.协议的处方:模型中的区域由receive_udp用于接收来自QGC的UDP数据的子系统块。该子系统包含一个Simulink函数,在每个仿真步金宝app骤中,通过UDP从QGC读取MAVLink数据。接收到的MAVLink数据被传递到Stateflow图进行解码和解析。

3.任务的协议:模型中的这个区域由两个子系统块组成,它们向QGC发送任务请求和任务确认。这些函数是从实现任务微服务的statflow图中调用的。

4.任务和参数协议:在模型中实现任务和参数逻辑的状态流图。

接收到的MAVLink数据在process_udp金宝appSimulink函数,然后传递给statflow逻辑,该逻辑执行四个任务:

一个。ReceivingMission:这个状态流子图接收来自QGC的任务,并解码任务中的路点。它实现了Mission微服务协议,该协议将一个任务从QGC上传到无人机,如所述上传一个任务到飞行器

b。SendingParams:这个statflow子图按照参数协议将在基本工作区中创建的参数上传到QGC,如阅读所有参数

c。SendSingleParams:这个statflow子图定义了如何从无人机向QGC发送单个参数,如读单参数

d。WriteSingleParam:这个statflow子图定义了如何从QGC更新参数值,并在无人机上看到它们,如写参数

5.读取接收路径点和参数的逻辑: statflow实现两种协议,输出接收到的路点和上传的参数值。

下一节解释如何从QGC上传任务到无人机。

从QGC上传一个任务到无人机并运行Simulink模型金宝app

1.启动QGC并导航到平面图

2.一个预先计划的任务,MissionProtocol.plan,可与本例一起使用。点击开放模式将计划文件保存到您的计算机上。保存.plan文件后,启动QGC,然后单击文件>开放将计划上传到QGC。

上传计划后,任务在QGC中可见。

3.运行Simuli金宝appnk模型。Simu金宝applink模型通过MAVLink向QGC发送HEARTBEAT消息,从而与QGC建立连接。

4.点击上传在QGC界面右上方,从QGroundControl上传任务。

5.观察上传任务的前两个航路点的纬度和经度值正在Simulink中显示。金宝app

6.通过将waypoint1和waypoint2拖拽到平面图的不同位置来改变QGC中的waypoint1和waypoint2。点击上传修改后的任务上传要求

7.观察在Simulink中修改的路点1和2的纬度/经度值。金宝app

修改QGC中的参数并发送到Simulink金宝app

当你运行exampleHelperMAVLinkMissionAndParamProtocol文件在MATLAB命令窗口,一个工作空间变量apParams创建,它是一个包含28个飞行参数的数组。

当运行Simulink模型时,它连金宝app接到QGC, QGC从Simulink中读取参数。

参数可在QGC中可视化和修改:

1.导航到车辆设置面板中。选择参数选项卡。

2.在参数选项卡上,选择其他列出QGC从Simulink中读取的所有参数。金宝app

3.模型显示GDNC_TSTAR和GDNC_TURN_LEAD参数的值。单击GDNC_TSTAR和GDNC_TURN_LEAD参数,并在QGC中修改它们对应的值。

4.QGC使用参数协议微服务将这些修改后的参数值写入Simulink。金宝app观察在Simulink中修改的参数值。金宝app

其他可以尝试的事情

本例中解释的状态流图没有实现以下场景:

  • 如果无人机与QGC之间的通信在某一时刻中断并重新连接,任务协议上传应在无人机断开连接前已传输数据的航路点之后继续。

您可以修改Stateflow图表,这样即使通信中断时,Stateflow也能记住最后传输的路径点。