加载和播放MAVLink TLOG

此示例示出了如何加载包含MAVLink包进入MATLAB®遥测日志(TLOG)。消息的详细信息被提取用于绘图。然后,再次模拟飞行,该消息被转载在MAVLink通信接口。此发布模仿无人驾驶飞行器(UAV)执行记录在TLOG飞行。

加载MAVLink TLOG

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

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

摘自TLOG的GPS信息,并利用这些可视化geoplot

封邮件= readmsg(logimport,'MessageName''GPS_RAW_INT');latlon = msgs.Messages {1};%滤除的零值的消息latlon = latlon(latlon.lat〜= 0&latlon.lon〜= 0,:);geoplot(双(latlon.lat)/ 1E7,双(latlon.lon)/ 1E7);

摘自TLOG态度的消息。指定的姿态消息的消息名称。使用绘制侧倾,俯仰,偏航数据stackedplot

封邮件= readmsg(logimport,'MessageName''态度''时间',[0 100]);图stackedplot(msgs.Messages {1},{'滚''沥青''偏航'});

播放MAVLink日志条目

创建MAVLink通信接口和从所述TLOG发布消息,以用户定义的UDP端口。创建用于使MAVLink消息的发送者和接收者。该通信系统的工作方式相同,真正的硬件会使用MAVLink通信协议发布消息。

发件人= mavlinkio(方言,'SYSTEMID'1,'的ComponentID'1,...'AutopilotType'“MAV_AUTOPILOT_GENERIC”...'COMPONENTTYPE'“MAV_TYPE_QUADROTOR”);连接(发件人,'UDP');destinationPort = 14550;destinationHost ='127.0.0.1';接收机= mavlinkio(方言);连接(接收器,'UDP'“本地端口”,目的端口);订户= mavlinksub(接收器,'态度''NewMessageFcn',@(〜,MSG)DISP(msg.Payload));

发送第一消息100在50赫兹使用一个速率robotics.Rate宾语。

有效载荷= table2struct(msgs.Messages {1});attitudeDefinition = msginfo(方言,'态度');R = robotics.Rate(50);对于msgIdx = 1:100 sendudpmsg(发件人,结构('的MsgID',attitudeDefinition.MessageID,“有效载荷”,有效载荷(msgIdx)),destinationHost,destinationPort);WAITFOR(R);结束

来自MAVLink通信电子接口断开。

断开(接收器)断开(发送方)