主要内容

可视化和播放Mavlink Flight Log

此示例显示如何将包含Mavlink数据包的遥测日志(TLOG)加载到MATLAB®中。提取消息的详细信息以进行绘图。然后,要再次模拟飞行,这些消息在Mavlink通信接口上发布。该出版物模仿一个无人驾驶的空中车辆(UAV)执行在TLOG中记录的飞行。

加载mavlink tlog.

创建一个mavlinkdialect.对象使用“common.xml”方言。用mavlinktlog.使用此方言加载TLOG数据。

dialect = mavlinkdialect('common.xml');logimport = mavlinktlog('mavlink_flightlog.tlog',方言);

从TLOG中提取GPS消息并使用它们可视化地球格林

msgs = ReadMsg(Logimport,'messagename''gps_raw_int'......'时间',[0 100]);latlon = msgs.messages {1};%过滤掉零值的消息latlon = latlon(latlon.lat〜= 0&latlon.lon〜= 0,:);图()Geoplot(Double(Latlon.lat)/ 1E7,Double(Latlon.lon)/ 1E7);

图包含轴对象。轴对象包含类型线的对象。

从TLOG中提取态度消息。指定态度消息的消息名称。使用辊子,俯仰,偏航数据stackedplot.

msgs = ReadMsg(Logimport,'messagename''态度''时间',[0 100]);图()stackedplot(msgs.messages {1},{'卷''沥青''偏航'});

图包含类型StackEdplot的对象。

播放Mavlink日志条目

创建Mavlink通信接口,并将来自TLOG的消息发布到用户定义的UDP端口。为传递MAVLINK消息创建一个发件人和接收器。该通信系统的工作方式与真正的硬件将使用Mavlink通信协议发布消息。

Sender = Mavlinkio(方言,'systemid',1,'componentId',1,......'autopilottype'“mav_autopilot_generic”......'componentype'“mav_type_quadrotor”);连接(发件人,'UDP');DestinationPort = 14550;destinationhost =.'127.0.0.1';Receiver = Mavlinkio(方言);连接(接收器,'UDP''localport',目的端口);订阅者= mavlinksub(接收器,'态度''newmessagefcn',@(〜,msg)disp(msg.payload));

以50 Hz的速率发送前100条消息。

payloads = table2struct(msgs.messages {1});attitudedefinition = msginfo(方言,'态度');为了msgdx = 1:100 sendudpmsg(发件人,struct('msgid',attitudedefinition.messageid,'有效载荷',有效载荷(msgdx)),destinationhost,destinatialport);暂停(1/50);结尾

断开Mavlink通信接口的连接。

断开(接收器)断开连接(发件人)